@prefix : <https://w3id.org/citydata/part3/v1/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@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 geo: <http://www.opengis.net/ont/geosparql#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix cdm1: <https://w3id.org/citydata/part1/v1/> .
@prefix cdm2: <https://w3id.org/citydata/part2/v1/> .
@prefix dash: <http://datashapes.org/dash#> .
@base <https://w3id.org/citydata/part3/v1/> .

<https://w3id.org/citydata/part3/v1/TransportNetworkPattern> rdf:type owl:Ontology ;
                                                              owl:imports cdm2:TransportInfrastructurePattern ,
                                                                          :CorePattern ;
                                                              dcterms:license <http://creativecommons.org/licenses/by/4.0/> ;
                                                              dcterms:creator "Kenneth Vaughn" ,
                                                                              "Mark Fox" ,
                                                                              "Megan Katsumi" ,
                                                                              "Tom Lusco" ;
                                                              dcterms:modified "2026-02-13"^^xsd:date ;
                                                              dcterms:title "Information technology - City data model - Part 3: Service-level concepts for transport - Transport network pattern" ;
                                                              vann:preferredNamespacePrefix "cdm3" ;
                                                              vann:preferredNamespaceUri "https://w3id.org/citydata/part3/v1/" ;
                                                              owl:versionIRI <https://w3id.org/citydata/part3/v1/TransportNetworkPattern/r0.0/> ;
                                                              owl:versionInfo "1.0.0" ;
                                                              skos:definition "This ontology specifies the transport network pattern of the transport service of the city data model."@en .

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

###  https://w3id.org/citydata/part3/v1/TransportNetworkObjectProperty
:TransportNetworkObjectProperty rdf:type owl:ObjectProperty ;
                                rdfs:subPropertyOf :ITSObjectProperty ;
                                skos:definition "Added for organizational purposes, to identify all object properties defined in the Transport Network Pattern."@en .


###  https://w3id.org/citydata/part3/v1/allowedDirections
:allowedDirections rdf:type owl:ObjectProperty ;
                   rdfs:subPropertyOf :TransportNetworkObjectProperty ;
                   rdfs:range cdm2:Code ;
                   skos:definition "A code list indicating the allowed directions for a particular line."@en .


###  https://w3id.org/citydata/part3/v1/egress
:egress rdf:type owl:ObjectProperty ;
        rdfs:subPropertyOf :TransportNetworkObjectProperty ;
        rdfs:range cdm2:TravelledWayLink ;
        skos:definition "An exit link from a node."@en .


###  https://w3id.org/citydata/part3/v1/from
:from rdf:type owl:ObjectProperty ;
      rdfs:subPropertyOf :TransportNetworkObjectProperty ;
      rdfs:range :TransportNode ;
      skos:definition "the starting node of a link."@en .


###  https://w3id.org/citydata/part3/v1/ingress
:ingress rdf:type owl:ObjectProperty ;
         rdfs:subPropertyOf :TransportNetworkObjectProperty ;
         rdfs:range cdm2:TravelledWayLink ;
         skos:definition "An entry link to a node."@en .


###  https://w3id.org/citydata/part3/v1/status
:status rdf:type owl:ObjectProperty ;
        rdfs:subPropertyOf :TransportNetworkObjectProperty ;
        rdfs:range cdm2:Code ;
        skos:definition "The operational status."@en .


###  https://w3id.org/citydata/part3/v1/timeInterval
:timeInterval rdf:type owl:ObjectProperty ;
              rdfs:subPropertyOf :TransportNetworkObjectProperty ;
              rdfs:range time:DateTimeInterval ;
              skos:definition "The time interval during which the code applies."@en .


###  https://w3id.org/citydata/part3/v1/to
:to rdf:type owl:ObjectProperty ;
    rdfs:subPropertyOf :TransportNetworkObjectProperty ;
    rdfs:range :TransportNode ;
    skos:definition "The end node of a link."@en .


###  https://w3id.org/citydata/part3/v1/travelCorridorSegment
:travelCorridorSegment rdf:type owl:ObjectProperty ;
                       rdfs:subPropertyOf :TransportNetworkObjectProperty ;
                       rdfs:range :TravelCorridorSegment ;
                       skos:definition "TravelCorridorSegments to which this TravelledWaySegment is associated."@en .


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

###  https://w3id.org/citydata/part3/v1/TransportNetworkDataProperty
:TransportNetworkDataProperty rdf:type owl:DatatypeProperty ;
                              rdfs:subPropertyOf :ITSDataProperty ;
                              skos:definition "Added for organizational purposes, to identify all data properties defined in the Transport Network Pattern."@en .


###  https://w3id.org/citydata/part3/v1/designator
:designator rdf:type owl:DatatypeProperty ;
            rdfs:subPropertyOf :TransportNetworkDataProperty ;
            rdfs:range xsd:string ;
            skos:definition "A name assigned to the object."@en .


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

###  https://w3id.org/citydata/part3/v1/Junction
:Junction rdf:type owl:Class ;
          rdfs:subClassOf :TransportNode ;
          skos:definition "A Junction is a TransportNode that allows a traveller to connect from one TravelledWayLink to another."@en ;
          xsd:pattern "TransportNetworkPattern" .


###  https://w3id.org/citydata/part3/v1/NetworkElement
:NetworkElement rdf:type owl:Class ;
                rdfs:subClassOf geo:Feature ,
                                cdm2:InfrastructureElement ,
                                :TransportNetworkThing ,
                                [ rdf:type owl:Restriction ;
                                  owl:onProperty cdm1:hasIdentifier ;
                                  owl:allValuesFrom xsd:string
                                ] ,
                                [ rdf:type owl:Restriction ;
                                  owl:onProperty cdm1:hasProperPart ;
                                  owl:allValuesFrom :NetworkElement
                                ] ,
                                [ rdf:type owl:Restriction ;
                                  owl:onProperty cdm1:properPartOf ;
                                  owl:allValuesFrom :NetworkElement
                                ] ,
                                [ rdf:type owl:Restriction ;
                                  owl:onProperty :status ;
                                  owl:allValuesFrom :ScheduledCode
                                ] ,
                                [ rdf:type owl:Restriction ;
                                  owl:onProperty cdm1:hasIdentifier ;
                                  owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                  owl:onDataRange xsd:string
                                ] ;
                skos:definition "A NetworkElement represents any element of a transport network. It can be a part of another NetworkElement and can be decomposed into smaller NetworkElements."@en ;
                dash:abstract true ;
                xsd:pattern "TransportNetworkPattern" .


###  https://w3id.org/citydata/part3/v1/ScheduledCode
:ScheduledCode rdf:type owl:Class ;
               rdfs:subClassOf cdm2:Code ,
                               :ITSThing ,
                               [ rdf:type owl:Restriction ;
                                 owl:onProperty :timeInterval ;
                                 owl:allValuesFrom time:DateTimeInterval
                               ] ,
                               [ rdf:type owl:Restriction ;
                                 owl:onProperty :timeInterval ;
                                 owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                 owl:onClass time:DateTimeInterval
                               ] ;
               skos:definition "The operational status of an entity, e.g., open or closed."@en ;
               xsd:pattern "TransportNetworkPattern" .


###  https://w3id.org/citydata/part3/v1/TransportNetwork
:TransportNetwork rdf:type owl:Class ;
                  rdfs:subClassOf :NetworkElement ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty cdm1:hasProperPart ;
                                    owl:allValuesFrom [ rdf:type owl:Class ;
                                      owl:unionOf ( :TransportNetwork
                                        :TransportNode
                                        :TravelledWay
                                        :TravelledWayLink
                                        :TravelledWaySection
                                      )
                                    ]
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty cdm1:properPartOf ;
                                    owl:allValuesFrom :TransportNetwork
                                  ] ;
                  skos:definition "A TransportNetwork is a NetworkElement that is a collection of other network elements that jointly represent a network of paths along which entities (e.g., vehicles, pedestrians) of a specified mode can operate."@en ;
                  xsd:pattern "TransportNetworkPattern" .


###  https://w3id.org/citydata/part3/v1/TransportNetworkThing
:TransportNetworkThing rdf:type owl:Class ;
                       rdfs:subClassOf :ITSThing ;
                       skos:definition "The Transport Network Pattern models the core concepts involved in describing a transport network. This includes an identification of both physical and administrative characteristics. The most general class is that of the NetworkElement, which can be further classified as one of several types of NetworkElements. A key feature of this pattern is the formalization of the hasProperPart relationship from a NetworkElement to another NetworkElement. This allows for a representation of networks at multiple levels of detail. For example, at one level, a motorway interchange can be modelled as a single Node. But that node is a NetworkElement that can be defined to consist of an entire TransportNetwork that has a node for each junction within the interchange."@en .


###  https://w3id.org/citydata/part3/v1/TransportNode
:TransportNode rdf:type owl:Class ;
               rdfs:subClassOf :NetworkElement ,
                               [ rdf:type owl:Restriction ;
                                 owl:onProperty :egress ;
                                 owl:allValuesFrom :TravelledWayLink
                               ] ,
                               [ rdf:type owl:Restriction ;
                                 owl:onProperty :ingress ;
                                 owl:allValuesFrom :TravelledWayLink
                               ] ,
                               [ rdf:type owl:Restriction ;
                                 owl:onProperty cdm1:properPartOf ;
                                 owl:allValuesFrom :TransportNetwork
                               ] ,
                               [ rdf:type owl:Restriction ;
                                 owl:onProperty :egress ;
                                 owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                 owl:onClass :TravelledWayLink
                               ] ,
                               [ rdf:type owl:Restriction ;
                                 owl:onProperty :ingress ;
                                 owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                 owl:onClass :TravelledWayLink
                               ] ,
                               [ rdf:type owl:Restriction ;
                                 owl:onProperty cdm1:properPartOf ;
                                 owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                 owl:onClass :TransportNetwork
                               ] ;
               skos:definition "A TransportNode is a NetworkElement that represents a node on the transport network that can be used to designate an end to a link or to join links."@en ;
               xsd:pattern "TransportNetworkPattern" .


###  https://w3id.org/citydata/part3/v1/TravelledWay
:TravelledWay rdf:type owl:Class ;
              rdfs:subClassOf cdm2:TravelledWay ,
                              :NetworkElement ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :designator ;
                                owl:allValuesFrom xsd:string
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty cdm1:hasProperPart ;
                                owl:allValuesFrom :TravelledWayLink
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty cdm1:properPartOf ;
                                owl:allValuesFrom :TransportNetwork
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty cdm1:properPartOf ;
                                owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                owl:onClass :TransportNetwork
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :designator ;
                                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                owl:onDataRange xsd:string
                              ] ;
              skos:definition "A TravelledWay is a type of NetworkElement and transinfras:TravelledWay that represents the curvilinear length of a transport route that is identified by a specific designator."@en ;
              xsd:pattern "TransportNetworkPattern" .


###  https://w3id.org/citydata/part3/v1/TravelledWayLane
:TravelledWayLane rdf:type owl:Class ;
                  rdfs:subClassOf :NetworkElement ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty cdm1:properPartOf ;
                                    owl:allValuesFrom :TravelledWaySegment
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty cdm1:properPartOf ;
                                    owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                    owl:onClass :TravelledWaySegment
                                  ] ;
                  skos:definition "A TravelledWayLane is a NetworkElement that is a portion of TravelledWaySegment intended to accommodate a single line of moving material entities (e.g., vehicles) along its length."@en ;
                  xsd:pattern "TransportNetworkPattern" .


###  https://w3id.org/citydata/part3/v1/TravelledWayLink
:TravelledWayLink rdf:type owl:Class ;
                  rdfs:subClassOf cdm2:TravelledWayLink ,
                                  :NetworkElement ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :allowedDirections ;
                                    owl:allValuesFrom cdm2:Code
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :from ;
                                    owl:allValuesFrom :TransportNode
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty cdm1:hasProperPart ;
                                    owl:allValuesFrom :TravelledWaySegment
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty cdm1:properPartOf ;
                                    owl:allValuesFrom [ rdf:type owl:Class ;
                                      owl:unionOf ( :TransportNetwork
                                        :TravelledWay
                                        :TravelledWaySection
                                      )
                                    ]
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :to ;
                                    owl:allValuesFrom :TransportNode
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty cdm1:properPartOf ;
                                    owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                    owl:onClass :TransportNetwork
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :from ;
                                    owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                    owl:onClass :TransportNode
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :to ;
                                    owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                    owl:onClass :TransportNode
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :allowedDirections ;
                                    owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                    owl:onClass cdm2:Code
                                  ] ;
                  skos:definition "A TravelledWayLink is a type of NetworkElement and transinfras:TravelledWayLink. It represents a contiguous length of a TravelledWay between two TransportNodes of operational or managerial significance."@en ;
                  xsd:pattern "TransportNetworkPattern" .


###  https://w3id.org/citydata/part3/v1/TravelledWaySection
:TravelledWaySection rdf:type owl:Class ;
                     rdfs:subClassOf :NetworkElement ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty cdm1:hasProperPart ;
                                       owl:allValuesFrom [ rdf:type owl:Class ;
                                         owl:unionOf ( :TravelledWayLink
                                           :TravelledWaySegment
                                         )
                                       ]
                                     ] ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty cdm1:properPartOf ;
                                       owl:allValuesFrom :TransportNetwork
                                     ] ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty cdm1:properPartOf ;
                                       owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                       owl:onClass :TransportNetwork
                                     ] ;
                     skos:definition "A TravelledWaySection is a type of NetworkElement that represents an aggregation of TravelledWayLinks and TravelledWaySegments that jointly represent a contiguous length of a path that shares the same management and operational strategies (within the scope of interest of the implementation)."@en ;
                     xsd:pattern "TransportNetworkPattern" .


###  https://w3id.org/citydata/part3/v1/TravelledWaySegment
:TravelledWaySegment rdf:type owl:Class ;
                     rdfs:subClassOf cdm2:TravelledWaySegment ,
                                     :NetworkElement ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty cdm1:hasProperPart ;
                                       owl:allValuesFrom :TravelledWayLane
                                     ] ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty cdm1:properPartOf ;
                                       owl:allValuesFrom [ rdf:type owl:Class ;
                                         owl:unionOf ( :TravelledWayLink
                                           :TravelledWaySection
                                         )
                                       ]
                                     ] ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty :travelCorridorSegment ;
                                       owl:allValuesFrom :TravelCorridorSegment
                                     ] ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty cdm1:hasProperPart ;
                                       owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                       owl:onClass :TravelledWayLane
                                     ] ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty cdm1:properPartOf ;
                                       owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                       owl:onClass :TravelledWayLink
                                     ] ;
                     skos:definition "A TravelledWaySegment is a type of a transinfras:TravelledWaySegment and NetworkElement that represents a contiguous length of a TravelledWayLink characterized by the same physical characteristics."@en ;
                     xsd:pattern "TransportNetworkPattern" .
