{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://schema.3sixty.global/w3c-dcat/DcatResourceBase",
	"title": "DcatResourceBase",
	"description": "Base interface for DCAT catalogued resources without JSON-LD context.\nThis is the context-free variant of IDcatResource, intended for embedding\nresources inline within other objects where the context is provided by the enclosing document.",
	"type": "object",
	"properties": {
		"@type": {
			"anyOf": [
				{
					"const": "dcat:Resource"
				},
				{
					"const": "dcat:Dataset"
				},
				{
					"const": "dcat:DataService"
				},
				{
					"const": "dcat:Catalog"
				},
				{
					"const": "dcat:DatasetSeries"
				}
			],
			"description": "The type of the resource.\nTypically \"Catalog\", \"Dataset\", \"DataService\", \"DatasetSeries\", or the base \"Resource\"."
		},
		"@id": {
			"type": "string",
			"description": "The unique identifier for the resource."
		},
		"dcterms:title": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			],
			"description": "A name given to the resource."
		},
		"dcterms:description": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			],
			"description": "A free-text account of the resource."
		},
		"dcterms:identifier": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			],
			"description": "A unique identifier of the resource."
		},
		"dcterms:issued": {
			"type": "string",
			"description": "Date of formal issuance (publication) of the resource.",
			"format": "date-time"
		},
		"dcterms:modified": {
			"type": "string",
			"description": "Most recent date on which the resource was changed, updated or modified.",
			"format": "date-time"
		},
		"dcterms:language": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			],
			"description": "A language of the resource."
		},
		"dcterms:publisher": {
			"anyOf": [
				{
					"description": "A FOAF Agent.",
					"type": "object",
					"properties": {
						"@context": {
							"$ref": "https://schema.3sixty.global/foaf/FoafContextType",
							"description": "The LD Context.",
							"$comment": "Inherited from FoafAgent"
						},
						"@id": {
							"type": "string",
							"description": "The unique identifier for the FOAF object.",
							"$comment": "Inherited from FoafBaseObject"
						},
						"foaf:name": {
							"type": "string",
							"description": "A name for some thing.",
							"$comment": "Inherited from FoafBaseObject"
						},
						"foaf:title": {
							"type": "string",
							"description": "Title (Mr, Mrs, Ms, Dr. etc)",
							"$comment": "Inherited from FoafBaseObject"
						},
						"foaf:mbox": {
							"type": "string",
							"description": "A personal mailbox, ie. an Internet mailbox associated with exactly one owner, the first owner of this mailbox",
							"$comment": "Inherited from FoafBaseObject"
						},
						"foaf:homepage": {
							"type": "string",
							"description": "A homepage for some thing.",
							"$comment": "Inherited from FoafBaseObject"
						},
						"foaf:depiction": {
							"$ref": "https://schema.3sixty.global/foaf/FoafImage",
							"description": "A depiction of some thing.",
							"$comment": "Inherited from FoafBaseObject"
						},
						"@type": {
							"anyOf": [
								{
									"const": "Agent"
								},
								{
									"const": "Person"
								},
								{
									"const": "Organization"
								},
								{
									"const": "Group"
								},
								{
									"type": "string"
								}
							],
							"description": "Type.",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:age": {
							"type": "number",
							"description": "The age in years of some agent.",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:made": {
							"anyOf": [
								{
									"$ref": "https://schema.3sixty.global/json-ld/JsonLdNodeObject"
								},
								{
									"type": "array",
									"items": {
										"$ref": "https://schema.3sixty.global/json-ld/JsonLdNodeObject"
									}
								}
							],
							"description": "Something that was made by this agent.",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:weblog": {
							"$ref": "https://schema.3sixty.global/foaf/FoafDocument",
							"description": "A weblog of some thing (whether person, group, company etc.).",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:openid": {
							"$ref": "https://schema.3sixty.global/foaf/FoafDocument",
							"description": "An OpenID for an agent.",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:interest": {
							"$ref": "https://schema.3sixty.global/foaf/FoafDocument",
							"description": "A page about a topic of interest to this person.",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:topic_interest": {
							"$ref": "https://schema.3sixty.global/json-ld/JsonLdNodeObject",
							"description": "A thing of interest to this person.",
							"$comment": "Inherited from FoafAgent"
						}
					},
					"required": ["@type"],
					"$comment": "Inlined utility base type FoafAgent so utility transformations can operate on concrete properties instead of a $ref."
				},
				{
					"type": "string"
				}
			],
			"description": "An entity responsible for making the resource available."
		},
		"dcterms:creator": {
			"anyOf": [
				{
					"description": "A FOAF Agent.",
					"type": "object",
					"properties": {
						"@context": {
							"$ref": "https://schema.3sixty.global/foaf/FoafContextType",
							"description": "The LD Context.",
							"$comment": "Inherited from FoafAgent"
						},
						"@id": {
							"type": "string",
							"description": "The unique identifier for the FOAF object.",
							"$comment": "Inherited from FoafBaseObject"
						},
						"foaf:name": {
							"type": "string",
							"description": "A name for some thing.",
							"$comment": "Inherited from FoafBaseObject"
						},
						"foaf:title": {
							"type": "string",
							"description": "Title (Mr, Mrs, Ms, Dr. etc)",
							"$comment": "Inherited from FoafBaseObject"
						},
						"foaf:mbox": {
							"type": "string",
							"description": "A personal mailbox, ie. an Internet mailbox associated with exactly one owner, the first owner of this mailbox",
							"$comment": "Inherited from FoafBaseObject"
						},
						"foaf:homepage": {
							"type": "string",
							"description": "A homepage for some thing.",
							"$comment": "Inherited from FoafBaseObject"
						},
						"foaf:depiction": {
							"$ref": "https://schema.3sixty.global/foaf/FoafImage",
							"description": "A depiction of some thing.",
							"$comment": "Inherited from FoafBaseObject"
						},
						"@type": {
							"anyOf": [
								{
									"const": "Agent"
								},
								{
									"const": "Person"
								},
								{
									"const": "Organization"
								},
								{
									"const": "Group"
								},
								{
									"type": "string"
								}
							],
							"description": "Type.",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:age": {
							"type": "number",
							"description": "The age in years of some agent.",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:made": {
							"anyOf": [
								{
									"$ref": "https://schema.3sixty.global/json-ld/JsonLdNodeObject"
								},
								{
									"type": "array",
									"items": {
										"$ref": "https://schema.3sixty.global/json-ld/JsonLdNodeObject"
									}
								}
							],
							"description": "Something that was made by this agent.",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:weblog": {
							"$ref": "https://schema.3sixty.global/foaf/FoafDocument",
							"description": "A weblog of some thing (whether person, group, company etc.).",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:openid": {
							"$ref": "https://schema.3sixty.global/foaf/FoafDocument",
							"description": "An OpenID for an agent.",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:interest": {
							"$ref": "https://schema.3sixty.global/foaf/FoafDocument",
							"description": "A page about a topic of interest to this person.",
							"$comment": "Inherited from FoafAgent"
						},
						"foaf:topic_interest": {
							"$ref": "https://schema.3sixty.global/json-ld/JsonLdNodeObject",
							"description": "A thing of interest to this person.",
							"$comment": "Inherited from FoafAgent"
						}
					},
					"required": ["@type"],
					"$comment": "Inlined utility base type FoafAgent so utility transformations can operate on concrete properties instead of a $ref."
				},
				{
					"type": "string"
				}
			],
			"description": "An entity responsible for producing the resource."
		},
		"dcterms:accessRights": {
			"anyOf": [
				{
					"$ref": "https://schema.3sixty.global/json-ld/JsonLdNodeObject"
				},
				{
					"type": "string"
				}
			],
			"description": "Information about who can access the resource or an indication of its security status."
		},
		"dcterms:license": {
			"anyOf": [
				{
					"$ref": "https://schema.3sixty.global/json-ld/JsonLdNodeObject"
				},
				{
					"type": "string"
				}
			],
			"description": "A legal document under which the resource is made available."
		},
		"dcterms:rights": {
			"anyOf": [
				{
					"$ref": "https://schema.3sixty.global/json-ld/JsonLdNodeObject"
				},
				{
					"type": "string"
				}
			],
			"description": "Information about rights held in and over the resource."
		},
		"dcterms:conformsTo": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			],
			"description": "An established standard to which the resource conforms."
		},
		"dcterms:type": {
			"type": "string",
			"description": "The nature or genre of the resource."
		},
		"dcat:contactPoint": {
			"anyOf": [
				{
					"$ref": "https://schema.3sixty.global/json-ld/JsonLdNodeObject"
				},
				{
					"type": "string"
				}
			],
			"description": "Relevant contact information for the catalogued resource."
		},
		"dcat:keyword": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			],
			"description": "A keyword or tag describing the resource."
		},
		"dcat:theme": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			],
			"description": "A main category of the resource. A resource can have multiple themes."
		},
		"dcat:landingPage": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			],
			"description": "A Web page that can be navigated to gain access to the resource."
		},
		"dcat:qualifiedRelation": {
			"anyOf": [
				{
					"$ref": "https://schema.3sixty.global/w3c-dcat/DcatRelationship"
				},
				{
					"type": "string"
				}
			],
			"description": "Link to a description of a relationship with another resource."
		},
		"odrl:hasPolicy": {
			"description": "An ODRL conformant policy expressing the rights associated with the resource.",
			"type": "object",
			"properties": {
				"@type": {
					"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlPolicyType",
					"description": "The type of policy.\nMust be one of: \"Set\", \"Offer\", \"Agreement\""
				},
				"uid": {
					"type": "string",
					"description": "The unique identifier for the policy.\nMust be an IRI.",
					"format": "uri"
				},
				"profile": {
					"anyOf": [
						{
							"type": "string"
						},
						{
							"type": "array",
							"items": {
								"type": "string"
							}
						}
					],
					"description": "The profile(s) this policy conforms to.\nIRIs identifying the ODRL Profile(s)."
				},
				"assigner": {
					"anyOf": [
						{
							"type": "string"
						},
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlParty"
						},
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlPartyCollection"
						},
						{
							"type": "array",
							"items": {
								"anyOf": [
									{
										"type": "string"
									},
									{
										"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlParty"
									},
									{
										"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlPartyCollection"
									}
								]
							}
						}
					],
					"description": "The assigner of the policy.\nApplies to all rules unless overridden at rule level."
				},
				"assignee": {
					"anyOf": [
						{
							"type": "string"
						},
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlParty"
						},
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlPartyCollection"
						},
						{
							"type": "array",
							"items": {
								"anyOf": [
									{
										"type": "string"
									},
									{
										"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlParty"
									},
									{
										"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlPartyCollection"
									}
								]
							}
						}
					],
					"description": "The assignee of the policy.\nApplies to all rules unless overridden at rule level."
				},
				"target": {
					"anyOf": [
						{
							"type": "string"
						},
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlAsset"
						},
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlAssetCollection"
						},
						{
							"type": "array",
							"items": {
								"anyOf": [
									{
										"type": "string"
									},
									{
										"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlAsset"
									},
									{
										"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlAssetCollection"
									}
								]
							}
						}
					],
					"description": "The target asset for the rule."
				},
				"action": {
					"anyOf": [
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlActionType"
						},
						{
							"type": "string"
						},
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlAction"
						},
						{
							"type": "array",
							"items": {
								"anyOf": [
									{
										"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlActionType"
									},
									{
										"type": "string"
									},
									{
										"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlAction"
									}
								]
							}
						}
					],
					"description": "The action associated with the rule."
				},
				"inheritFrom": {
					"anyOf": [
						{
							"type": "string"
						},
						{
							"type": "array",
							"items": {
								"type": "string"
							}
						}
					],
					"description": "The parent policy(ies) this policy inherits from.\nIRIs identifying the parent Policy(ies)."
				},
				"conflict": {
					"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlConflictStrategyType",
					"description": "The conflict resolution strategy.\n- perm: Permissions override Prohibitions\n- prohibit: Prohibitions override Permissions\n- invalid: Policy is void if conflicts exist (default)"
				},
				"permission": {
					"anyOf": [
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlPermission"
						},
						{
							"type": "array",
							"items": {
								"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlPermission"
							}
						}
					],
					"description": "The permissions in the policy.\nAt least one of permission, prohibition, or obligation must be present."
				},
				"prohibition": {
					"anyOf": [
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlProhibition"
						},
						{
							"type": "array",
							"items": {
								"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlProhibition"
							}
						}
					],
					"description": "The prohibitions in the policy.\nAt least one of permission, prohibition, or obligation must be present."
				},
				"obligation": {
					"anyOf": [
						{
							"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlDuty"
						},
						{
							"type": "array",
							"items": {
								"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlDuty"
							}
						}
					],
					"description": "The obligations in the policy.\nAt least one of permission, prohibition, or obligation must be present."
				},
				"@context": {
					"$ref": "https://schema.3sixty.global/w3c-odrl/OdrlContextType",
					"description": "The context for the policy.\nMust include \"https://www.w3.org/ns/odrl.jsonld\""
				}
			},
			"required": ["@type", "uid"],
			"$comment": "Inlined utility base type OdrlPolicy so utility transformations can operate on concrete properties instead of a $ref."
		}
	},
	"required": ["@type"]
}
