@base <http://def.seegrid.csiro.au/isotc211/iso19108/2002/temporal> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix h2o: <../../iso19150/-2/2012/basic#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix tm: <#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix voaf: <http://purl.org/vocommons/voaf#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<>
    dc:creator "Simon J D COX - CSIRO"^^xsd:string ;
    dc:description "An OWL representation of part of the model for Temporal objects and reference systems from ISO 19108:2002 Geographic Information - Temporal Schema"^^xsd:string ;
    dc:source "ISO 19108:2002"^^xsd:string ;
    dc:title "OWL representation of ISO 19108 (Geographic Information - Temporal Schema)"^^xsd:string ;
    dct:created "2011-01-01T00:00:00"^^xsd:dateTime ;
    dct:hasPart tm:CalDate, tm:Calendar, tm:Clock, tm:ClockTime, tm:Complex, tm:Coordinate, tm:CoordinateSystem, tm:DateAndTime, tm:Edge, tm:GeometricPrimitive, tm:Instant, tm:Node, tm:Object, tm:OrdinalEra, tm:OrdinalPosition, tm:OrdinalReferenceSystem, tm:Period, tm:Primitive, tm:ReferenceSystem, tm:TemporalPosition, tm:TopologicalComplex, tm:TopologicalPrimitive, tm:begin, tm:begunBy, tm:complex, tm:component, tm:date, tm:dateTimePosition, tm:domainOfValidity, tm:end, tm:endedBy, tm:frame, tm:geometry, tm:group, tm:member, tm:name, tm:nextEdge, tm:ordinalValue, tm:previousEdge, tm:primitive, tm:system, tm:temporalPosition, tm:time, tm:topology, tm:value ;
    dct:license <http://creativecommons.org/licenses/by/3.0/> ;
    dct:modified "2013-11-13T00:00:00"^^xsd:dateTime ;
    vann:preferredNamespacePrefix "tm"^^xsd:string ;
    vann:preferredNamespaceUri <#> ;
    a owl:Ontology ;
    rdfs:comment """An OWL representation of part of the model for Temporal objects and reference systems from ISO 19108:2002 Geographic Information - Temporal Schema

This vocabulary is provisional, pending finalization of ISO 19150-2.

The URI stem http://def.seegrid.csiro.au/isotc211/ is temporary. The vocabulary is expected to be ultimately published in the domain http://def.isotc211.org/"""^^xsd:string ;
    owl:imports <../../iso19103/2005/basic>, <../../iso19115/2003/extent>, <../../iso19150/-2/2012/basic> ;
    owl:priorVersion <https://www.seegrid.csiro.au/subversion/xmml/ontologies/tags/201305/ISOTC211/HM/temporal.rdf> ;
    owl:versionIRI <https://www.seegrid.csiro.au/subversion/xmml/ontologies/tags/201311/ISOTC211/HM/temporal.rdf> ;
    skos:historyNote "2013-02-19 Converted qualified cardinality restrictions to cardinality/only pairs of restrictions"^^xsd:string .

tm:CalDate
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Calendar date"^^xsd:string ;
    rdfs:subClassOf tm:TemporalPosition, [
        a owl:Restriction ;
        owl:allValuesFrom tm:Calendar ;
        owl:onProperty tm:frame
    ], [
        a owl:Restriction ;
        owl:allValuesFrom xsd:date ;
        owl:onProperty tm:value
    ] ;
    skos:notation "TM_CalDate"^^h2o:ISOClassName .

tm:Calendar
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Calendar"^^xsd:string ;
    rdfs:subClassOf tm:ReferenceSystem ;
    skos:notation "TM_Calendar"^^h2o:ISOClassName .

tm:Clock
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Clock"^^xsd:string ;
    rdfs:subClassOf tm:ReferenceSystem ;
    skos:notation "TM_Clock"^^h2o:ISOClassName .

tm:ClockTime
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Clock time"^^xsd:string ;
    rdfs:subClassOf tm:TemporalPosition, [
        a owl:Restriction ;
        owl:allValuesFrom tm:Clock ;
        owl:onProperty tm:frame
    ], [
        a owl:Restriction ;
        owl:allValuesFrom xsd:time ;
        owl:onProperty tm:value
    ] ;
    skos:notation "TM_ClockTime"^^h2o:ISOClassName .

tm:Complex
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Complex"^^xsd:string ;
    rdfs:subClassOf tm:Object, [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:primitive
    ] ;
    skos:notation "TM_Complex"^^h2o:ISOClassName .

tm:Coordinate
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Coordinate"^^xsd:string ;
    rdfs:subClassOf tm:TemporalPosition, [
        a owl:Restriction ;
        owl:allValuesFrom <../../iso19103/2005/basic#Number> ;
        owl:onProperty tm:value
    ], [
        a owl:Restriction ;
        owl:allValuesFrom tm:CoordinateSystem ;
        owl:onProperty tm:frame
    ] ;
    skos:notation "TM_Coordinate"^^h2o:ISOClassName .

tm:CoordinateSystem
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Coordinate System"^^xsd:string ;
    rdfs:subClassOf tm:ReferenceSystem ;
    skos:notation "TM_CoordinateSystem"^^h2o:ISOClassName .

tm:DateAndTime
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Date and time"^^xsd:string ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:date
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:time
    ] ;
    skos:notation "TM_DateAndTime"^^h2o:ISOClassName .

tm:Edge
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Edge"^^xsd:string ;
    rdfs:subClassOf tm:TopologicalPrimitive, [
        a owl:Restriction ;
        owl:allValuesFrom tm:Node ;
        owl:onProperty tm:begin
    ], [
        a owl:Restriction ;
        owl:allValuesFrom tm:Node ;
        owl:onProperty tm:end
    ], [
        a owl:Restriction ;
        owl:allValuesFrom tm:Period ;
        owl:onProperty tm:geometry
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:begin
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:end
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:geometry
    ] ;
    skos:notation "TM_Edge"^^h2o:ISOClassName .

tm:GeometricComplex
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal geometric complex"^^xsd:string ;
    rdfs:subClassOf tm:Complex, [
        a owl:Restriction ;
        owl:allValuesFrom tm:GeometricPrimitive ;
        owl:onProperty tm:primitive
    ], [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:primitive
    ] ;
    skos:notation "TM_GeometricComplex"^^h2o:ISOClassName .

tm:GeometricPrimitive
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Geometric Primitive"^^xsd:string ;
    rdfs:subClassOf tm:Primitive ;
    skos:notation "TM_GeometricPrimitive"^^h2o:ISOClassName .

tm:Instant
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Instant"^^xsd:string ;
    rdfs:subClassOf tm:GeometricPrimitive, [
        a owl:Class ;
        owl:unionOf ([
                a owl:Restriction ;
                owl:cardinality "1"^^xsd:nonNegativeInteger ;
                owl:onProperty tm:dateTimePosition
            ]
            [
                a owl:Restriction ;
                owl:cardinality "1"^^xsd:nonNegativeInteger ;
                owl:onProperty tm:temporalPosition
            ]
        )
    ], [
        a owl:Restriction ;
        owl:allValuesFrom tm:Node ;
        owl:onProperty tm:topology
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:topology
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:begunBy
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:endedBy
    ] ;
    skos:notation "TM_Instant"^^h2o:ISOClassName .

tm:Node
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Node"^^xsd:string ;
    rdfs:subClassOf tm:TopologicalPrimitive, [
        a owl:Restriction ;
        owl:allValuesFrom tm:Instant ;
        owl:onProperty tm:geometry
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:geometry
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:nextEdge
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:previousEdge
    ] ;
    skos:notation "TM_Node"^^h2o:ISOClassName .

tm:Object
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Object"^^xsd:string ;
    rdfs:subClassOf owl:Thing ;
    skos:notation "TM_Object"^^h2o:ISOClassName .

tm:OrdinalEra
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal ordinal era"^^xsd:string ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:group
    ] ;
    skos:notation "TM_OrdinalEra"^^h2o:ISOClassName .

tm:OrdinalPosition
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal ordinal position"^^xsd:string ;
    rdfs:subClassOf tm:TemporalPosition, [
        a owl:Restriction ;
        owl:allValuesFrom tm:OrdinalEra ;
        owl:onProperty tm:ordinalValue
    ], [
        a owl:Restriction ;
        owl:allValuesFrom tm:OrdinalReferenceSystem ;
        owl:onProperty tm:frame
    ] ;
    skos:notation "TM_OrdinalPosition"^^h2o:ISOClassName .

tm:OrdinalReferenceSystem
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Ordinal Reference System"^^xsd:string ;
    rdfs:subClassOf tm:ReferenceSystem ;
    skos:notation "TM_OrdinalReferenceSystem"^^h2o:ISOClassName .

tm:Period
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Period"^^xsd:string ;
    rdfs:subClassOf tm:GeometricPrimitive, [
        a owl:Restriction ;
        owl:allValuesFrom tm:Edge ;
        owl:onProperty tm:topology
    ], [
        a owl:Restriction ;
        owl:allValuesFrom tm:Instant ;
        owl:onProperty tm:begin
    ], [
        a owl:Restriction ;
        owl:allValuesFrom tm:Instant ;
        owl:onProperty tm:end
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:begin
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:end
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:topology
    ] ;
    skos:notation "TM_Period"^^h2o:ISOClassName .

tm:Primitive
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Primitive"^^xsd:string ;
    rdfs:subClassOf tm:Object ;
    skos:notation "TM_Primitive"^^h2o:ISOClassName .

tm:ReferenceSystem
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Reference System"^^xsd:string ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:allValuesFrom <../../iso19115/2003/extent#Extent> ;
        owl:onProperty tm:domainOfValidity
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:name
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:domainOfValidity
    ] ;
    skos:notation "TM_ReferenceSystem"^^h2o:ISOClassName .

tm:TemporalPosition
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal position"^^xsd:string ;
    rdfs:subClassOf [
        a owl:Class ;
        owl:unionOf ([
                a owl:Restriction ;
                owl:cardinality "1"^^xsd:nonNegativeInteger ;
                owl:onProperty tm:value
            ]
            [
                a owl:Restriction ;
                owl:cardinality "1"^^xsd:nonNegativeInteger ;
                owl:onProperty tm:ordinalValue
            ]
        )
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:frame
    ] ;
    skos:notation "TM_TemporalPosition"^^h2o:ISOClassName .

tm:TopologicalComplex
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal topologic complex"^^xsd:string ;
    rdfs:subClassOf tm:Complex, [
        a owl:Restriction ;
        owl:allValuesFrom tm:TopologicalPrimitive ;
        owl:onProperty tm:primitive
    ], [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:primitive
    ] ;
    skos:notation "TM_TopologicalComplex"^^h2o:ISOClassName .

tm:TopologicalPrimitive
    a owl:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Temporal Topological Primitive"^^xsd:string ;
    rdfs:subClassOf tm:Primitive, [
        a owl:Restriction ;
        owl:allValuesFrom tm:TopologicalComplex ;
        owl:onProperty tm:complex
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty tm:complex
    ] ;
    skos:notation "TM_TopologicalPrimitive"^^h2o:ISOClassName .

tm:begin
    a owl:ObjectProperty ;
    rdfs:comment "The value of this property defines the beginning of a time period"^^xsd:string ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (tm:Period
            tm:Edge
        )
    ] ;
    rdfs:isDefinedBy <> ;
    rdfs:label "beginning instant or node"^^xsd:string ;
    rdfs:range [
        a owl:Class ;
        owl:unionOf (tm:Instant
            tm:Node
        )
    ] ;
    owl:inverseOf tm:begunBy .

tm:begunBy
    a owl:ObjectProperty ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (tm:Instant
            tm:Node
        )
    ] ;
    rdfs:isDefinedBy <> ;
    rdfs:label "begun by"^^xsd:string ;
    rdfs:range [
        a owl:Class ;
        owl:unionOf (tm:Period
            tm:Edge
        )
    ] ;
    owl:inverseOf tm:begin .

tm:complex
    a owl:ObjectProperty ;
    rdfs:domain tm:Primitive ;
    rdfs:isDefinedBy <> ;
    rdfs:label "complex"^^xsd:string ;
    rdfs:range tm:Complex ;
    owl:inverseOf tm:primitive .

tm:component
    a owl:ObjectProperty ;
    rdfs:domain tm:OrdinalReferenceSystem ;
    rdfs:isDefinedBy <> ;
    rdfs:label "component era"^^xsd:string ;
    rdfs:range tm:OrdinalEra ;
    rdfs:subPropertyOf skos:hasTopConcept ;
    owl:inverseOf tm:system .

tm:date
    a owl:ObjectProperty ;
    rdfs:domain tm:DateAndTime ;
    rdfs:isDefinedBy <> ;
    rdfs:label "calendar date"^^xsd:string ;
    rdfs:range tm:CalDate .

tm:dateTimePosition
    a owl:DatatypeProperty ;
    rdfs:comment "The value of this property is a time encoded as an xsd:dateTime"^^xsd:string ;
    rdfs:domain tm:Instant ;
    rdfs:isDefinedBy <> ;
    rdfs:label "date or dateTime position"^^xsd:string ;
    rdfs:range [
        a rdfs:Datatype ;
        owl:unionOf (<../../iso19103/2005/basic#Date>
            <../../iso19103/2005/basic#DateTime>
        )
    ] .

tm:domainOfValidity
    a owl:ObjectProperty ;
    rdfs:domain tm:ReferenceSystem ;
    rdfs:isDefinedBy <> ;
    rdfs:label "domain of validity"^^xsd:string ;
    rdfs:range <../../iso19115/2003/extent#Extent> .

tm:end
    a owl:ObjectProperty ;
    rdfs:comment "The value of this property defines the end of a time period"^^xsd:string ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (tm:Period
            tm:Edge
        )
    ] ;
    rdfs:isDefinedBy <> ;
    rdfs:label "ending instant or node"^^xsd:string ;
    rdfs:range [
        a owl:Class ;
        owl:unionOf (tm:Instant
            tm:Node
        )
    ] ;
    owl:inverseOf tm:endedBy .

tm:endedBy
    a owl:ObjectProperty ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (tm:Instant
            tm:Node
        )
    ] ;
    rdfs:isDefinedBy <> ;
    rdfs:label "ended by"^^xsd:string ;
    rdfs:range [
        a owl:Class ;
        owl:unionOf (tm:Period
            tm:Edge
        )
    ] ;
    owl:inverseOf tm:end .

tm:frame
    a owl:ObjectProperty ;
    rdfs:comment "The value of this property indicates the temporal reference system for a time position"^^xsd:string ;
    rdfs:domain tm:TemporalPosition ;
    rdfs:isDefinedBy <> ;
    rdfs:label "temporal reference system or frame"^^xsd:string ;
    rdfs:range tm:ReferenceSystem .

tm:geometry
    a owl:ObjectProperty ;
    rdfs:domain tm:TopologicalPrimitive ;
    rdfs:isDefinedBy <> ;
    rdfs:label "temporal geometry"^^xsd:string ;
    rdfs:range tm:GeometricPrimitive ;
    owl:inverseOf tm:topology .

tm:group
    a owl:ObjectProperty ;
    rdfs:domain tm:OrdinalEra ;
    rdfs:isDefinedBy <> ;
    rdfs:label "parent era"^^xsd:string ;
    rdfs:range tm:OrdinalEra ;
    owl:inverseOf tm:member .

tm:member
    a owl:ObjectProperty ;
    rdfs:domain tm:OrdinalEra ;
    rdfs:isDefinedBy <> ;
    rdfs:label "member era"^^xsd:string ;
    rdfs:range tm:OrdinalEra ;
    owl:inverseOf tm:group .

tm:name
    a owl:ObjectProperty ;
    rdfs:isDefinedBy <> ;
    rdfs:label "name"^^xsd:string .

tm:nextEdge
    a owl:ObjectProperty ;
    rdfs:domain tm:Node ;
    rdfs:isDefinedBy <> ;
    rdfs:label "next edge"^^xsd:string ;
    rdfs:range tm:Edge ;
    rdfs:subPropertyOf tm:begunBy .

tm:ordinalValue
    a owl:ObjectProperty ;
    rdfs:domain tm:OrdinalPosition ;
    rdfs:isDefinedBy <> ;
    rdfs:label "ordinal time position"^^xsd:string ;
    rdfs:range tm:OrdinalEra .

tm:previousEdge
    a owl:ObjectProperty ;
    rdfs:domain tm:Node ;
    rdfs:isDefinedBy <> ;
    rdfs:label "previous edge"^^xsd:string ;
    rdfs:range tm:Edge ;
    rdfs:subPropertyOf tm:endedBy .

tm:primitive
    a owl:ObjectProperty ;
    rdfs:domain tm:Complex ;
    rdfs:isDefinedBy <> ;
    rdfs:label "primitive member"^^xsd:string ;
    rdfs:range tm:Primitive ;
    owl:inverseOf tm:complex .

tm:system
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:domain tm:OrdinalEra ;
    rdfs:isDefinedBy <> ;
    rdfs:label "parent reference system"^^xsd:string ;
    rdfs:range tm:OrdinalReferenceSystem ;
    owl:inverseOf tm:component .

tm:temporalPosition
    a owl:ObjectProperty ;
    rdfs:isDefinedBy <> ;
    rdfs:label "temporal position"^^xsd:string ;
    rdfs:range tm:TemporalPosition .

tm:time
    a owl:ObjectProperty ;
    rdfs:domain tm:DateAndTime ;
    rdfs:isDefinedBy <> ;
    rdfs:label "clock time"^^xsd:string ;
    rdfs:range tm:ClockTime .

tm:topology
    a owl:ObjectProperty ;
    rdfs:domain tm:GeometricPrimitive ;
    rdfs:isDefinedBy <> ;
    rdfs:label "temporal topology"^^xsd:string ;
    rdfs:range tm:TopologicalPrimitive ;
    owl:inverseOf tm:geometry .

tm:value
    a owl:DatatypeProperty ;
    rdfs:domain tm:TemporalPosition ;
    rdfs:isDefinedBy <> ;
    rdfs:label "temporal position value"^^xsd:string ;
    rdfs:subPropertyOf rdf:value .

