@prefix : <https://w3id.org/itsdata/regulation/v1/> .
@prefix dash: <http://datashapes.org/dash#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@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: <http://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix cdm1: <https://w3id.org/citydata/part1/v1/> .
@prefix cdm2: <https://w3id.org/citydata/part2/v1/> .
@prefix its-agent: <https://w3id.org/itsdata/agent/v1/> .
@prefix its-core: <https://w3id.org/itsdata/core/v1/> .
@prefix its-location: <https://w3id.org/itsdata/location/v1/> .
@prefix its-time: <https://w3id.org/itsdata/time/v1/> .
@prefix its-vehicle: <https://w3id.org/itsdata/vehicle/v1/> .

:PermitPattern
    rdf:type                      owl:Ontology ;
    dcterms:creator               "Kenneth Vaughn"@en ;
    dcterms:license               <http://creativecommons.org/licenses/by/4.0/> ;
    dcterms:modified              "2026-07-16T19:57:16Z"^^xsd:dateTime ;
    dcterms:title                 "Permit Ontology"@en ;
    its-core:draft                true ;
    owl:imports                   cdm1: ;
    owl:imports                   its-agent: ;
    owl:imports                   its-location: ;
    owl:imports                   its-time: ;
    owl:imports                   its-vehicle: ;
    owl:imports                   :CorePattern ;
    skos:definition               "This ontology defines concepts related to permits."@en ;
    vann:preferredNamespacePrefix "its-regulation" ;
    vann:preferredNamespaceUri    "https://w3id.org/itsdata/regulation/v1/" .

# ================================================
#                 Code Classes
# ================================================

:PermitDesignationCode
    rdf:type        owl:Class ;
    rdfs:subClassOf :RegulationThing ;
    skos:definition "A code that indicates the designation of the permit."@en .

:PermitDisplayTypeCode
    rdf:type        owl:Class ;
    rdfs:subClassOf :RegulationThing ;
    skos:definition "A code that indicates the type of display that is associated with the permit."@en .

:PermitGranteeTypeCode
    rdf:type        owl:Class ;
    rdfs:subClassOf :RegulationThing ;
    skos:definition "A code that indicates the type of grantee of the permit."@en .

:PermitGrantorTypeCode
    rdf:type        owl:Class ;
    rdfs:subClassOf :RegulationThing ;
    skos:definition "A code that indicates the type of grantor of the permit."@en .

# ================================================
#                 Permit Classes
# ================================================

:Permit
    rdf:type        owl:Class ;
    rdfs:subClassOf :RegulationThing ;
    rdfs:subClassOf [
        rdf:type                 owl:Restriction ;
        owl:onProperty           :hasPermitType ;
        owl:onClass              :PermitType ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] ;
    rdfs:subClassOf [
        rdf:type                 owl:Restriction ;
        owl:onProperty           cdm1:hasIdentifier ;
        owl:onDataRange          xsd:string ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] ;
    skos:definition "Certificate that indicates designations that are associated with the grantee."@en .

:PermitApplicationInformation
    rdf:type        owl:Class ;
    rdfs:subClassOf :RegulationThing ;
    skos:definition "Details about the application of the permit."@en .

:PermitType
    rdf:type        owl:Class ;
    rdfs:subClassOf :RegulationThing ;
    rdfs:subClassOf [
        rdf:type                 owl:Restriction ;
        owl:onProperty           :grantsDesignation ;
        owl:onClass              :PermitDesignationCode ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] ;
    rdfs:subClassOf [
        rdf:type                 owl:Restriction ;
        owl:onProperty           :hasGrantor ;
        owl:onClass              cdm2:Organization ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] ;
    skos:definition "A category of certificate that the grantor is able to issue to designate a grantee as a specific type of entity."@en .

:RegistrationMachine
    rdf:type        owl:Class ;
    rdfs:subClassOf :RegulationThing ;
    rdfs:subClassOf its-location:Feature ;
    skos:definition "A machine that is used to register the permit."@en .

# ================================================
#                 Object properties
# ================================================

:grantsDesignation
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "The permissions that are granted by the permit."@en ;
    rdfs:seeAlso       "DATEX-II disabledParkingPermit" .

:hasApplicableLocation
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "The location where the permit is applicable."@en ;
    rdfs:seeAlso       "DATEX-II applicableLocation" .

:hasApplicationInformation
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "Details about the application of the permit."@en ;
    rdfs:seeAlso       "DATEX-II description" .

:hasAssociatedFee
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "A fee that is associated with the instance of the traffic regulation."@en .

:hasContactInformation
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "Contact information for the entity that is responsible for the traffic regulation."@en ;
    rdfs:seeAlso       "DATEX-II whereToCallForPermit" .

:hasDefaultDurationLimit
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    rdfs:range         its-time:Duration ;
    skos:definition    "The default duration of the permit."@en ;
    rdfs:seeAlso       "DATEX-II defaultDuration" .

:hasDefaultLocation
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "The default location of the permit."@en ;
    rdfs:seeAlso       "DATEX-II defaultLocation" .

:hasDefaultRepeatInterval
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    rdfs:range         its-time:Duration ;
    skos:definition    "The default repeat interval of the permit."@en ;
    rdfs:seeAlso       "DATEX-II defaultRepeatInterval" .

:hasDisplayType
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "The type of display that is associated with the permit."@en ;
    rdfs:seeAlso       "DATEX-II displayType" .

:hasDurationLimit
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    rdfs:range         its-time:Duration ;
    skos:definition    "The maximum duration of the permit."@en ;
    rdfs:seeAlso       "DATEX-II maximumDurationOfPermit" .

:hasGrantee
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "The entity that is granted the permit."@en ;
    rdfs:seeAlso       "DATEX-II permitOwner" .

:hasGranteeType
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "The type of entity that is granted the permit."@en ;
    rdfs:seeAlso       "DATEX-II permitOwnerType" .

:hasGrantor
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    rdfs:range         cdm2:Organization ;
    skos:definition    "The authority that is responsible for issuing the permit."@en ;
    rdfs:seeAlso       "DATEX-II hasIssuingAuthority" .

:hasPermitType
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "The type of permit."@en ;
    rdfs:seeAlso       "DATEX-II permitType" .

:hasRegistrationMachine
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "A registration machine that is associated with the instance of the traffic regulation."@en .

:hasRepeatInterval
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    rdfs:range         its-time:Duration ;
    skos:definition    "The minimum time to the next entry."@en ;
    rdfs:seeAlso       "DATEX-II minimumTimeToNextEntry" .

:hasValidityPeriod
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "The validity period of the permit."@en ;
    rdfs:seeAlso       "DATEX-II validityPeriod" .

:permitInformation
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "Information about any permits that are associated with the regulation."@en .

:permittedEntityType
    rdf:type           owl:ObjectProperty ;
    rdfs:subPropertyOf :RegulationObjectProperty ;
    skos:definition    "The type of entity that is permitted to use the permit."@en .

# ================================================
#                 Datatype properties
# ================================================

:hasApplicationInstructions
    rdf:type           owl:DatatypeProperty ;
    rdfs:subPropertyOf :RegulationDataProperty ;
    rdfs:range         rdf:langString ;
    skos:definition    "The method by which the permit can be obtained."@en ;
    rdfs:seeAlso       "DATEX-II howToObtainPermit" .

:hasApplicationUrl
    rdf:type           owl:DatatypeProperty ;
    rdfs:subPropertyOf :RegulationDataProperty ;
    rdfs:range         xsd:anyURI ;
    skos:definition    "The URL for the application of the permit."@en ;
    rdfs:seeAlso       "DATEX-II whereToApplyForPermit" .

:hasInformationUrl
    rdf:type           owl:DatatypeProperty ;
    rdfs:subPropertyOf :RegulationDataProperty ;
    rdfs:range         xsd:anyURI ;
    skos:definition    "The URL for the information about the permit."@en ;
    rdfs:seeAlso       "DATEX-II urlForFurtherInformation" .

:isApplicationRequired
    rdf:type           owl:DatatypeProperty ;
    rdfs:subPropertyOf :RegulationDataProperty ;
    rdfs:range         xsd:boolean ;
    skos:definition    "Indicates whether an application is required for the permit."@en ;
    rdfs:seeAlso       "DATEX-II isApplicationRequired" .

:isLocationSpecific
    rdf:type           owl:DatatypeProperty ;
    rdfs:subPropertyOf :RegulationDataProperty ;
    rdfs:range         xsd:boolean ;
    skos:definition    "Indicates whether the permit is location specific."@en ;
    rdfs:seeAlso       "DATEX-II locationRelatedPermit" .

:issued
    rdf:type           owl:DatatypeProperty ;
    rdfs:subPropertyOf :RegulationDataProperty ;
    rdfs:range         xsd:dateTime ;
    skos:definition    "The date and time the permit was issued."@en ;
    rdfs:seeAlso       "DATEX-II issued" .
