BASE   <https://w3id.org/itsdata/time/v1/>
PREFIX : <https://w3id.org/itsdata/time/v1/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
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 time: <http://www.w3.org/2006/time#>
PREFIX cdm2: <https://w3id.org/citydata/part2/v1/>
PREFIX its-core: <https://w3id.org/itsdata/core/v1/>

:FuzzyTimePattern a owl:Ontology;
    # Ontology metadata
    dcterms:title                  "Time Ontology for ITS - Fuzzy Time Pattern"@en;
    skos:definition                "This ontology defines concepts related to fuzzy time within Intelligent Transportation Systems (ITS). This pattern is one module of the Time Ontology for ITS."@en;
    vann:preferredNamespaceUri     "https://w3id.org/itsdata/time/v1/";
    vann:preferredNamespacePrefix  "its-time";
    dcterms:license                "http://creativecommons.org/licenses/by/4.0/";
    its-core:draft                 "true";
    
    #Provenance metadata
    dcterms:creator                "Kenneth Vaughn";
    dcterms:created                "Draft";
    dcterms:modified               "2026-04-23"^^xsd:date;
    
    # Imports
    owl:imports                    :Core .
    # which includes the following cascade of imports:
    #   Core (its-time)
    #     CityPattern
    #       LandUsePattern
    #         CodePattern
    #           Core(cdm2)
    #           OrganizationStructurePattern
    #               AgentPattern
    #                    GenericPropertiesPattern
    #                    ResourcePattern
    #                        ActivityPattern
    #                            ChangePattern
    #                            SpatialLocPattern
    #                                MereologyPattern
    #                        CityUnitsPattern
    #                             ISO21972
    #                             Core (cdm1)
    #                                 Time (W3C)

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

:timeReference a owl:ObjectProperty;
    rdfs:subPropertyOf      :TimeObjectProperty ;
    schema:domainIncludes   :FuzzyTime ;
    schema:rangeIncludes              :FuzzyTimeCode .

####################################
# Data Properties
####################################

:offset a owl:DatatypeProperty;
    rdfs:subPropertyOf      :TimeDataProperty .


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

:TimeOfDay a owl:Class;
    skos:definition         "A description of a time within a single day, which can be an explicit time (e.g., 08:30) or a time reference (e.g., `dusk`)."@en ;
    rdfs:subClassOf         :TimeThing .

:ClockTime a owl:Class;
    skos:definition         "A description of a time within a single day (hours, minutes, seconds, etc.), recurring daily. Date components (year, month, day) must not be present."@en ;
    skos:example            "08:30:00 EDT"@en ;
    rdfs:subClassOf         :TimeOfDay ;
    rdfs:subClassOf         time:GeneralDateTimeDescription ;
    rdfs:subClassOf         [ a owl:Restriction ;
        owl:onProperty          time:unitType ;
        owl:someValuesFrom      time:UnitOfTime ] ;
    rdfs:subClassOf         [ a owl:Restriction ;
        owl:onProperty          time:day ;
        owl:maxCardinality      "0"^^xsd:nonNegativeInteger ] ;
    rdfs:subClassOf         [ a owl:Restriction ;
        owl:onProperty          time:dayOfWeek ;
        owl:maxCardinality      "0"^^xsd:nonNegativeInteger ] ;
    rdfs:subClassOf         [ a owl:Restriction ;
        owl:onProperty          time:dayOfYear ;
        owl:maxCardinality      "0"^^xsd:nonNegativeInteger ] ;
    rdfs:subClassOf         [ a owl:Restriction ;
        owl:onProperty          time:month ;
        owl:maxCardinality      "0"^^xsd:nonNegativeInteger ] ;
    rdfs:subClassOf         [ a owl:Restriction ;
        owl:onProperty          time:monthOfYear ;
        owl:maxCardinality      "0"^^xsd:nonNegativeInteger ] ;
    rdfs:subClassOf         [ a owl:Restriction ;
        owl:onProperty          time:week ;
        owl:maxCardinality      "0"^^xsd:nonNegativeInteger ] ;
    rdfs:subClassOf         [ a owl:Restriction ;
        owl:onProperty          time:year ;
        owl:maxCardinality      "0"^^xsd:nonNegativeInteger ] .

:FuzzyTime a owl:Class;
    skos:definition     "An instant in time designated by a named timeReference event (e.g., `dusk`) coupled with a defined offset either before or after the referenced event. The timeReference can be any value from a recognized FuzzyTimeCode. The offset indicates the amount of units of time from this event either before or after the timeReference."@en ;
    skos:example        "30 minutes after dusk"@en ;
    rdfs:subClassOf         :TimeOfDay .

:FuzzyTimeCode a owl:Class;
    skos:definition     "A code indicating a named time during the day, such as `dawn`, `dusk`, `start of rain`, `start of school`, etc."@en ;
    rdfs:subClassOf         :TimeThing ;
    rdfs:subClassOf         cdm2:Code .


