@prefix atlas:  <http://world.eu.org/atlas_ontology#> .
@prefix owl:    <http://www.w3.org/2002/07/owl#> .
@prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:    <http://www.w3.org/2001/XMLSchema#> .
@prefix schema: <http://schema.org/> .
@prefix wd:     <http://www.wikidata.org/entity/> .

atlas:Ontology a owl:Ontology ;
  rdfs:label   "Atlas Ontology" ;
  rdfs:comment "Entity resolution ontology for Atlas." .


### Classes

atlas:Entity a owl:Class ;
  rdfs:label   "Entity" ;
  rdfs:comment "One real-world referent." .

atlas:EntityType a owl:Class ;
  rdfs:label   "Entity Type" ;
  rdfs:comment "Controlled vocabulary of canonical types." .

atlas:Identifier a owl:Class ;
  rdfs:label   "Identifier" ;
  rdfs:comment "External identifier. atlas:scheme holds the scheme token; atlas:value holds the string." .

atlas:Provenance a owl:Class ;
  rdfs:label   "Provenance" ;
  rdfs:comment "Source, method, timestamp and confidence for an identifier or claim." .

atlas:Claim a owl:Class ;
  rdfs:label   "Claim" ;
  rdfs:comment "Reified triple with provenance. The triple must also exist directly on the entity." .

atlas:CurateFlag a owl:Class ;
  rdfs:label   "Curate Flag" ;
  rdfs:comment "Signals that an entity needs human review." .


### Object properties

atlas:hasCanonicalType a owl:ObjectProperty ;
  rdfs:domain atlas:Entity ;
  rdfs:range  atlas:EntityType ;
  rdfs:label  "has canonical type" .

atlas:hasIdentifier a owl:ObjectProperty ;
  rdfs:domain atlas:Entity ;
  rdfs:range  atlas:Identifier ;
  rdfs:label  "has identifier" .

atlas:hasClaim a owl:ObjectProperty ;
  rdfs:domain atlas:Entity ;
  rdfs:range  atlas:Claim ;
  rdfs:label  "has claim" .

atlas:claimSubjectIri a owl:ObjectProperty ;
  rdfs:domain atlas:Claim ;
  rdfs:range  atlas:Entity ;
  rdfs:label  "claim subject IRI" .

atlas:claimPredicate a owl:ObjectProperty ;
  rdfs:domain atlas:Claim ;
  rdfs:range  rdf:Property ;
  rdfs:label  "claim predicate" .

atlas:claimObjectIri a owl:ObjectProperty ;
  rdfs:domain atlas:Claim ;
  rdfs:range  owl:Thing ;
  rdfs:label  "claim object IRI" .

atlas:hasProvenance a owl:ObjectProperty ;
  rdfs:domain owl:Thing ;
  rdfs:range  atlas:Provenance ;
  rdfs:label  "has provenance" .

atlas:supersedes a owl:ObjectProperty ;
  rdfs:domain atlas:Claim ;
  rdfs:range  atlas:Claim ;
  rdfs:label  "supersedes" .

atlas:hasCurateFlag a owl:ObjectProperty ;
  rdfs:domain atlas:Entity ;
  rdfs:range  atlas:CurateFlag ;
  rdfs:label  "has curate flag" .


### Datatype properties

atlas:atlasId a owl:DatatypeProperty ;
  rdfs:domain atlas:Entity ;
  rdfs:range  xsd:string ;
  rdfs:label  "atlas id" .

atlas:canonicalLabel a owl:DatatypeProperty ;
  rdfs:domain atlas:Entity ;
  rdfs:range  xsd:string ;
  rdfs:label  "canonical label" .

atlas:canonicalDescription a owl:DatatypeProperty ;
  rdfs:domain atlas:Entity ;
  rdfs:range  xsd:string ;
  rdfs:label  "canonical description" .

atlas:aliasLabel a owl:DatatypeProperty ;
  rdfs:domain atlas:Entity ;
  rdfs:range  xsd:string ;
  rdfs:label  "alias label" ;
  rdfs:comment "Direct surface form. Add a language tag where known." .

atlas:scheme a owl:DatatypeProperty ;
  rdfs:domain atlas:Identifier ;
  rdfs:range  xsd:string ;
  rdfs:label  "scheme" ;
  rdfs:comment "Controlled tokens: wikidata-qid | google-mid | atlas-internal." .

atlas:value a owl:DatatypeProperty ;
  rdfs:domain atlas:Identifier ;
  rdfs:range  xsd:string ;
  rdfs:label  "value" .

atlas:provenanceSource a owl:DatatypeProperty ;
  rdfs:domain atlas:Provenance ;
  rdfs:range  xsd:string ;
  rdfs:label  "provenance source" .

atlas:retrievalMethod a owl:DatatypeProperty ;
  rdfs:domain atlas:Provenance ;
  rdfs:range  xsd:string ;
  rdfs:label  "retrieval method" .

atlas:retrievedAt a owl:DatatypeProperty ;
  rdfs:domain atlas:Provenance ;
  rdfs:range  xsd:dateTime ;
  rdfs:label  "retrieved at" .

atlas:confidence a owl:DatatypeProperty ;
  rdfs:domain atlas:Provenance ;
  rdfs:range  xsd:decimal ;
  rdfs:label  "confidence" .

atlas:claimLayer a owl:DatatypeProperty ;
  rdfs:domain atlas:Claim ;
  rdfs:range  xsd:string ;
  rdfs:label  "claim layer" ;
  rdfs:comment "Values: raw | derived | curated." .

atlas:claimStatus a owl:DatatypeProperty ;
  rdfs:domain atlas:Claim ;
  rdfs:range  xsd:string ;
  rdfs:label  "claim status" ;
  rdfs:comment "Values: active | superseded | rejected." .

atlas:claimObjectLiteral a owl:DatatypeProperty ;
  rdfs:domain atlas:Claim ;
  rdfs:range  xsd:string ;
  rdfs:label  "claim object literal" .

atlas:needsCuration a owl:DatatypeProperty ;
  rdfs:domain atlas:Entity ;
  rdfs:range  xsd:boolean ;
  rdfs:label  "needs curation" .

atlas:curationReason a owl:DatatypeProperty ;
  rdfs:domain atlas:CurateFlag ;
  rdfs:range  xsd:string ;
  rdfs:label  "curation reason" .

atlas:rawJson a owl:DatatypeProperty ;
  rdfs:domain atlas:Entity ;
  rdfs:range  xsd:string ;
  rdfs:label  "raw json" ;
  rdfs:comment "Opaque JSON cache blob from any source. Source is recorded in the associated Provenance node." .


### Canonical type catalog

atlas:Person a owl:Class ;
  rdfs:subClassOf atlas:EntityType ;
  rdfs:label "Person" ;
  owl:sameAs schema:Person, wd:Q5 .

atlas:Organization a owl:Class ;
  rdfs:subClassOf atlas:EntityType ;
  rdfs:label "Organization" ;
  owl:sameAs schema:Organization, wd:Q43229 .

atlas:Location a owl:Class ;
  rdfs:subClassOf atlas:EntityType ;
  rdfs:label "Location" ;
  owl:sameAs schema:Place, wd:Q17334923 .

atlas:CreativeWork a owl:Class ;
  rdfs:subClassOf atlas:EntityType ;
  rdfs:label "Creative Work" ;
  owl:sameAs schema:CreativeWork, wd:Q17537576 .

atlas:Event a owl:Class ;
  rdfs:subClassOf atlas:EntityType ;
  rdfs:label "Event" ;
  owl:sameAs schema:Event, wd:Q1656682 .

atlas:Product a owl:Class ;
  rdfs:subClassOf atlas:EntityType ;
  rdfs:label "Product" ;
  owl:sameAs schema:Product, wd:Q2424752 .

atlas:Other a owl:Class ;
  rdfs:subClassOf atlas:EntityType ;
  rdfs:label "Other" .
