PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX otl: <https://w3id.org/opentrafficlights#>
PREFIX linkml: <https://w3id.org/linkml/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX schema: <http://schema.org/>
PREFIX sh: <http://www.w3.org/ns/shacl#>
PREFIX vann: <http://purl.org/vocab/vann/>

otl:Ontology a owl:Ontology ;
  rdfs:label "The Open Traffic Lights ontology"@en ;
  rdfs:comment "This ontology provides the terms necessary to describe the status of traffic lights."@en ;
  dcterms:contributor <https://w3id.org/people/brechtvdv/#me> ;
  schema:inLanguage "en" ;
  vann:preferredNamespacePrefix "otl" ;
  vann:preferredNamespaceUri "https://w3id.org/opentrafficlights#"^^xsd:anyURI ;
  sh:declare [
    sh:prefix "otl" ;
    sh:namespace "https://w3id.org/opentrafficlights#"^^xsd:anyURI
  ] , [
    sh:prefix "linkml" ;
    sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI
  ] , [
    sh:prefix "xsd" ;
    sh:namespace "http://www.w3.org/2001/XMLSchema#"^^xsd:anyURI
  ] , [
    sh:prefix "skos" ;
    sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI
  ] , [
    sh:prefix "foaf" ;
    sh:namespace "http://xmlns.com/foaf/0.1/"^^xsd:anyURI
  ] .

otl:SignalGroup a owl:Class ;
  rdfs:label "Signal group"@en ;
  rdfs:comment "Describes a group of traffic lights that have the same Signal state."@en ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty otl:signalState ;
    owl:allValuesFrom otl:SignalState
  ] .

otl:SignalState a owl:Class ;
  rdfs:label "Signal state"@en ;
  rdfs:comment "Describes the state of a Signal group."@en ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty otl:maxEndTime ;
    owl:allValuesFrom xsd:dateTime
  ] , [
    a owl:Restriction ;
    owl:onProperty otl:minEndTime ;
    owl:allValuesFrom xsd:dateTime
  ] , [
    a owl:Restriction ;
    owl:onProperty otl:signalPhase ;
    owl:allValuesFrom skos:Concept
  ] .

otl:Connection a owl:Class ;
  rdfs:label "Connection"@en ;
  rdfs:comment "Describes a departure at a certain lane and an arrival at a different lane"@en ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty otl:arrivalLane ;
    owl:allValuesFrom owl:Thing
  ] , [
    a owl:Restriction ;
    owl:onProperty otl:departureLane ;
    owl:allValuesFrom owl:Thing
  ] .

otl:Lane a owl:Class ;
  rdfs:label "Lane"@en ;
  rdfs:comment "Describes a part of the road where a passenger departs or arrives from."@en ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty otl:width ;
    owl:allValuesFrom xsd:Integer
  ] .

foaf:Document a owl:Class .

skos:Concept a owl:Class .

otl:maxEndTime a owl:DatatypeProperty ;
  rdfs:label "Maximum end time"@en ;
  rdfs:comment "The latest time possible at which the event state could change, except when unpredictable events relating to a pre-emption or priority call disrupt a currently active timing plan."@en ;
  rdfs:range xsd:dateTime ;
  rdfs:domain otl:SignalState .

otl:width a owl:DatatypeProperty ;
  rdfs:label "Width"@en ;
  rdfs:comment "The width of a lane expressed in centimeters."@en ;
  rdfs:range xsd:Integer ;
  rdfs:domain otl:Lane .

otl:arrivalLane a owl:ObjectProperty ;
  rdfs:label "Arrival lane"@en ;
  rdfs:comment "A road user will arrive here"@en ;
  rdfs:domain otl:Connection .

otl:minEndTime a owl:DatatypeProperty ;
  rdfs:label "Minimum end time"@en ;
  rdfs:comment "The earliest time possible at which the event state could change, except when unpredictable events relating to a pre-emption or priority call disrupt a currently active timing plan."@en ;
  rdfs:range xsd:dateTime ;
  rdfs:domain otl:SignalState .

otl:signalPhase a owl:ObjectProperty ;
  rdfs:label "Phase of a Signal state"@en ;
  rdfs:comment "Represents green, red etc. Adviced to use concept scheme https://w3id.org/opentrafficlights/thesauri/signalphase"@en ;
  rdfs:range skos:Concept ;
  rdfs:domain otl:SignalState .

otl:signalState a owl:ObjectProperty ;
  rdfs:label "Signal state"@en ;
  rdfs:comment "Signal state of a signal group."@en ;
  rdfs:range otl:SignalState ;
  rdfs:domain otl:SignalGroup .

otl:departureLane a owl:ObjectProperty ;
  rdfs:label "Departure lane"@en ;
  rdfs:comment "A road user will depart from here"@en ;
  rdfs:domain otl:Connection .

dcterms:contributor a owl:AnnotationProperty .

schema:inLanguage a owl:AnnotationProperty .

vann:preferredNamespacePrefix a owl:AnnotationProperty .

vann:preferredNamespaceUri a owl:AnnotationProperty .

sh:declare a owl:AnnotationProperty .

sh:prefix a owl:AnnotationProperty .

sh:namespace a owl:AnnotationProperty .

xsd:Integer a rdfs:Datatype .
