BASE   <https://w3id.org/itsdata/metr/v1/>
PREFIX : <https://w3id.org/itsdata/metr/v1/>
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: <https://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-core: <https://w3id.org/itsdata/core/v1/>
PREFIX its-regulation: <https://w3id.org/itsdata/regulation/v1/>
PREFIX its-vehicle: <https://w3id.org/itsdata/vehicle/v1/>
PREFIX its-communications: <https://w3id.org/itsdata/communications/v1/>
PREFIX its-location: <https://w3id.org/itsdata/location/v1/>

:CataloguePattern a owl:Ontology;
    # Ontology metadata
    dcterms:title                  "METR Catalogue Pattern"@en;
    skos:definition                "This pattern describes concepts related to managing a catalogue of electronic traffic regulations (METR)."@en;
    dcterms:license                "http://creativecommons.org/licenses/by/4.0/";
    vann:preferredNamespaceUri     "https://w3id.org/itsdata/metr/v1/";
    vann:preferredNamespacePrefix  "its-metr";
    :draft                         "true";
    
    #Provenance metadata
    dcterms:creator                "Kenneth Vaughn";
    dcterms:created                "2026-07-22"^^xsd:date;
    dcterms:modified               "2026-07-22"^^xsd:date;
    owl:versionInfo                "0.0.1";
    owl:versionIRI                 :r0.1;
    
    # Imports
    owl:imports                   :CorePattern .


# ================================================
#                 Classes
# ================================================

:Catalogue a owl:Class;
    rdf:type        owl:Class;
    rdfs:subClassOf :MetrThing;
    rdfs:subClassOf [
        rdf:type                    owl:Restriction;
        owl:onProperty              :usesRegulationCodeList;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger;
        owl:onClass                 its-regulation:RegulationCodeList;
    ] ;
    rdfs:subClassOf [
        rdf:type                    owl:Restriction;
        owl:onProperty              :subjectArea;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger;
        owl:onClass                 :DefinedArea;
    ] ;
    skos:definition "The METR catalogue is used to document the categories of rules that are currently available for identified areas." .

:DefinedArea a owl:Class;
    rdf:type owl:Class;
    rdfs:subClassOf :MetrThing;
    rdfs:subClassOf its-location:AreaFeature;
    rdfs:subClassOf [
        rdf:type                    owl:Restriction;
        owl:onProperty              :supportedPreAnnouncedRegulation;
        owl:onClass                 :SupportedRegulationCategory;
    ] ;
    rdfs:subClassOf [
        rdf:type                    owl:Restriction;
        owl:onProperty              :supportedEmergentRegulation;
        owl:onClass                 :SupportedRegulationCategory;
    ] ;
    skos:definition "A geographic area that is covered by the catalogue." .

:SupportedRegulationCategory a owl:Class;
    rdf:type owl:Class;
    rdfs:subClassOf :MetrThing;
    rdfs:subClassOf [
        rdf:type                    owl:Restriction;
        owl:onProperty              :availableRegulationCategory;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger;
        owl:onClass                 its-regulation:RegulationCode;
    ] ;
    rdfs:subClassOf [
        rdf:type                    owl:Restriction;
        owl:onProperty              :applicableVehicleType;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger;
        owl:onClass                 its-vehicle:VehicleTypeCode;
    ] ;
    rdfs:subClassOf [
        rdf:type                    owl:Restriction;
        owl:onProperty              :cyberLocation;
        owl:onClass                 its-communications:CyberLocation;
    ] ;
    skos:definition "One or more regulation categories for which all known regulations of the regulation category are available for the identified area and for the identified vehicle classes." ;
    skos:note "The supported regulation categories and vehicle categories are a union of the listed values. For example, if the instance indicates A regulation category is a category of regulations that are supported by a METR implementation for the identified area and for the identified vehicle classes." .

# ================================================
#                Object Properties
# ================================================

:applicableVehicleType
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf :MetrObjectProperty;
    schema:domainIncludes :SupportedRegulationCategory;
    schema:rangeIncludes its-vehicle:VehicleTypeCode;
    skos:definition "A vehicle type for which the all known regulations of the regulation category are available for the identified area." .

:availableRegulationCategory
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf :MetrObjectProperty;
    schema:domainIncludes :SupportedRegulationCategory;
    schema:rangeIncludes its-regulation:RegulationCode;
    skos:definition "A regulation category for which all known regulations of the regulation category are available for the identified area and for the identified vehicle classes." .

:cyberLocation
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf :MetrObjectProperty;
    schema:domainIncludes :SupportedRegulationCategory;
    schema:rangeIncludes its-communications:CyberLocation;
    skos:definition "A cyber location for which all known emergent regulations of the regulation category are available for the identified area and for the identified vehicle classes." .

:subjectArea
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf :MetrObjectProperty;
    schema:domainIncludes :Catalogue;
    schema:rangeIncludes its-location:AreaFeature;
    skos:definition "A geographic area covered by the catalogue.".

:supportedEmergentRegulation
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf :MetrObjectProperty;
    schema:domainIncludes :DefinedArea;
    schema:rangeIncludes :SupportedRegulationCategory;
    skos:definition "A regulation category for which all known emergent instances of the regulation category for the identified area and for the identified vehicle classes are made available via the indicated cyber location." ;
    skos:note "Emergent regulations are regulations that have been approved and implemented without sufficient time to guarantee that they have been integrated into and distributed through the pre-announced distribution channels. They are typically made available directly to METR user systems (e.g., vehicles) via one or more cyber locations without being integrated into intermediate products (e.g., digital map databases)." .

:supportedPreAnnouncedRegulation
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf :MetrObjectProperty;
    schema:domainIncludes :DefinedArea;
    schema:rangeIncludes :SupportedRegulationCategory;
    skos:definition "A regulation category for which all known pre-announced instances of the regulation category are maintained for the identified area and for the identified vehicle classes." ;
    skos:note "Pre-announced regulations are regulations that have been approved with sufficient notice for integration into intermediate products (e.g., digital map databases) and made available to the public within normal, published update cycles." .

:usesRegulationCodeList
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf :MetrObjectProperty;
    schema:domainIncludes :Catalogue;
    schema:rangeIncludes its-regulation:RegulationCodeList;
    skos:definition "A code list that is used to indicate which categories of regulations are currently available for the identified areas.".

# ================================================
#                Datatype Properties
# ================================================

