@prefix core: <https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/CityGML/2.0/core#> .
@prefix gmlowl: <http://www.opengis.net/ont/gml#> .
@prefix grp: <https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/CityGML/2.0/cityobjectgroup#> .
@prefix iso19136-bt: <http://def.isotc211.org/iso19136/2007/BasicTypes#> .
@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 xsd: <http://www.w3.org/2001/XMLSchema#> .

<https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/CityGML/2.0/cityobjectgroup> a owl:Ontology ;
    rdfs:label "CityObjectGroup"@en ;
    owl:imports <http://def.isotc211.org/iso19150/-2/2012/base>,
        <http://www.opengis.net/ont/gml>,
        <https://dataset-dl.liris.cnrs.fr/rdf-owl-urban-data-ontologies/Ontologies/CityGML/2.0/core.ttl> ;
    skos:prefLabel "CityObjectGroup"@en .

grp:CityObjectGroup.function a owl:ObjectProperty ;
    rdfs:label "function"@en ;
    rdfs:domain grp:CityObjectGroup ;
    rdfs:range iso19136-bt:Code ;
    skos:definition "SIG3D: Specific semantic meaning of the aggregation. Function of the aggregation as given by the relevant national regulations, information communities, or specific applications."@en ;
    skos:prefLabel "function"@en .

grp:CityObjectGroup.groupMember a owl:ObjectProperty ;
    rdfs:label "groupMember"@en ;
    rdfs:domain grp:CityObjectGroup ;
    rdfs:range grp:Role ;
    skos:prefLabel "groupMember"@en .

grp:CityObjectGroup.usage a owl:ObjectProperty ;
    rdfs:label "usage"@en ;
    rdfs:domain grp:CityObjectGroup ;
    rdfs:range iso19136-bt:Code ;
    skos:definition "SIG3D: Usage of the aggregation as given by the relevant national regulations, information communities, or specific applications."@en ;
    skos:prefLabel "usage"@en .

grp:CityObjectGroup.class a owl:ObjectProperty ;
    rdfs:label "class"@en ;
    rdfs:domain grp:CityObjectGroup ;
    rdfs:range iso19136-bt:Code ;
    skos:definition "SIG3D: General semantical meaning of the aggregation. Classification of the aggregation as given by the relevant national regulations, information communities, or specific applications."@en ;
    skos:prefLabel "class"@en .

grp:CityObjectGroup.geometry a owl:ObjectProperty ;
    rdfs:label "geometry"@en ;
    rdfs:domain grp:CityObjectGroup ;
    rdfs:range gmlowl:AbstractGeometry ;
    skos:definition "SIG3D: Specific geometry assigned to the aggregation (e. g. the floor surface of a building storey represented by an aggregation of rooms)."@en ;
    skos:prefLabel "geometry"@en .

grp:CityObjectGroup.parent a owl:ObjectProperty ;
    rdfs:label "parent"@en ;
    rdfs:domain grp:CityObjectGroup ;
    rdfs:range core:AbstractCityObject ;
    skos:definition "SIG3D: Reference to an AbstractCityObject related to the aggregation as a whole (e.g. the corresponding building object for the aggregation of rooms to a storey)."@en ;
    skos:prefLabel "parent"@en .

grp:Role.groupMember a owl:ObjectProperty ;
    rdfs:label "groupMember"@en ;
    rdfs:domain grp:Role ;
    rdfs:range core:AbstractCityObject ;
    skos:definition "SIG3D: Reference to a city object."@en ;
    skos:prefLabel "groupMember"@en .

grp:Role.role a owl:DatatypeProperty ;
    rdfs:label "role"@en ;
    rdfs:domain grp:Role ;
    rdfs:range xsd:string ;
    skos:definition "SIG3D: Description of the role."@en ;
    skos:prefLabel "role"@en .

grp:Role a owl:Class ;
    rdfs:label "Role"@en ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:allValuesFrom core:AbstractCityObject ;
            owl:onProperty grp:Role.groupMember ],
        [ a owl:Restriction ;
            owl:onClass core:AbstractCityObject ;
            owl:onProperty grp:Role.groupMember ;
            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ],
        [ a owl:Restriction ;
            owl:allValuesFrom xsd:string ;
            owl:onProperty grp:Role.role ],
        [ a owl:Restriction ;
            owl:onDataRange xsd:string ;
            owl:onProperty grp:Role.role ;
            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ] ;
    skos:definition "SIG3D: Specification of a CityObject and its specific role in a CityObjectGroup."@en ;
    skos:prefLabel "Role"@en .

grp:CityObjectGroup a owl:Class ;
    rdfs:label "CityObjectGroup"@en ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:allValuesFrom iso19136-bt:Code ;
            owl:onProperty grp:CityObjectGroup.usage ],
        [ a owl:Restriction ;
            owl:allValuesFrom core:AbstractCityObject ;
            owl:onProperty grp:CityObjectGroup.parent ],
        [ a owl:Restriction ;
            owl:allValuesFrom gmlowl:AbstractGeometry ;
            owl:onProperty grp:CityObjectGroup.geometry ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onClass gmlowl:AbstractGeometry ;
            owl:onProperty grp:CityObjectGroup.geometry ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onClass core:AbstractCityObject ;
            owl:onProperty grp:CityObjectGroup.parent ],
        [ a owl:Restriction ;
            owl:allValuesFrom iso19136-bt:Code ;
            owl:onProperty grp:CityObjectGroup.function ],
        [ a owl:Restriction ;
            owl:allValuesFrom iso19136-bt:Code ;
            owl:onProperty grp:CityObjectGroup.class ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onClass iso19136-bt:Code ;
            owl:onProperty grp:CityObjectGroup.class ],
        [ a owl:Restriction ;
            owl:allValuesFrom grp:Role ;
            owl:onProperty grp:CityObjectGroup.groupMember ],
        core:AbstractCityObject ;
    skos:definition "SIG3D: Aggregation of city objects according to user defined criteria (e.g. grouping of rooms belonging to a certain storey)."@en ;
    skos:prefLabel "CityObjectGroup"@en .

