@prefix ci: <https://catholicintelligence.com/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 schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .

<https://catholicintelligence.com/ontology> a owl:Ontology ;
  rdfs:label "Catholic Intelligence Ontology" ;
  rdfs:comment "A vocabulary for Catholic ecclesiastical entities: circumscriptions, parishes, persons who hold office, religious institutes, and the news records that mention them. It extends schema.org rather than replacing it, so that a general validator still reads every node." ;
  owl:versionInfo "0.8.0" ;
  dcterms:publisher "Catholic Intelligence" ;
  rdfs:seeAlso <https://catholicintelligence.com/id/diocese/los-angeles> .

ci:Diocese
  a owl:Class ;
  rdfs:label "Diocese" ;
  rdfs:comment "A territorial circumscription of the Latin or an Eastern Catholic Church: diocese, archdiocese, eparchy, apostolic vicariate, ordinariate or equivalent. The specific grade is carried by ci:ecclesiasticalRank rather than by subclassing, because the Annuario's grades are a controlled list that changes without the class hierarchy changing." ;
  rdfs:subClassOf schema:Church .

ci:Parish
  a owl:Class ;
  rdfs:label "Parish" ;
  rdfs:comment "A parish or other church with a stable community, identified within its diocese. Honorific standing (cathedral, basilica, shrine) is carried by boolean properties, not by subclasses, because a church can hold more than one at once." ;
  rdfs:subClassOf schema:Church .

ci:Person
  a owl:Class ;
  rdfs:label "Person" ;
  rdfs:comment "A person the graph identifies. Minted once per person, not once per office: an ordinary who has governed three sees is one node with three ci:hasSee edges." ;
  rdfs:subClassOf schema:Person .

ci:Bishop
  a owl:Class ;
  rdfs:label "Bishop" ;
  rdfs:comment "A person who holds or has held an episcopal see. Asserted alongside schema:Person so that general validators still see a Person." ;
  rdfs:subClassOf ci:Person .

ci:ReligiousInstitute
  a owl:Class ;
  rdfs:label "Religious institute" ;
  rdfs:comment "An institute of consecrated life or society of apostolic life: order, congregation, federation or province. ci:orderType carries the canonical form." ;
  rdfs:subClassOf schema:Organization .

ci:EpiscopalConference
  a owl:Class ;
  rdfs:label "Episcopal conference" ;
  rdfs:comment "A conference of bishops for a territory." ;
  rdfs:subClassOf schema:Organization ;
  skos:note "Emitted as a typed mention with a name and no @id. /id/conference/<slug> does not exist yet, so these are deliberately unlinked rather than pointed at a 404." .

ci:HolySee
  a owl:Class ;
  rdfs:label "Holy See" ;
  rdfs:comment "The Apostolic See and the dicasteries of the Roman Curia acting in its name." ;
  rdfs:subClassOf schema:Organization ;
  skos:note "Emitted as a typed mention with a name and no @id. /id/holy-see does not exist yet; 139 stories are keyed to it and waiting." .

ci:NewsStory
  a owl:Class ;
  rdfs:label "News story" ;
  rdfs:comment "A synthesized wire record: one event, assembled from one or more source items, written from the source packets alone. It is not an article we published in the ordinary sense and it never carries a byline." ;
  rdfs:subClassOf schema:NewsArticle .

ci:NewsSource
  a owl:Class ;
  rdfs:label "News source" ;
  rdfs:comment "An outlet the wire reads. ci:sourceRole and ci:publisherClass record what kind of authority it carries, which is what decides ranking, not editorial preference." ;
  rdfs:subClassOf schema:NewsMediaOrganization .

ci:WebResource
  a owl:Class ;
  rdfs:label "Web resource" ;
  rdfs:comment "A web resource attributed to an entity, carrying how the attribution was verified. A URL found on a page and a URL confirmed by crawling the site are different claims and this class keeps them different." .

ci:Identifier
  a owl:Class ;
  rdfs:label "External identifier" ;
  rdfs:comment "An identifier for an entity in an external authority (Wikidata, GCatholic, an Annuario code). A scheme and a value, deliberately not an owl:sameAs: holding someone's identifier is not the same as asserting the two nodes are the same thing." .

ci:Pontificate
  a owl:Class ;
  rdfs:label "Pontificate" ;
  rdfs:comment "One reign of one person over the See of Rome. A reign, not a person: Benedict IX held three, separately numbered 145, 147 and 150, and collapsing them into the man would lose the numbering the sources actually use." ;
  skos:note "267 numbered pontificates run from Peter to Leo XIV. Two further reigns carry no number and say why in ci:contested: Pope-elect Stephen, who died before consecration and was struck from the official list in 1961, and Benedict X, reckoned an antipope though his number was never reused." .

ci:Provenance
  a owl:Class ;
  rdfs:label "Provenance" ;
  rdfs:comment "How an assertion was arrived at: source, confidence, ontology version at the time, and when it was enriched. Attached to the node it explains rather than to the graph, so it survives extraction of a single record." .

ci:Pericope
  a owl:Class ;
  rdfs:label "Pericope" ;
  rdfs:comment "A passage of scripture identified by its OSIS reference. The IRI key is the lowercased OSIS ref, so two systems holding the same citation compute the same identifier without coordinating. Deliberately not a namespace of our own: a reference scheme is worth something only if other tooling already speaks it." ;
  rdfs:subClassOf schema:CreativeWork ;
  skos:note "Carries no scripture text. Lectionary text is the New American Bible under Confraternity of Christian Doctrine copyright; a citation is a pointer and is ours to publish, the passage is not." .

ci:DevotionalStation
  a owl:Class ;
  rdfs:label "Devotional station" ;
  rdfs:comment "One station of the Way of the Cross. Not a ci:LectionaryEntry: no book numbers the stations among the readings, and four of the fourteen traditional stations carry no scripture passage at all. Indexed alongside the Lectionary because a passage read at a funeral and prayed at a station is one passage, and only a shared pericope node can say so." ;
  skos:note "The four non-scriptural stations carry ci:isScriptural false and no reference, rather than being stretched onto a passage that does not contain them." .

ci:LectionaryEntry
  a owl:Class ;
  rdfs:label "Lectionary entry" ;
  rdfs:comment "One numbered option in a liturgical book: Lectionary no. 1016 option 1. Kept distinct from ci:Pericope because the same passage is proposed at several numbers across the books, and collapsing them would lose either the passage identity or the number a parish actually looks up." ;
  skos:note "The key is the book's own numbering, not minted here." .

ci:pericope
  a owl:ObjectProperty ;
  rdfs:label "pericope" ;
  rdfs:comment "The passage this book entry proposes. Both ends are IRI-valued, which is why the inverse is declared here and not on the string-valued relations elsewhere in this vocabulary." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range ci:Pericope ;
  owl:inverseOf ci:lectionaryEntry ;
  skos:note "Domain is ci:LectionaryEntry ALONE. It briefly also covered ci:DevotionalStation, and because its inverse ci:lectionaryEntry ranges over ci:LectionaryEntry, that entailed every station was a lectionary entry: the exact opposite of what ci:DevotionalStation is defined to be. Stations use ci:stationPassage." .

ci:stationPassage
  a owl:ObjectProperty ;
  rdfs:label "station passage" ;
  rdfs:comment "A passage this station is prayed from. Separate from ci:pericope so that the lectionary inverse cannot type a station as a book entry; the two relations look alike and entail very different things." ;
  rdfs:domain ci:DevotionalStation ;
  rdfs:range ci:Pericope ;
  owl:inverseOf ci:devotionalUse .

ci:lectionaryEntry
  a owl:ObjectProperty ;
  rdfs:label "lectionary entry" ;
  rdfs:comment "The inverse edge: every numbered slot in which this passage is proposed. A passage read at both a funeral and a wedding carries two." ;
  rdfs:domain ci:Pericope ;
  rdfs:range ci:LectionaryEntry ;
  owl:inverseOf ci:pericope .

ci:devotionalUse
  a owl:ObjectProperty ;
  rdfs:label "devotional use" ;
  rdfs:comment "A devotion in which this passage is prayed. The edge that makes the registry more than two lists side by side: the funeral gospel Luke 23:44-46, 50, 52-53 contains the twelfth and thirteenth stations, and this is where a reader finds that out." ;
  rdfs:domain ci:Pericope ;
  rdfs:range ci:DevotionalStation ;
  owl:inverseOf ci:stationPassage ;
  skos:note "Inverse of ci:stationPassage. It could not be the inverse of ci:pericope, which already has one; giving stations their own forward predicate is what made a correct inverse possible here." .

ci:containsPassage
  a owl:ObjectProperty ;
  rdfs:label "contains passage" ;
  rdfs:comment "This passage wholly encloses the other. Direction lives in the predicate because the earlier design hung it on the target node as ci:passageRelation, which asserted \"contains\" about the target globally rather than about the edge: merge three documents and one passage claimed to be contains, within and overlaps at once." ;
  rdfs:domain ci:Pericope ;
  rdfs:range ci:Pericope ;
  owl:inverseOf ci:withinPassage .

ci:withinPassage
  a owl:ObjectProperty ;
  rdfs:label "within passage" ;
  rdfs:comment "This passage sits wholly inside the other. The twelfth station is within the funeral gospel; saying only that they overlap would lose which is the fuller reading." ;
  rdfs:domain ci:Pericope ;
  rdfs:range ci:Pericope ;
  owl:inverseOf ci:containsPassage .

ci:overlapsPassage
  a owl:ObjectProperty ;
  rdfs:label "overlaps passage" ;
  rdfs:comment "Another passage in the registry sharing at least one verse. Computed by interval arithmetic over (chapter, verse) tuples, which is exact and needs no versification table: the alternative, counting verses per chapter, differs between editions and would make the answer depend on a Bible we have not chosen." ;
  rdfs:domain ci:Pericope ;
  rdfs:range ci:Pericope ;
  skos:note "Used only where neither passage encloses the other; containment is ci:containsPassage / ci:withinPassage. Symmetric in the data, and the earlier reasoning for withholding owl:SymmetricProperty was confused: symmetry of this predicate says nothing about any other. It is left undeclared only because the serializer emits both directions explicitly." .

ci:stationNumber
  a owl:DatatypeProperty ;
  rdfs:label "station number" ;
  rdfs:comment "Which station, 1 to 14, in the traditional order." ;
  rdfs:domain ci:DevotionalStation ;
  rdfs:range xsd:integer .

ci:devotion
  a owl:DatatypeProperty ;
  rdfs:label "devotion" ;
  rdfs:comment "The devotion the station belongs to. Only way_of_the_cross is populated; the field exists because the rosary mysteries are the same shape and will land here." ;
  rdfs:domain ci:DevotionalStation ;
  rdfs:range xsd:string .

ci:stationTradition
  a owl:DatatypeProperty ;
  rdfs:label "station tradition" ;
  rdfs:comment "Which set of stations: traditional, or the scriptural Way of the Cross of 1991. The two differ in both the passages and the events, so a consumer that merges them will pray a station that is in neither." ;
  rdfs:domain ci:DevotionalStation ;
  rdfs:range xsd:string .

ci:isScriptural
  a owl:DatatypeProperty ;
  rdfs:label "is scriptural" ;
  rdfs:comment "Whether the station is drawn directly from Scripture. False for the three falls and for Veronica, which are devotional tradition. Published rather than inferred from an empty reference list, because absent-because-none and absent-because-unrecorded are different claims." ;
  rdfs:domain ci:DevotionalStation ;
  rdfs:range xsd:boolean .

ci:osisRef
  a owl:DatatypeProperty ;
  rdfs:label "OSIS reference" ;
  rdfs:comment "The passage as an OSIS reference (Matt.5.1-Matt.5.12). Verse-part letters in the printed citation are dropped, which widens the span by at most a clause and keeps references joinable across sources that letter them differently." ;
  rdfs:domain [ a owl:Class ; owl:unionOf ( ci:Pericope ci:LectionaryEntry ci:DevotionalStation ) ] ;
  rdfs:range xsd:string .

ci:citation
  a owl:DatatypeProperty ;
  rdfs:label "citation" ;
  rdfs:comment "The citation as the book prints it, kept verbatim beside the normalized ci:osisRef so nothing has to round-trip through our parser to quote the source." ;
  rdfs:domain [ a owl:Class ; owl:unionOf ( ci:LectionaryEntry ci:DevotionalStation ) ] ;
  rdfs:range xsd:string .

ci:lectionaryNumber
  a owl:DatatypeProperty ;
  rdfs:label "lectionary number" ;
  rdfs:comment "The number the liturgical book assigns, e.g. 1016 for the funeral gospels in the US Lectionary volume IV." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:integer .

ci:lectionaryIndex
  a owl:DatatypeProperty ;
  rdfs:label "lectionary option" ;
  rdfs:comment "Which option within that number, counted in the order the book prints them." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:integer .

ci:liturgicalRole
  a owl:DatatypeProperty ;
  rdfs:label "liturgical role" ;
  rdfs:comment "first_reading, responsorial_psalm, second_reading, alleluia_verse or gospel. The alleluia verse is a sung acclamation rather than one of the readings a family chooses, which is why a count of the readings excludes it." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:string .

ci:lectionaryEdition
  a owl:DatatypeProperty ;
  rdfs:label "lectionary edition" ;
  rdfs:comment "Which printed edition this entry came out of. Not decoration: the Order of Celebrating Matrimony (2016) expanded the 2002 marriage set, so 39 and 47 are both correct counts of the wedding readings and a consumer joining one book's numbers against the other's would silently mismatch. Recording the edition is the only thing that keeps that straight." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:string ;
  skos:note "The funeral set is stable across the editions held here; the marriage set is not, and only the 2002 table is transcribed." .

ci:lectionaryCollection
  a owl:DatatypeProperty ;
  rdfs:label "lectionary collection" ;
  rdfs:comment "Which body of readings the entry belongs to: funeral or marriage. Deliberately NOT ci:rite, which in this vocabulary means the ritual Church a see belongs to (Latin, Syro-Malabar, Byzantine). The two words collide in English and mean nothing like each other; naming this one ci:rite would have let a consumer read \"funeral\" as a ritual Church." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:string ;
  skos:note "Kept beside ci:liturgicalContext, which distinguishes whose funeral it is. Merging them offers a bereaved parent a wedding reading." .

ci:liturgicalContext
  a owl:DatatypeProperty ;
  rdfs:label "liturgical context" ;
  rdfs:comment "Whose funeral the set is for: adult, baptized_child, unbaptized_child. The books number these separately and a consumer that merges them will offer a bereaved parent the wrong list." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:string .

ci:seasonRestriction
  a owl:DatatypeProperty ;
  rdfs:label "season restriction" ;
  rdfs:comment "easter or outside_easter, where the book splits a role by season. During Easter the first reading is taken from the New Testament, which is a different number rather than a variant of the same one." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:string .

ci:isVigilOption
  a owl:DatatypeProperty ;
  rdfs:label "vigil option" ;
  rdfs:comment "Proposed for the vigil rather than the funeral Mass. Carried rather than dropped because a consumer building a vigil booklet needs exactly this distinction." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:boolean .

ci:shorterForm
  a owl:DatatypeProperty ;
  rdfs:label "shorter form" ;
  rdfs:comment "The abbreviated span the book permits for this entry, as it prints it." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:string .

ci:variantCitation
  a owl:DatatypeProperty ;
  rdfs:label "variant citation" ;
  rdfs:comment "A citation for this same entry found in another published source. Recorded rather than reconciled: transcriptions of the printed books disagree by a verse in places, and choosing silently would publish a guess as a fact." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:string .

ci:citationDisputed
  a owl:DatatypeProperty ;
  rdfs:label "citation disputed" ;
  rdfs:comment "Reputable sources give different spans for this entry and the registry does not pick one. True here means the printed book is needed to settle it, not that the entry is doubtful." ;
  rdfs:domain ci:LectionaryEntry ;
  rdfs:range xsd:boolean .

ci:mentions
  a owl:ObjectProperty ;
  rdfs:label "mentions" ;
  rdfs:comment "A story refers to this entity. Emitted in three grades: a node with an @id when the entity resolves to a dereferenceable IRI; a typed node with a name and no @id when the kind is known but no endpoint exists yet; and, when nothing resolves, schema:about as a plain string, which makes no identity claim at all." ;
  rdfs:domain ci:NewsStory ;
  rdfs:range owl:Thing ;
  owl:inverseOf ci:subjectOf ;
  skos:note "Nothing is keyed because a model asserted it. Resolution is exact-match and unique-match-or-nothing, so a name shared by two records resolves to neither." .

ci:subjectOf
  a owl:ObjectProperty ;
  rdfs:label "subject of" ;
  rdfs:comment "The inverse edge: the stories that mention this entity. Rendered on diocese, person and institute nodes so that a walker following the graph reaches the news instead of dead-ending." ;
  rdfs:domain owl:Thing ;
  rdfs:range ci:NewsStory ;
  owl:inverseOf ci:mentions .

ci:storyKind
  a owl:DatatypeProperty ;
  rdfs:label "story kind" ;
  rdfs:comment "What the underlying piece is: report, announcement, column, devotional, review, roundup, interview. Classifying a homily as a news report is the error this prevents." ;
  rdfs:domain ci:NewsStory ;
  rdfs:range xsd:string .

ci:desk
  a owl:DatatypeProperty ;
  rdfs:label "desk" ;
  rdfs:comment "The topic desk the story was filed to." ;
  rdfs:domain ci:NewsStory ;
  rdfs:range xsd:string .

ci:sourceCount
  a owl:DatatypeProperty ;
  rdfs:label "source count" ;
  rdfs:comment "How many distinct sources were clustered into this record. One source is a report; six sources agreeing is a different epistemic object and the number is published rather than hidden." ;
  rdfs:domain ci:NewsStory ;
  rdfs:range xsd:integer .

ci:writtenLanguage
  a owl:DatatypeProperty ;
  rdfs:label "written language" ;
  rdfs:comment "The language the record was actually written in, which is not always the language it was asked for." ;
  rdfs:domain ci:NewsStory ;
  rdfs:range xsd:string ;
  skos:note "Set from positive evidence, never from intent. Asked to write English from German packets the model has returned a German headline over an English summary, and trusting the instruction put that on the front page." .

ci:status
  a owl:DatatypeProperty ;
  rdfs:label "status" ;
  rdfs:comment "Editorial status where it is not the ordinary case. Present as 'retracted' on a withdrawn record; a retraction stays addressable rather than vanishing." ;
  rdfs:domain ci:NewsStory ;
  rdfs:range xsd:string .

ci:sourceRole
  a owl:DatatypeProperty ;
  rdfs:label "source role" ;
  rdfs:comment "The authority the source carries for this story: primary, official, reporting, other." ;
  rdfs:domain ci:NewsSource ;
  rdfs:range xsd:string .

ci:publisherClass
  a owl:DatatypeProperty ;
  rdfs:label "publisher class" ;
  rdfs:comment "What kind of publisher this is, independent of the story at hand." ;
  rdfs:domain ci:NewsSource ;
  rdfs:range xsd:string .

ci:organOf
  a owl:ObjectProperty ;
  rdfs:label "organ of" ;
  rdfs:comment "The entity a source is the official organ of, when it is one. A diocesan newspaper reporting on its own diocese is not independent corroboration and this edge is what makes that visible." ;
  rdfs:domain ci:NewsSource ;
  rdfs:range owl:Thing .

ci:hasOrdinary
  a owl:ObjectProperty ;
  rdfs:label "has ordinary" ;
  rdfs:comment "The bishop currently governing this see." ;
  rdfs:domain ci:Diocese ;
  rdfs:range ci:Bishop ;
  owl:inverseOf ci:hasSee ;
  skos:note "Absent on a vacant see. Absence is the honest representation of sede vacante and must not be filled with the apostolic administrator or the last incumbent." .

ci:ordinary
  a owl:ObjectProperty ;
  rdfs:label "ordinary (deprecated)" ;
  rdfs:comment "Deprecated alias of ci:hasOrdinary, kept so that consumers written against the earlier vocabulary keep resolving. Points at the same node. Use ci:hasOrdinary." ;
  rdfs:domain ci:Diocese ;
  rdfs:range ci:Bishop ;
  owl:deprecated true .

ci:ecclesiasticalRank
  a owl:DatatypeProperty ;
  rdfs:label "ecclesiastical rank" ;
  rdfs:comment "The grade of the circumscription: diocese, archdiocese, eparchy, apostolic vicariate, ordinariate, territorial abbey and so on." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:string .

ci:territorialGrade
  a owl:DatatypeProperty ;
  rdfs:label "territorial grade" ;
  rdfs:comment "The grade as the Annuario Pontificio states it, kept distinct from ci:ecclesiasticalRank so the source's own vocabulary is never silently normalized away." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:string .

ci:ecclesiasticalProvince
  a owl:DatatypeProperty ;
  rdfs:label "ecclesiastical province" ;
  rdfs:comment "The province this see belongs to. A literal name today; becomes an IRI when provinces are minted as nodes." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:string .

ci:suffraganOf
  a owl:ObjectProperty ;
  rdfs:label "suffragan of" ;
  rdfs:comment "The metropolitan see this diocese is suffragan to." ;
  rdfs:domain ci:Diocese ;
  rdfs:range schema:Church ;
  skos:note "Currently a node carrying a name with no @id, because the metropolitan is stored as a name rather than a slug. It becomes a link with no other change once that column resolves." .

ci:cathedral
  a owl:ObjectProperty ;
  rdfs:label "cathedral" ;
  rdfs:comment "The cathedral church of the see." ;
  rdfs:domain ci:Diocese ;
  rdfs:range schema:CatholicChurch .

ci:coCathedral
  a owl:ObjectProperty ;
  rdfs:label "co-cathedral" ;
  rdfs:comment "A co-cathedral, where the see has one." ;
  rdfs:domain ci:Diocese ;
  rdfs:range schema:CatholicChurch .

ci:catholicPopulation
  a owl:DatatypeProperty ;
  rdfs:label "Catholic population" ;
  rdfs:comment "Catholics in the circumscription, as reported by the source that supplied it." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:integer .

ci:totalPopulation
  a owl:DatatypeProperty ;
  rdfs:label "total population" ;
  rdfs:comment "Total population of the territory, as reported." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:integer .

ci:areaKm2
  a owl:DatatypeProperty ;
  rdfs:label "area (km²)" ;
  rdfs:comment "Area of the circumscription in square kilometres." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:decimal .

ci:priestCount
  a owl:DatatypeProperty ;
  rdfs:label "priest count" ;
  rdfs:comment "Priests attached to the circumscription, as reported." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:integer .

ci:parishCount
  a owl:DatatypeProperty ;
  rdfs:label "parish count" ;
  rdfs:comment "Parishes published for this diocese in this graph. A count of our records, not a claim about the diocese's own roster." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:integer .

ci:annuarioCode
  a owl:DatatypeProperty ;
  rdfs:label "Annuario code" ;
  rdfs:comment "The circumscription's code in the Annuario Pontificio." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:string .

ci:latinName
  a owl:DatatypeProperty ;
  rdfs:label "Latin name" ;
  rdfs:comment "The Latin style of the see, which is the form canonical documents use." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:string .

ci:foundedYear
  a owl:DatatypeProperty ;
  rdfs:label "founded year" ;
  rdfs:comment "Year the circumscription was erected." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:integer .

ci:elevatedYear
  a owl:DatatypeProperty ;
  rdfs:label "elevated year" ;
  rdfs:comment "Year the circumscription was raised to its current grade." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:integer .

ci:jurisdictionType
  a owl:DatatypeProperty ;
  rdfs:label "jurisdiction type" ;
  rdfs:comment "Whether the see is territorial, personal, military or ritual." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:string ;
  skos:note "Modeled in the v1 read API under a plain field name; not yet emitted as an RDF predicate." .

ci:inProvince
  a owl:DatatypeProperty ;
  rdfs:label "in province" ;
  rdfs:comment "The ecclesiastical province, absent for exempt sees. Absence means exempt or unknown and the two are not distinguished." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:string ;
  skos:note "Modeled in the v1 read API under a plain field name; not yet emitted as an RDF predicate." .

ci:hasSee
  a owl:ObjectProperty ;
  rdfs:label "has see" ;
  rdfs:comment "A see this person governs. One edge per see, so a multi-see ordinary stays one node instead of being duplicated per diocese." ;
  rdfs:domain ci:Bishop ;
  rdfs:range ci:Diocese ;
  owl:inverseOf ci:hasOrdinary .

ci:ordinaryTitle
  a owl:DatatypeProperty ;
  rdfs:label "ordinary title" ;
  rdfs:comment "The title held in a given see: Bishop, Archbishop, Eparch, Apostolic Administrator." ;
  rdfs:domain ci:Bishop ;
  rdfs:range xsd:string .

ci:isPrimarySee
  a owl:DatatypeProperty ;
  rdfs:label "is primary see" ;
  rdfs:comment "Marks which of several sees is the principal one, so a reader is not left to guess from ordering." ;
  rdfs:domain ci:Bishop ;
  rdfs:range xsd:boolean .

ci:qualification
  a owl:DatatypeProperty ;
  rdfs:label "qualification" ;
  rdfs:comment "Qualifying status on the appointment, such as emeritus or coadjutor." ;
  rdfs:domain ci:Bishop ;
  rdfs:range xsd:string .

ci:memberOf
  a rdf:Property ;
  rdfs:label "member of" ;
  rdfs:comment "The religious institute this person belongs to. Dereferences to /id/order/<slug> where the Annuario's free-text institute string resolved to a real institute, and stays a bare literal name where it did not." ;
  rdfs:domain ci:Bishop ;
  skos:note "The mixed range is the honest state of the data, not indecision: 261 of the persons carrying an institute have a resolved order_slug and the rest have only the string the Annuario printed. Because it is IRI-valued for some subjects and literal for others it is still NOT declared owl:inverseOf ci:hasMember; an inverse across a literal would make a reasoner invent institute nodes out of strings. The diocese emitter, which has no order_slug in scope, always emits the literal form." .

ci:externalIdentifier
  a owl:ObjectProperty ;
  rdfs:label "external identifier" ;
  rdfs:comment "An identifier for this person in an external authority." ;
  rdfs:domain ci:Person ;
  rdfs:range ci:Identifier .

ci:orderType
  a owl:DatatypeProperty ;
  rdfs:label "order type" ;
  rdfs:comment "The canonical form of the institute: order, congregation, society, secular institute." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range xsd:string .

ci:canonicalBasis
  a owl:DatatypeProperty ;
  rdfs:label "canonical basis" ;
  rdfs:comment "The provision of canon law the institute's form rests on." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range xsd:string .

ci:instituteGender
  a owl:DatatypeProperty ;
  rdfs:label "institute gender" ;
  rdfs:comment "Whether the institute is of men or of women." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range xsd:string .

ci:spiritualFamily
  a owl:DatatypeProperty ;
  rdfs:label "spiritual family" ;
  rdfs:comment "The tradition the institute belongs to: Benedictine, Franciscan, Carmelite and so on." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range xsd:string .

ci:markSource
  a owl:DatatypeProperty ;
  rdfs:label "mark source" ;
  rdfs:comment "How schema:logo was chosen: own (institute favicon), parent (federation favicon), or family (first-party spiritual-family emblem)." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range xsd:string .

ci:familyMark
  a owl:ObjectProperty ;
  rdfs:label "family mark" ;
  rdfs:comment "A first-party drawing of the spiritual family's traditional emblem, used only when the institute and its mother organization have no loaded mark of their own. Not a claim that this bitmap is the institute's official logo." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range schema:ImageObject .

ci:charism
  a owl:DatatypeProperty ;
  rdfs:label "charism" ;
  rdfs:comment "The institute's charism as it states it." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range xsd:string .

ci:postNominalInitials
  a owl:DatatypeProperty ;
  rdfs:label "post-nominal initials" ;
  rdfs:comment "The initials members place after their names (OP, SJ, OSB)." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range xsd:string .

ci:partOfFederation
  a owl:ObjectProperty ;
  rdfs:label "part of federation" ;
  rdfs:comment "The federation or confederation this institute belongs to." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range ci:ReligiousInstitute .

ci:hasConstituentCongregation
  a owl:ObjectProperty ;
  rdfs:label "has constituent congregation" ;
  rdfs:comment "A congregation making up this federation." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range ci:ReligiousInstitute .

ci:hasMember
  a owl:ObjectProperty ;
  rdfs:label "has member" ;
  rdfs:comment "A person in the graph belonging to this institute. Populated from bishops, so it is a member we can identify, never a roster." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range ci:Person .

ci:generalate
  a owl:ObjectProperty ;
  rdfs:label "generalate" ;
  rdfs:comment "The institute's general curia." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range schema:Place .

ci:liturgicalCalendarScope
  a owl:DatatypeProperty ;
  rdfs:label "liturgical calendar scope" ;
  rdfs:comment "The proper calendar that applies to the institute, as a scope key the liturgical engine resolves." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range xsd:string .

ci:identifier
  a owl:ObjectProperty ;
  rdfs:label "identifier" ;
  rdfs:comment "An identifier for this institute in an external authority." ;
  rdfs:domain ci:ReligiousInstitute ;
  rdfs:range ci:Identifier ;
  skos:note "Duplicates the role of ci:externalIdentifier, which persons use. Two spellings for one relation is drift, recorded here rather than papered over; one should win in a future version." .

ci:identifierScheme
  a owl:DatatypeProperty ;
  rdfs:label "identifier scheme" ;
  rdfs:comment "The authority the identifier belongs to." ;
  rdfs:domain ci:Identifier ;
  rdfs:range xsd:string .

ci:identifierValue
  a owl:DatatypeProperty ;
  rdfs:label "identifier value" ;
  rdfs:comment "The identifier itself, as the authority writes it." ;
  rdfs:domain ci:Identifier ;
  rdfs:range xsd:string .

ci:scheme
  a owl:DatatypeProperty ;
  rdfs:label "scheme" ;
  rdfs:comment "The authority the identifier belongs to." ;
  rdfs:domain ci:Identifier ;
  rdfs:range xsd:string ;
  skos:note "The institute emitter's spelling of ci:identifierScheme. Same relation, second spelling; see the note on ci:identifier." .

ci:value
  a owl:DatatypeProperty ;
  rdfs:label "value" ;
  rdfs:comment "The identifier itself." ;
  rdfs:domain ci:Identifier ;
  rdfs:range xsd:string ;
  skos:note "The institute emitter's spelling of ci:identifierValue." .

ci:webResource
  a owl:ObjectProperty ;
  rdfs:label "web resource" ;
  rdfs:comment "A web resource attributed to this entity, with its verification carried alongside." ;
  rdfs:domain owl:Thing ;
  rdfs:range ci:WebResource .

ci:webResourceKind
  a owl:DatatypeProperty ;
  rdfs:label "web resource kind" ;
  rdfs:comment "What the resource is: official website, livestream, bulletin, giving page." ;
  rdfs:domain ci:WebResource ;
  rdfs:range xsd:string .

ci:verificationStatus
  a owl:DatatypeProperty ;
  rdfs:label "verification status" ;
  rdfs:comment "How the attribution was established. 'verified_by_crawl' means we fetched the site and found the entity named on it, which is a different claim from a URL that merely appeared in a directory." ;
  rdfs:domain ci:WebResource ;
  rdfs:range xsd:string .

ci:verificationEvidence
  a owl:DatatypeProperty ;
  rdfs:label "verification evidence" ;
  rdfs:comment "What the crawl actually found. The evidence is published so the verification can be disputed." ;
  rdfs:domain ci:WebResource ;
  rdfs:range xsd:string .

ci:siteScope
  a owl:DatatypeProperty ;
  rdfs:label "site scope" ;
  rdfs:comment "How much of the entity the site covers: the whole institute, one province, one house." ;
  rdfs:domain ci:WebResource ;
  rdfs:range xsd:string ;
  skos:note "An institute's own site carries its popular name, not the Annuario's, and scope is what keeps a province site from being read as the generalate's." .

ci:siteKind
  a owl:DatatypeProperty ;
  rdfs:label "site kind" ;
  rdfs:comment "The canonical kind of site." ;
  rdfs:domain ci:WebResource ;
  rdfs:range xsd:string ;
  skos:note "Modeled in the v1 read API under a plain field name; not yet emitted as an RDF predicate." .

ci:officialWebsite
  a owl:DatatypeProperty ;
  rdfs:label "official website" ;
  rdfs:comment "The entity's own site, where it has been verified as such." ;
  rdfs:domain owl:Thing ;
  rdfs:range xsd:anyURI .

ci:livestreamUrl
  a owl:DatatypeProperty ;
  rdfs:label "livestream URL" ;
  rdfs:comment "Where the parish streams its liturgies." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:anyURI .

ci:massSchedule
  a owl:DatatypeProperty ;
  rdfs:label "Mass schedule" ;
  rdfs:comment "When Mass is offered, as the parish publishes it." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:massForm
  a owl:DatatypeProperty ;
  rdfs:label "Mass form" ;
  rdfs:comment "The form or rite of a scheduled Mass." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:confessionSchedule
  a owl:DatatypeProperty ;
  rdfs:label "confession schedule" ;
  rdfs:comment "When confessions are heard." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:adorationSchedule
  a owl:DatatypeProperty ;
  rdfs:label "adoration schedule" ;
  rdfs:comment "When the Blessed Sacrament is exposed." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:officeHours
  a owl:DatatypeProperty ;
  rdfs:label "office hours" ;
  rdfs:comment "When the parish office is open." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:meetingSchedule
  a owl:DatatypeProperty ;
  rdfs:label "meeting schedule" ;
  rdfs:comment "When a ministry meets." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:ministryKind
  a owl:DatatypeProperty ;
  rdfs:label "ministry kind" ;
  rdfs:comment "What kind of ministry or group this is." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:sacramentOffered
  a owl:DatatypeProperty ;
  rdfs:label "sacrament offered" ;
  rdfs:comment "A sacrament the parish offers." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:liturgicalLanguage
  a owl:DatatypeProperty ;
  rdfs:label "liturgical language" ;
  rdfs:comment "A language the liturgy is celebrated in. This is what makes a parish findable by the people who need it." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:rite
  a owl:DatatypeProperty ;
  rdfs:label "rite" ;
  rdfs:comment "The ritual Church the entity belongs to." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:string ;
  skos:note "Not ci:lectionaryCollection, which is funeral-or-marriage and only collides with this term in English. Never infer this from a slug. A see whose slug reads like a Latin diocese can be Syro-Malabar, and the rite column is the only thing that says so." .

ci:patron
  a owl:DatatypeProperty ;
  rdfs:label "patron" ;
  rdfs:comment "The patron saint of the diocese or parish." ;
  rdfs:domain ci:Diocese ;
  rdfs:range xsd:string .

ci:feastDay
  a owl:DatatypeProperty ;
  rdfs:label "feast day" ;
  rdfs:comment "The titular feast the church keeps as its patronal day. Distinct from ci:patron: a parish under the title of the Assumption keeps 15 August, and the patron and the date are separately useful." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:isCathedral
  a owl:DatatypeProperty ;
  rdfs:label "is cathedral" ;
  rdfs:comment "The church is the cathedral of its see. Emitted only when true." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:boolean .

ci:isBasilica
  a owl:DatatypeProperty ;
  rdfs:label "is basilica" ;
  rdfs:comment "The church holds the title of basilica. Emitted only when true." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:boolean .

ci:isShrine
  a owl:DatatypeProperty ;
  rdfs:label "is shrine" ;
  rdfs:comment "The church is a designated shrine. Emitted only when true." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:boolean ;
  skos:note "Modeled in the v1 read API under a plain field name; not yet emitted as an RDF predicate." .

ci:pastor
  a owl:DatatypeProperty ;
  rdfs:label "pastor" ;
  rdfs:comment "The pastor, as a name. A literal until clergy below the episcopate are minted as person nodes." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:parochialVicar
  a owl:DatatypeProperty ;
  rdfs:label "parochial vicar" ;
  rdfs:comment "A parochial vicar, as a name." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:deacon
  a owl:DatatypeProperty ;
  rdfs:label "deacon" ;
  rdfs:comment "A deacon assigned to the parish, as a name." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:administeredByOrder
  a owl:DatatypeProperty ;
  rdfs:label "administered by order" ;
  rdfs:comment "The religious institute staffing the parish, as a name." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string ;
  skos:note "A literal today. It becomes a link to ci:ReligiousInstitute once parish-to-institute resolution runs, which is one of the clearest wins left in the graph." .

ci:vicariate
  a owl:DatatypeProperty ;
  rdfs:label "vicariate" ;
  rdfs:comment "The vicariate or deanery within the diocese." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:county
  a owl:DatatypeProperty ;
  rdfs:label "county" ;
  rdfs:comment "The civil county, which schema:PostalAddress has no field for and which is how many American parishes are actually located." ;
  rdfs:domain schema:PostalAddress ;
  rdfs:range xsd:string .

ci:history
  a owl:DatatypeProperty ;
  rdfs:label "history" ;
  rdfs:comment "A short account of the parish's founding and life, written for this graph." ;
  rdfs:domain ci:Parish ;
  rdfs:range xsd:string .

ci:pontificate
  a owl:ObjectProperty ;
  rdfs:label "pontificate" ;
  rdfs:comment "A reign of this person over the See of Rome. A list, because a pope may reign more than once." ;
  rdfs:domain ci:Person ;
  rdfs:range ci:Pontificate .

ci:pontificateNumber
  a owl:DatatypeProperty ;
  rdfs:label "pontificate number" ;
  rdfs:comment "Where the reign falls in the received sequence of Roman Pontiffs, Peter as 1." ;
  rdfs:domain ci:Pontificate ;
  rdfs:range xsd:integer ;
  skos:note "Absent, not zero, where the sources decline to number a reign. An absent number is a real editorial position and must never be filled in to tidy the sequence." .

ci:reignStart
  a owl:DatatypeProperty ;
  rdfs:label "reign start" ;
  rdfs:comment "When the pontificate began, by election or by the date the sources give." ;
  rdfs:domain ci:Pontificate ;
  rdfs:range xsd:date .

ci:reignEnd
  a owl:DatatypeProperty ;
  rdfs:label "reign end" ;
  rdfs:comment "When the pontificate ended, by death, resignation or deposition. Absent on the reigning pope." ;
  rdfs:domain ci:Pontificate ;
  rdfs:range xsd:date .

ci:contested
  a owl:DatatypeProperty ;
  rdfs:label "contested" ;
  rdfs:comment "Why this reign carries no number, in words. Publishing the reason is what separates a considered omission from missing data." ;
  rdfs:domain ci:Pontificate ;
  rdfs:range xsd:string .

ci:provenance
  a owl:ObjectProperty ;
  rdfs:label "provenance" ;
  rdfs:comment "How the assertions on this node were arrived at." ;
  rdfs:domain owl:Thing ;
  rdfs:range ci:Provenance .

ci:source
  a owl:DatatypeProperty ;
  rdfs:label "source" ;
  rdfs:comment "Where the assertion came from." ;
  rdfs:domain ci:Provenance ;
  rdfs:range xsd:string .

ci:confidence
  a owl:DatatypeProperty ;
  rdfs:label "confidence" ;
  rdfs:comment "How far the assertion is to be trusted. Published rather than used as an internal filter, because a consumer deserves to apply their own threshold." ;
  rdfs:domain ci:Provenance ;
  rdfs:range xsd:string .

ci:ontologyVersion
  a owl:DatatypeProperty ;
  rdfs:label "ontology version" ;
  rdfs:comment "The vocabulary version in force when the record was written, so an old record stays interpretable after the vocabulary moves. Lectionary nodes stamp it directly rather than through a ci:Provenance record, because the whole registry shares one source and one version." ;
  rdfs:domain [ a owl:Class ; owl:unionOf ( ci:Provenance ci:Pericope ci:LectionaryEntry ci:DevotionalStation ) ] ;
  rdfs:range xsd:string .

ci:enrichedAt
  a owl:DatatypeProperty ;
  rdfs:label "enriched at" ;
  rdfs:comment "When the enrichment ran." ;
  rdfs:domain ci:Provenance ;
  rdfs:range xsd:dateTime .

ci:dataState
  a owl:DatatypeProperty ;
  rdfs:label "data state" ;
  rdfs:comment "How complete the record is. A sparse record says so instead of presenting itself as a full one." ;
  rdfs:domain owl:Thing ;
  rdfs:range xsd:string .
