diff --git a/teatre-migrants.ttl b/teatre-migrants.ttl new file mode 100644 index 0000000..5380585 --- /dev/null +++ b/teatre-migrants.ttl @@ -0,0 +1,566 @@ +@prefix rdf: . +@prefix rdfs: . +@prefix owl: . +@prefix xsd: . +@prefix dct: . +@prefix vann: . +@prefix skos: . +@prefix schema: . +@prefix tm: . + +# ============================================================================= +# Ontology metadata +# ============================================================================= + + a owl:Ontology ; + rdfs:label "Theatre Migrants Ontology"@en ; + rdfs:comment "Ontology for the Theatre Migrants Knowledge Graph, documenting professional migrations of theatre practitioners across Europe (1850–1918)."@en ; + dct:title "Theatre Migrants Ontology"@en ; + dct:description "A domain ontology extending Schema.org with custom classes and properties for modeling migrations, work engagements, interpersonal relationships, religion affiliations, and temporal uncertainty in the context of European theatre history."@en ; + dct:created "2025-01-01"^^xsd:date ; + dct:license ; + dct:creator ; + dct:creator [ + a schema:Person ; + schema:name "Jorit Hopp" ; + schema:affiliation "Institut der Theaterwissenschaft, Ludwig Maximilian University of Munich" + ] ; + dct:creator [ + a schema:Person ; + schema:name "Berenika Szymanski" ; + schema:affiliation "Institut der Theaterwissenschaft, Ludwig Maximilian University of Munich" + ] ; + dct:creator [ + a schema:Person ; + schema:name "Yan Lin" ; + schema:affiliation "Institut der Theaterwissenschaft, Ludwig Maximilian University of Munich" + ] ; + vann:preferredNamespaceUri "https://daniel.degu.cl/ontologies/theatre-migrants/" ; + vann:preferredNamespacePrefix "tm" ; + owl:versionInfo "0.1.0" . + + a schema:Person ; + schema:name "Daniel Hernandez" ; + schema:affiliation "Institute for Artificial Intelligence, University of Stuttgart" . + +# ============================================================================= +# Classes — domain-specific +# ============================================================================= + +tm:Migration a owl:Class ; + rdfs:label "Migration"@en ; + rdfs:comment "A migration event recording the movement of a person from one place to another."@en ; + rdfs:isDefinedBy . + +tm:Work a owl:Class ; + rdfs:label "Work"@en ; + rdfs:comment "A professional engagement of a person at an organisation in a given location and time period."@en ; + rdfs:isDefinedBy . + +tm:Relationship a owl:Class ; + rdfs:label "Relationship"@en ; + rdfs:comment "An interpersonal relationship between two persons."@en ; + rdfs:isDefinedBy . + +tm:PersonProfession a owl:Class ; + rdfs:label "PersonProfession"@en ; + rdfs:comment "An association between a person and a profession label."@en ; + rdfs:isDefinedBy . + +tm:PersonName a owl:Class ; + rdfs:label "PersonName"@en ; + rdfs:comment "An alternative or historical name for a person, optionally typed and time-bounded."@en ; + rdfs:isDefinedBy . + +tm:ReligionAffiliation a owl:Class ; + rdfs:label "ReligionAffiliation"@en ; + rdfs:comment "A person's affiliation with a religion during a given period."@en ; + rdfs:isDefinedBy . + +tm:ImportSource a owl:Class ; + rdfs:label "ImportSource"@en ; + rdfs:comment "The provenance source from which a person record was imported."@en ; + rdfs:isDefinedBy . + +# ============================================================================= +# Classes — enumeration types (subclasses of skos:Concept) +# ============================================================================= + +tm:Continent a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "Continent"@en ; + rdfs:isDefinedBy . + +tm:Country a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "Country"@en ; + rdfs:isDefinedBy . + +tm:State a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "State"@en ; + rdfs:isDefinedBy . + +tm:City a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "City"@en ; + rdfs:isDefinedBy . + +tm:MigrationReason a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "MigrationReason"@en ; + rdfs:isDefinedBy . + +tm:InstitutionType a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "InstitutionType"@en ; + rdfs:isDefinedBy . + +tm:NameType a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "NameType"@en ; + rdfs:isDefinedBy . + +tm:RelationshipType a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "RelationshipType"@en ; + rdfs:isDefinedBy . + +tm:RelationshipTypePrecise a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "RelationshipTypePrecise"@en ; + rdfs:isDefinedBy . + +tm:Religion a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "Religion"@en ; + rdfs:isDefinedBy . + +tm:Profession a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "Profession"@en ; + rdfs:isDefinedBy . + +tm:EmploymentType a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:label "EmploymentType"@en ; + rdfs:isDefinedBy . + +# ============================================================================= +# Object properties — Person +# ============================================================================= + +tm:importSource a owl:ObjectProperty ; + rdfs:label "importSource"@en ; + rdfs:comment "The provenance source from which this person record was imported."@en ; + rdfs:domain schema:Person ; + rdfs:range tm:ImportSource ; + rdfs:isDefinedBy . + +tm:continent a owl:ObjectProperty ; + rdfs:label "continent"@en ; + rdfs:domain schema:Place ; + rdfs:range tm:Continent ; + rdfs:isDefinedBy . + +tm:country a owl:ObjectProperty ; + rdfs:label "country"@en ; + rdfs:domain schema:Place ; + rdfs:range tm:Country ; + rdfs:isDefinedBy . + +tm:state a owl:ObjectProperty ; + rdfs:label "state"@en ; + rdfs:domain schema:Place ; + rdfs:range tm:State ; + rdfs:isDefinedBy . + +tm:city a owl:ObjectProperty ; + rdfs:label "city"@en ; + rdfs:domain schema:Place ; + rdfs:range tm:City ; + rdfs:isDefinedBy . + +tm:institutionType a owl:ObjectProperty ; + rdfs:label "institutionType"@en ; + rdfs:domain schema:Organization ; + rdfs:range tm:InstitutionType ; + rdfs:isDefinedBy . + +# ============================================================================= +# Object properties — Migration +# ============================================================================= + +tm:migrant a owl:ObjectProperty ; + rdfs:label "migrant"@en ; + rdfs:comment "The person who migrated."@en ; + rdfs:domain tm:Migration ; + rdfs:range schema:Person ; + rdfs:isDefinedBy . + +tm:startPlace a owl:ObjectProperty ; + rdfs:label "startPlace"@en ; + rdfs:comment "The place from which the migration started."@en ; + rdfs:domain tm:Migration ; + rdfs:range schema:Place ; + rdfs:isDefinedBy . + +tm:destinationPlace a owl:ObjectProperty ; + rdfs:label "destinationPlace"@en ; + rdfs:comment "The place to which the person migrated."@en ; + rdfs:domain tm:Migration ; + rdfs:range schema:Place ; + rdfs:isDefinedBy . + +tm:reason a owl:ObjectProperty ; + rdfs:label "reason"@en ; + rdfs:comment "The primary reason for this migration."@en ; + rdfs:domain tm:Migration ; + rdfs:range tm:MigrationReason ; + rdfs:isDefinedBy . + +tm:secondaryReason a owl:ObjectProperty ; + rdfs:label "secondaryReason"@en ; + rdfs:comment "A secondary reason for this migration."@en ; + rdfs:domain tm:Migration ; + rdfs:range tm:MigrationReason ; + rdfs:isDefinedBy . + +# ============================================================================= +# Object properties — Work +# ============================================================================= + +tm:worker a owl:ObjectProperty ; + rdfs:label "worker"@en ; + rdfs:comment "The person engaged in this work."@en ; + rdfs:domain tm:Work ; + rdfs:range schema:Person ; + rdfs:isDefinedBy . + +tm:workLocation a owl:ObjectProperty ; + rdfs:label "workLocation"@en ; + rdfs:comment "The place where this work engagement took place."@en ; + rdfs:domain tm:Work ; + rdfs:range schema:Place ; + rdfs:isDefinedBy . + +tm:workOrganisation a owl:ObjectProperty ; + rdfs:label "workOrganisation"@en ; + rdfs:comment "The primary organisation where this work engagement took place."@en ; + rdfs:domain tm:Work ; + rdfs:range schema:Organization ; + rdfs:isDefinedBy . + +tm:secondaryOrganisation a owl:ObjectProperty ; + rdfs:label "secondaryOrganisation"@en ; + rdfs:comment "A secondary organisation associated with this work engagement."@en ; + rdfs:domain tm:Work ; + rdfs:range schema:Organization ; + rdfs:isDefinedBy . + +tm:profession a owl:ObjectProperty ; + rdfs:label "profession"@en ; + rdfs:comment "The primary profession exercised in this work engagement."@en ; + rdfs:domain tm:Work ; + rdfs:range tm:Profession ; + rdfs:isDefinedBy . + +tm:secondaryProfession a owl:ObjectProperty ; + rdfs:label "secondaryProfession"@en ; + rdfs:domain tm:Work ; + rdfs:range tm:Profession ; + rdfs:isDefinedBy . + +tm:tertiaryProfession a owl:ObjectProperty ; + rdfs:label "tertiaryProfession"@en ; + rdfs:domain tm:Work ; + rdfs:range tm:Profession ; + rdfs:isDefinedBy . + +tm:employmentType a owl:ObjectProperty ; + rdfs:label "employmentType"@en ; + rdfs:domain tm:Work ; + rdfs:range tm:EmploymentType ; + rdfs:isDefinedBy . + +# ============================================================================= +# Object properties — Relationship +# ============================================================================= + +tm:activePerson a owl:ObjectProperty ; + rdfs:label "activePerson"@en ; + rdfs:comment "The person from whose perspective the relationship is described."@en ; + rdfs:domain tm:Relationship ; + rdfs:range schema:Person ; + rdfs:isDefinedBy . + +tm:passivePerson a owl:ObjectProperty ; + rdfs:label "passivePerson"@en ; + rdfs:comment "The other person in the relationship."@en ; + rdfs:domain tm:Relationship ; + rdfs:range schema:Person ; + rdfs:isDefinedBy . + +tm:relationshipLocation a owl:ObjectProperty ; + rdfs:label "relationshipLocation"@en ; + rdfs:domain tm:Relationship ; + rdfs:range schema:Place ; + rdfs:isDefinedBy . + +tm:relationshipOrganisation a owl:ObjectProperty ; + rdfs:label "relationshipOrganisation"@en ; + rdfs:domain tm:Relationship ; + rdfs:range schema:Organization ; + rdfs:isDefinedBy . + +tm:relationshipType a owl:ObjectProperty ; + rdfs:label "relationshipType"@en ; + rdfs:domain tm:Relationship ; + rdfs:range tm:RelationshipType ; + rdfs:isDefinedBy . + +tm:relationshipTypePrecise a owl:ObjectProperty ; + rdfs:label "relationshipTypePrecise"@en ; + rdfs:domain tm:Relationship ; + rdfs:range tm:RelationshipTypePrecise ; + rdfs:isDefinedBy . + +# ============================================================================= +# Object properties — PersonProfession +# ============================================================================= + +tm:personProfessionPerson a owl:ObjectProperty ; + rdfs:label "person"@en ; + rdfs:comment "The person associated with this profession record."@en ; + rdfs:domain tm:PersonProfession ; + rdfs:range schema:Person ; + rdfs:isDefinedBy . + +tm:enumeratedProfession a owl:ObjectProperty ; + rdfs:label "enumeratedProfession"@en ; + rdfs:comment "The enumerated profession value associated with this record."@en ; + rdfs:domain tm:PersonProfession ; + rdfs:range tm:Profession ; + rdfs:isDefinedBy . + +# ============================================================================= +# Object properties — PersonName +# ============================================================================= + +tm:personNamePerson a owl:ObjectProperty ; + rdfs:label "person"@en ; + rdfs:comment "The person associated with this name record."@en ; + rdfs:domain tm:PersonName ; + rdfs:range schema:Person ; + rdfs:isDefinedBy . + +tm:nameType a owl:ObjectProperty ; + rdfs:label "nameType"@en ; + rdfs:domain tm:PersonName ; + rdfs:range tm:NameType ; + rdfs:isDefinedBy . + +# ============================================================================= +# Object properties — ReligionAffiliation +# ============================================================================= + +tm:religionAffiliationPerson a owl:ObjectProperty ; + rdfs:label "person"@en ; + rdfs:comment "The person associated with this religion affiliation."@en ; + rdfs:domain tm:ReligionAffiliation ; + rdfs:range schema:Person ; + rdfs:isDefinedBy . + +tm:religion a owl:ObjectProperty ; + rdfs:label "religion"@en ; + rdfs:domain tm:ReligionAffiliation ; + rdfs:range tm:Religion ; + rdfs:isDefinedBy . + +# ============================================================================= +# Datatype properties — Person +# ============================================================================= + +tm:birthDateMax a owl:DatatypeProperty ; + rdfs:label "birthDateMax"@en ; + rdfs:comment "Upper bound of the birth date when the exact date is uncertain."@en ; + rdfs:domain schema:Person ; + rdfs:range xsd:date ; + rdfs:isDefinedBy . + +tm:deathDateMax a owl:DatatypeProperty ; + rdfs:label "deathDateMax"@en ; + rdfs:comment "Upper bound of the death date when the exact date is uncertain."@en ; + rdfs:domain schema:Person ; + rdfs:range xsd:date ; + rdfs:isDefinedBy . + +tm:fuzzyBirthDate a owl:DatatypeProperty ; + rdfs:label "fuzzyBirthDate"@en ; + rdfs:comment "Free-text representation of an uncertain birth date."@en ; + rdfs:domain schema:Person ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +tm:fuzzyDeathDate a owl:DatatypeProperty ; + rdfs:label "fuzzyDeathDate"@en ; + rdfs:comment "Free-text representation of an uncertain death date."@en ; + rdfs:domain schema:Person ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +tm:birthInfo a owl:DatatypeProperty ; + rdfs:label "birthInfo"@en ; + rdfs:comment "Additional textual information about the birth."@en ; + rdfs:domain schema:Person ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +tm:deathInfo a owl:DatatypeProperty ; + rdfs:label "deathInfo"@en ; + rdfs:comment "Additional textual information about the death."@en ; + rdfs:domain schema:Person ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +tm:religionLabel a owl:DatatypeProperty ; + rdfs:label "religionLabel"@en ; + rdfs:comment "Free-text religion label on the person record."@en ; + rdfs:domain schema:Person ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +tm:imageSource a owl:DatatypeProperty ; + rdfs:label "imageSource"@en ; + rdfs:comment "URI of the source from which the person's image was obtained."@en ; + rdfs:domain schema:Person ; + rdfs:range xsd:anyURI ; + rdfs:isDefinedBy . + +# ============================================================================= +# Datatype properties — Place +# ============================================================================= + +tm:geoNamesID a owl:DatatypeProperty ; + rdfs:label "GeoNamesID"@en ; + rdfs:comment "The GeoNames identifier for this place."@en ; + rdfs:domain schema:Place ; + rdfs:range xsd:integer ; + rdfs:isDefinedBy . + +# ============================================================================= +# Datatype properties — shared temporal properties +# +# The following properties model temporal uncertainty. Events (Migration, +# Work, Relationship, PersonName, ReligionAffiliation) may have imprecise +# dates expressed as min/max bounds or fuzzy strings. +# ============================================================================= + +tm:dateStartMin a owl:DatatypeProperty ; + rdfs:label "dateStartMin"@en ; + rdfs:comment "Lower bound of the start date."@en ; + rdfs:range xsd:date ; + rdfs:isDefinedBy . + +tm:dateStartMax a owl:DatatypeProperty ; + rdfs:label "dateStartMax"@en ; + rdfs:comment "Upper bound of the start date."@en ; + rdfs:range xsd:date ; + rdfs:isDefinedBy . + +tm:dateEndMin a owl:DatatypeProperty ; + rdfs:label "dateEndMin"@en ; + rdfs:comment "Lower bound of the end date."@en ; + rdfs:range xsd:date ; + rdfs:isDefinedBy . + +tm:dateEndMax a owl:DatatypeProperty ; + rdfs:label "dateEndMax"@en ; + rdfs:comment "Upper bound of the end date."@en ; + rdfs:range xsd:date ; + rdfs:isDefinedBy . + +tm:dateStartFuzzy a owl:DatatypeProperty ; + rdfs:label "dateStartFuzzy"@en ; + rdfs:comment "Free-text representation of an uncertain start date."@en ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +tm:dateEndFuzzy a owl:DatatypeProperty ; + rdfs:label "dateEndFuzzy"@en ; + rdfs:comment "Free-text representation of an uncertain end date."@en ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +# ============================================================================= +# Datatype properties — Migration +# ============================================================================= + +tm:via a owl:DatatypeProperty ; + rdfs:label "via"@en ; + rdfs:comment "An intermediate place or route description for the migration."@en ; + rdfs:domain tm:Migration ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +# ============================================================================= +# Datatype properties — Work +# ============================================================================= + +tm:employment a owl:DatatypeProperty ; + rdfs:label "employment"@en ; + rdfs:comment "Description of the employment arrangement."@en ; + rdfs:domain tm:Work ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +# ============================================================================= +# Datatype properties — Relationship +# ============================================================================= + +tm:timePeriod a owl:DatatypeProperty ; + rdfs:label "timePeriod"@en ; + rdfs:comment "Free-text description of the time period of the relationship."@en ; + rdfs:domain tm:Relationship ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +# ============================================================================= +# Datatype properties — PersonProfession +# ============================================================================= + +tm:professionLabel a owl:DatatypeProperty ; + rdfs:label "professionLabel"@en ; + rdfs:comment "Free-text label of the profession."@en ; + rdfs:domain tm:PersonProfession ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +# ============================================================================= +# Datatype properties — PersonName +# ============================================================================= + +tm:personName a owl:DatatypeProperty ; + rdfs:label "personName"@en ; + rdfs:comment "The given name in this name record."@en ; + rdfs:domain tm:PersonName ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +tm:personSurName a owl:DatatypeProperty ; + rdfs:label "personSurName"@en ; + rdfs:comment "The surname in this name record."@en ; + rdfs:domain tm:PersonName ; + rdfs:range xsd:string ; + rdfs:isDefinedBy . + +# ============================================================================= +# Datatype properties — ReligionAffiliation +# ============================================================================= + +tm:denomination a owl:DatatypeProperty ; + rdfs:label "denomination"@en ; + rdfs:comment "The specific denomination within the religion."@en ; + rdfs:domain tm:ReligionAffiliation ; + rdfs:range xsd:string ; + rdfs:isDefinedBy .