@prefix : <https://w3id.org/citydata/part2/v1/> .
@prefix cc: <http://creativecommons.org/ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix time: <http://www.w3.org/2006/time#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix cdm1: <https://w3id.org/citydata/part1/v1/> .
@prefix schema: <http://schema.org/> .
@base <https://w3id.org/citydata/part2/v1/> .

<https://w3id.org/citydata/part2/v1/PersonPattern> rdf:type owl:Ontology ;
                                                    owl:imports :ContactPattern ;
                                                    cc:license "http://creativecommons.org/licenses/by/4.0/" ;
                                                    dcterms:creator "Kenneth Vaughn" ,
                                                                    "Mark Fox" ,
                                                                    "Megan Katsumi" ;
                                                    dcterms:modified "2026-02-12"^^xsd:date ;
                                                    dcterms:title "Information technology - City data model - Part 2: City level concepts - Person pattern" ;
                                                    dcterms:bibliographicCitation "ISO/IEC 5087-2:2024" ;
                                                    vann:preferredNamespacePrefix "cdm2" ;
                                                    vann:preferredNamespaceUri "https://w3id.org/citydata/part2/v1/" ;
                                                    rdfs:seeAlso <https://www.iso.org/standard/80742.html> ;
                                                    rdfs:comment "The prior version of this ontology used a different ontology IRI. This update remains semantically consistent with the version adopted as ISO 5087-2:2024." ;
                                                    owl:priorVersion <https://standards.iso.org/iso-iec/5087/-2/ed-1/en/ontology/Person/> ;
                                                    owl:versionIRI <https://w3id.org/citydata/part2/v1/PersonPattern/r3.0/> ;
                                                    owl:versionInfo "1.3.0" ;
                                                    skos:definition "This ontology specifies the city-level concepts for the person pattern of the city data model." .

#################################################################
#    Object Properties
#################################################################

###  https://w3id.org/citydata/part2/v1/PersonObjectProperty
:PersonObjectProperty rdf:type owl:ObjectProperty ;
                      rdfs:subPropertyOf :CityObjectProperty ;
                      skos:definition "Added for organizational purposes, to identify object properties defined for the Person Pattern in the City-level CDM ontology." .


###  https://w3id.org/citydata/part2/v1/alias
:alias rdf:type owl:ObjectProperty ;
       rdfs:subPropertyOf :PersonObjectProperty ;
       rdfs:range :Name ;
       skos:definition "Identifies any alternative names associated with a Person. " ;
       skos:note "A Person can only have one legal name, but can have multiple alias names." .


###  https://w3id.org/citydata/part2/v1/birthDate
:birthDate rdf:type owl:ObjectProperty ;
           rdfs:subPropertyOf :PersonObjectProperty ;
           rdfs:range time:Instant ;
           skos:definition "Identifies the time:Instant when the Person was born." ;
           cdm1:isInvariant true .


###  https://w3id.org/citydata/part2/v1/birthplace
:birthplace rdf:type owl:ObjectProperty ;
            rdfs:subPropertyOf :PersonObjectProperty ;
            rdfs:range :Address ;
            skos:definition "Identifies the place where the Person was born." .


###  https://w3id.org/citydata/part2/v1/children
:children rdf:type owl:ObjectProperty ;
          rdfs:subPropertyOf :PersonObjectProperty ;
          rdfs:range :Person ;
          skos:definition "Identifies any children of a person." .


###  https://w3id.org/citydata/part2/v1/citizenOf
:citizenOf rdf:type owl:ObjectProperty ;
           rdfs:subPropertyOf :PersonObjectProperty ;
           rdfs:range :Citizenship ;
           skos:definition "specifies one or more Citizenships, each specifying the country (Country) and time interval (time:ProperInterval) the Person is a citizen. A Person can be a citizen of more than one country and for different time intervals. It is recommended that a Country be defined with using ISO 3166-2 [4] alpha-2 (2-letter) country code, however different systems may be accommodated with the Code pattern." .


###  https://w3id.org/citydata/part2/v1/deathDate
:deathDate rdf:type owl:ObjectProperty ;
           rdfs:subPropertyOf :PersonObjectProperty ;
           rdfs:range time:Instant ;
           skos:definition "Identifies the time:Instant when the Person died." .


###  https://w3id.org/citydata/part2/v1/deathPlace
:deathPlace rdf:type owl:ObjectProperty ;
            rdfs:subPropertyOf :PersonObjectProperty ;
            rdfs:range :Address ;
            skos:definition "Identifies the place where the Person died." .


###  https://w3id.org/citydata/part2/v1/forCountry
:forCountry rdf:type owl:ObjectProperty ;
            rdfs:subPropertyOf :PersonObjectProperty ;
            rdfs:range :Country ;
            skos:definition "Identifies the country for which the Person is a citizen for the given dates." .


###  https://w3id.org/citydata/part2/v1/hasEducation
:hasEducation rdf:type owl:ObjectProperty ;
              rdfs:subPropertyOf :PersonObjectProperty ;
              rdfs:range :Education ;
              skos:definition "Identifies the education of a person." .


###  https://w3id.org/citydata/part2/v1/hasGenderIdentity
:hasGenderIdentity rdf:type owl:ObjectProperty ;
                   rdfs:subPropertyOf :PersonObjectProperty ;
                   rdfs:range :Gender ;
                   skos:definition "Identifies the gender identity of a person." .


###  https://w3id.org/citydata/part2/v1/hasIDType
:hasIDType rdf:type owl:ObjectProperty ;
           rdfs:subPropertyOf :PersonObjectProperty ;
           rdfs:range :IDType ;
           skos:definition "Specifies the type of identifier, its values may be defined more precisely with the use of the code:hasCode property." .


###  https://w3id.org/citydata/part2/v1/hasPersonID
:hasPersonID rdf:type owl:ObjectProperty ;
             rdfs:subPropertyOf :PersonObjectProperty ;
             rdfs:range :PersonId ;
             skos:definition "Identifies any instances of a Person’s PersonId." ;
             skos:example "driver's license" ,
                          "passport" ;
             cdm1:isInvariant true .


###  https://w3id.org/citydata/part2/v1/hasQualification
:hasQualification rdf:type owl:ObjectProperty ;
                  rdfs:subPropertyOf :CityObjectProperty .


###  https://w3id.org/citydata/part2/v1/hasSkill
:hasSkill rdf:type owl:ObjectProperty ;
          rdfs:subPropertyOf :PersonObjectProperty ;
          rdfs:range :Skill ;
          skos:definition "Identifies the skills of a person." .


###  https://w3id.org/citydata/part2/v1/income
:income rdf:type owl:ObjectProperty ;
        rdfs:subPropertyOf :PersonObjectProperty ;
        rdfs:range cdm1:MonetaryValue ;
        skos:definition "Identifies the annual income of a person." .


###  https://w3id.org/citydata/part2/v1/issuedBy
:issuedBy rdf:type owl:ObjectProperty ;
          rdfs:subPropertyOf :PersonObjectProperty ;
          rdfs:range cdm1:Agent ;
          skos:definition "Identifies the Agent that issued the ID, document, or certificate." .


###  https://w3id.org/citydata/part2/v1/name
:name rdf:type owl:ObjectProperty ;
      rdfs:subPropertyOf :CityObjectProperty ;
      rdfs:range :Name ;
      skos:definition "Identifies the instance of Name legally associated with an Object (e.g., Person)." .


###  https://w3id.org/citydata/part2/v1/parent
:parent rdf:type owl:ObjectProperty ;
        rdfs:subPropertyOf :PersonObjectProperty ;
        rdfs:range :Person ;
        skos:definition "Identifies any parents of the Person." ;
        skos:note "The parent relation is broadly defined and can include legal and biological relations." .


###  https://w3id.org/citydata/part2/v1/sex
:sex rdf:type owl:ObjectProperty ;
     rdfs:subPropertyOf :PersonObjectProperty ;
     skos:definition "Identifies a Person's sex assigned at birth." ;
     skos:closeMatch schema:gender ;
     skos:note "Sex is typically assigned based on a person's reproductive system and other physical characteristics. The definition of sex is distinct from that of a person’s gender; a Person is associated with at most one sex." ;
     cdm1:isInvariant true .


###  https://w3id.org/citydata/part2/v1/spouse
:spouse rdf:type owl:ObjectProperty ;
        rdfs:subPropertyOf :PersonObjectProperty ;
        rdfs:range :Person ;
        skos:definition "Identifies any spouses of the person." .


###  https://w3id.org/citydata/part2/v1/validityPeriod
:validityPeriod rdf:type owl:ObjectProperty ;
                rdfs:subPropertyOf time:hasTime ,
                                   :PersonObjectProperty ;
                skos:definition "Identifies the time interval during which the identifier is valid." .


#################################################################
#    Data properties
#################################################################

###  https://w3id.org/citydata/part2/v1/PersonDataProperty
:PersonDataProperty rdf:type owl:DatatypeProperty ;
                    rdfs:subPropertyOf :CityDataProperty ;
                    skos:definition "Added for organizational purposes, to identify data properties defined in the Person Pattern." .


###  https://w3id.org/citydata/part2/v1/additionalName
:additionalName rdf:type owl:DatatypeProperty ;
                rdfs:subPropertyOf :PersonDataProperty ;
                rdfs:domain :PersonName ;
                rdfs:range xsd:string ;
                skos:definition "Identifies a string that is the middle or additional names of the Person." .


###  https://w3id.org/citydata/part2/v1/familyName
:familyName rdf:type owl:DatatypeProperty ;
            rdfs:subPropertyOf :PersonDataProperty ;
            rdfs:domain :PersonName ;
            rdfs:range xsd:string ;
            skos:definition "Identifies as single string that is the family or last name of the Person." .


###  https://w3id.org/citydata/part2/v1/givenName
:givenName rdf:type owl:DatatypeProperty ;
           rdfs:subPropertyOf :PersonDataProperty ;
           rdfs:domain :PersonName ;
           rdfs:range xsd:string ;
           skos:definition "Identifies a string that is the given or first name of the Person." .


###  https://w3id.org/citydata/part2/v1/photoID
:photoID rdf:type owl:DatatypeProperty ;
         rdfs:subPropertyOf :PersonDataProperty ;
         rdfs:domain :Person ;
         rdfs:range xsd:boolean ;
         skos:definition "Specifies whether the identifier contains a photo." .


#################################################################
#    Classes
#################################################################

###  https://w3id.org/citydata/part2/v1/Citizenship
:Citizenship rdf:type owl:Class ;
             rdfs:subClassOf :PersonThing ,
                             [ rdf:type owl:Restriction ;
                               owl:onProperty :forCountry ;
                               owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                               owl:onClass :Country
                             ] ,
                             [ rdf:type owl:Restriction ;
                               owl:onProperty :validityPeriod ;
                               owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                               owl:onClass time:ProperInterval
                             ] ;
             skos:definition "Citizenship is a type of City Thing that indicates the country of citizenship for a person during a specific period." .


###  https://w3id.org/citydata/part2/v1/Education
:Education rdf:type owl:Class ;
           rdfs:subClassOf :PersonThing ,
                           [ rdf:type owl:Restriction ;
                             owl:onProperty :hasCode ;
                             owl:allValuesFrom :Code
                           ] ;
           skos:definition "Education is a type of Code that describes the educational background of a person." .


###  https://w3id.org/citydata/part2/v1/Gender
:Gender rdf:type owl:Class ;
        rdfs:subClassOf :PersonThing ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :hasCode ;
                          owl:allValuesFrom :Code
                        ] ;
        skos:definition "Gender is a type of Code that describes the gender identity of a person." .


###  https://w3id.org/citydata/part2/v1/IDType
:IDType rdf:type owl:Class ;
        rdfs:subClassOf :PersonThing ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :hasCode ;
                          owl:allValuesFrom :Code
                        ] ;
        skos:definition "ID Type is a type of Code that describes the type of identification document issued to a person." .


###  https://w3id.org/citydata/part2/v1/Name
:Name rdf:type owl:Class ;
      rdfs:subClassOf :CityThing ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty cdm1:hasName ;
                        owl:allValuesFrom xsd:string
                      ] ;
      skos:definition "A Name represents a formal name given to an entity and is a superclass for all more descriptive name types." .


###  https://w3id.org/citydata/part2/v1/Person
:Person rdf:type owl:Class ;
        rdfs:subClassOf cdm1:Agent ,
                        :PersonThing ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :alias ;
                          owl:allValuesFrom :PersonName
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :children ;
                          owl:allValuesFrom :Person
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :citizenOf ;
                          owl:allValuesFrom :Citizenship
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :hasAddress ;
                          owl:allValuesFrom :Address
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :hasEducation ;
                          owl:allValuesFrom :Education
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :hasEmail ;
                          owl:allValuesFrom :EmailAddress
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :hasGenderIdentity ;
                          owl:allValuesFrom :Gender
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :hasPersonID ;
                          owl:allValuesFrom :PersonId
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :hasSkill ;
                          owl:allValuesFrom :Skill
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :hasTelephone ;
                          owl:allValuesFrom :PhoneNumber
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :income ;
                          owl:allValuesFrom cdm1:MonetaryValue
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :parent ;
                          owl:allValuesFrom :Person
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :spouse ;
                          owl:allValuesFrom :Person
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :birthDate ;
                          owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                          owl:onClass time:Instant
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :birthplace ;
                          owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                          owl:onClass :Address
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :deathDate ;
                          owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                          owl:onClass time:Instant
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :deathPlace ;
                          owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                          owl:onClass :Address
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :name ;
                          owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                          owl:onClass :PersonName
                        ] ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :sex ;
                          owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                          owl:onClass :Sex
                        ] ;
        skos:definition "A Person is an individual human being." ;
        skos:note "Some properties are not defined in the Person ontology, but in an extension of the Person ontology that captures the interaction between iCity domain ontologies (e.g. Persons and their Vehicles)" .


###  https://w3id.org/citydata/part2/v1/PersonId
:PersonId rdf:type owl:Class ;
          rdfs:subClassOf :PersonThing ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :hasIDType ;
                            owl:allValuesFrom :IDType
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty cdm1:hasIdentifier ;
                            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onDataRange xsd:string
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :issuedBy ;
                            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass cdm1:Agent
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :photoID ;
                            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onDataRange xsd:boolean
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :validityPeriod ;
                            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass time:Interval
                          ] ;
          skos:definition "Person ID is a type of City Thing that represents an identification document issued to a person by an authoritative body." .


###  https://w3id.org/citydata/part2/v1/PersonName
:PersonName rdf:type owl:Class ;
            rdfs:subClassOf :Name ,
                            :PersonThing ,
                            [ rdf:type owl:Restriction ;
                              owl:onProperty :additionalName ;
                              owl:allValuesFrom xsd:string
                            ] ,
                            [ rdf:type owl:Restriction ;
                              owl:onProperty :givenName ;
                              owl:allValuesFrom xsd:string
                            ] ,
                            [ rdf:type owl:Restriction ;
                              owl:onProperty :familyName ;
                              owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                              owl:onDataRange xsd:string
                            ] .


###  https://w3id.org/citydata/part2/v1/PersonThing
:PersonThing rdf:type owl:Class ;
             rdfs:subClassOf :CityThing ;
             skos:definition "Added for organizational purposes, to identify classes defined in the Person ontology." .


###  https://w3id.org/citydata/part2/v1/Sex
:Sex rdf:type owl:Class ;
     rdfs:subClassOf :PersonThing ,
                     [ rdf:type owl:Restriction ;
                       owl:onProperty :hasCode ;
                       owl:allValuesFrom :Code
                     ] ;
     skos:definition "Sex is a type of Code that describes the biological sex of a person." .


###  https://w3id.org/citydata/part2/v1/Skill
:Skill rdf:type owl:Class ;
       rdfs:subClassOf :PersonThing ,
                       [ rdf:type owl:Restriction ;
                         owl:onProperty :hasCode ;
                         owl:allValuesFrom :Code
                       ] ;
       skos:definition "Skill is a type of Code that describes a specific ability or competency of a person." .
