@prefix core: <https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/CityGML/2.0/core#> .
@prefix doc: <https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/Document/2.0/document#> .
@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 skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix vers: <https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/Versioning/2.0/versioning#> .
@prefix wksp: <https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/Workspace/2.0/workspace#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/Versioning/2.0/versioning> a owl:Ontology ;
    rdfs:label "Version"@en ;
    owl:imports <http://def.isotc211.org/iso19150/-2/2012/base>,
        <https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/CityGML/2.0/core.ttl>,
        <https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/Document/2.0/document.ttl>,
        <https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/Workspace/2.0/workspace.ttl> ;
    skos:prefLabel "Version"@en .

vers:Version.tag a owl:DatatypeProperty ;
    rdfs:label "tag"@en ;
    rdfs:domain vers:Version ;
    rdfs:range xsd:string ;
    skos:prefLabel "tag"@en .

vers:Version.versionMember a owl:ObjectProperty ;
    rdfs:label "versionMember"@en ;
    rdfs:domain vers:Version ;
    rdfs:range vers:VersionableAbstractCityObject ;
    skos:prefLabel "versionMember"@en .

vers:VersionTransition.transaction a owl:ObjectProperty ;
    rdfs:label "transaction"@en ;
    rdfs:domain vers:VersionTransition ;
    rdfs:range vers:Transaction ;
    skos:prefLabel "transaction"@en .

vers:Transaction.newFeature a owl:ObjectProperty ;
    rdfs:label "newFeature"@en ;
    rdfs:domain vers:Transaction ;
    rdfs:range vers:VersionableAbstractCityObject ;
    skos:prefLabel "newFeature"@en .

vers:Transaction.oldFeature a owl:ObjectProperty ;
    rdfs:label "oldFeature"@en ;
    rdfs:domain vers:Transaction ;
    rdfs:range vers:VersionableAbstractCityObject ;
    skos:prefLabel "oldFeature"@en .

vers:Transaction.type a owl:DatatypeProperty ;
    rdfs:label "type"@en ;
    rdfs:domain vers:Transaction ;
    rdfs:range vers:TransactionValue ;
    skos:prefLabel "type"@en .

vers:Version.type a owl:DatatypeProperty ;
    rdfs:label "type"@en ;
    rdfs:domain vers:Version ;
    rdfs:range vers:VersionType ;
    skos:prefLabel "type"@en .

vers:VersionTransition.clonePredecessor a owl:DatatypeProperty ;
    rdfs:label "clonePredecessor"@en ;
    rdfs:domain vers:VersionTransition ;
    rdfs:range xsd:boolean ;
    skos:prefLabel "clonePredecessor"@en .

vers:VersionTransition.from a owl:ObjectProperty ;
    rdfs:label "from"@en ;
    rdfs:domain vers:VersionTransition ;
    rdfs:range vers:Version ;
    skos:prefLabel "from"@en .

vers:VersionTransition.reason a owl:DatatypeProperty ;
    rdfs:label "reason"@en ;
    rdfs:domain vers:VersionTransition ;
    rdfs:range xsd:string ;
    skos:prefLabel "reason"@en .

vers:VersionTransition.to a owl:ObjectProperty ;
    rdfs:label "to"@en ;
    rdfs:domain vers:VersionTransition ;
    rdfs:range vers:Version ;
    skos:prefLabel "to"@en .

vers:VersionTransition.type a owl:DatatypeProperty ;
    rdfs:label "type"@en ;
    rdfs:domain vers:VersionTransition ;
    rdfs:range vers:TransitionValue ;
    skos:prefLabel "type"@en .

vers:VersionableAbstractCityObject.validFrom a owl:DatatypeProperty ;
    rdfs:label "validFrom"@en ;
    rdfs:domain vers:VersionableAbstractCityObject ;
    rdfs:range xsd:dateTime ;
    skos:prefLabel "validFrom"@en .

vers:VersionableAbstractCityObject.validTo a owl:DatatypeProperty ;
    rdfs:label "validTo"@en ;
    rdfs:domain vers:VersionableAbstractCityObject ;
    rdfs:range xsd:dateTime ;
    skos:prefLabel "validTo"@en .

vers:TransactionValue a rdfs:Datatype ;
    rdfs:label "TransactionValue"@en ;
    owl:equivalentClass [ a rdfs:Datatype ;
            owl:oneOf ( "insert" "delete" "replace" ) ] ;
    skos:prefLabel "TransactionValue"@en .

vers:TransitionValue a rdfs:Datatype ;
    rdfs:label "TransitionValue"@en ;
    owl:equivalentClass [ a rdfs:Datatype ;
            owl:oneOf ( "planned" "realized" "historical succession" "fork" "merge" ) ] ;
    skos:prefLabel "TransitionValue"@en .

vers:VersionType a rdfs:Datatype ;
    rdfs:label "VersionType"@en ;
    owl:equivalentClass [ a rdfs:Datatype ;
            owl:oneOf ( "Existing" "Imagined" ) ] ;
    skos:prefLabel "VersionType"@en .

vers:Transaction a owl:Class ;
    rdfs:label "Transaction"@en ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:allValuesFrom vers:VersionableAbstractCityObject ;
            owl:onProperty vers:Transaction.newFeature ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onClass vers:VersionableAbstractCityObject ;
            owl:onProperty vers:Transaction.newFeature ],
        [ a owl:Restriction ;
            owl:allValuesFrom vers:VersionableAbstractCityObject ;
            owl:onProperty vers:Transaction.oldFeature ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onClass vers:VersionableAbstractCityObject ;
            owl:onProperty vers:Transaction.oldFeature ],
        [ a owl:Restriction ;
            owl:allValuesFrom vers:TransactionValue ;
            owl:onProperty vers:Transaction.type ],
        [ a owl:Restriction ;
            owl:onDataRange vers:TransactionValue ;
            owl:onProperty vers:Transaction.type ;
            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ] ;
    skos:prefLabel "Transaction"@en .

vers:VersionTransition a owl:Class ;
    rdfs:label "VersionTransition"@en ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:allValuesFrom vers:Transaction ;
            owl:onProperty vers:VersionTransition.transaction ],
        [ a owl:Restriction ;
            owl:allValuesFrom vers:Version ;
            owl:onProperty vers:VersionTransition.to ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onDataRange vers:TransitionValue ;
            owl:onProperty vers:VersionTransition.type ],
        [ a owl:Restriction ;
            owl:allValuesFrom xsd:boolean ;
            owl:onProperty vers:VersionTransition.clonePredecessor ],
        [ a owl:Restriction ;
            owl:allValuesFrom vers:TransitionValue ;
            owl:onProperty vers:VersionTransition.type ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onClass vers:Version ;
            owl:onProperty vers:VersionTransition.to ],
        [ a owl:Restriction ;
            owl:allValuesFrom xsd:string ;
            owl:onProperty vers:VersionTransition.reason ],
        [ a owl:Restriction ;
            owl:onDataRange xsd:boolean ;
            owl:onProperty vers:VersionTransition.clonePredecessor ;
            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onDataRange xsd:string ;
            owl:onProperty vers:VersionTransition.reason ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onClass vers:Version ;
            owl:onProperty vers:VersionTransition.from ],
        [ a owl:Restriction ;
            owl:allValuesFrom vers:Version ;
            owl:onProperty vers:VersionTransition.from ],
        vers:VersionableAbstractCityObject ;
    skos:prefLabel "VersionTransition"@en .

vers:Version a owl:Class ;
    rdfs:label "Version"@en ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:allValuesFrom vers:VersionableAbstractCityObject ;
            owl:onProperty vers:Version.versionMember ],
        [ a owl:Restriction ;
            owl:allValuesFrom vers:VersionType ;
            owl:onProperty vers:Version.type ],
        [ a owl:Restriction ;
            owl:onDataRange vers:VersionType ;
            owl:onProperty vers:Version.type ;
            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ],
        [ a owl:Restriction ;
            owl:allValuesFrom xsd:string ;
            owl:onProperty vers:Version.tag ],
        vers:VersionableAbstractCityObject ;
    skos:prefLabel "Version"@en .

vers:VersionableAbstractCityObject a owl:Class ;
    rdfs:label "VersionableAbstractCityObject"@en ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:allValuesFrom xsd:dateTime ;
            owl:onProperty vers:VersionableAbstractCityObject.validTo ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onDataRange xsd:dateTime ;
            owl:onProperty vers:VersionableAbstractCityObject.validTo ],
        [ a owl:Restriction ;
            owl:allValuesFrom xsd:dateTime ;
            owl:onProperty vers:VersionableAbstractCityObject.validFrom ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onDataRange xsd:dateTime ;
            owl:onProperty vers:VersionableAbstractCityObject.validFrom ],
        core:AbstractCityObject ;
    skos:prefLabel "VersionableAbstractCityObject"@en .

[] a owl:AllDisjointClasses ;
    owl:members ( doc:Document vers:Version vers:VersionTransition wksp:Scenario wksp:Space wksp:Workspace ) .

