@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <http://lbd.arch.rwth-aachen.de/bcfOWL#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix terms: <http://purl.org/dc/terms/> .

<http://lbd.arch.rwth-aachen.de/bcfOWL#>
    terms:creator "Jakob Beetz", "Jyrki Oraskai", "Oliver Schulz" ;
    terms:description "BCF 2.1 Ontology Description based on https://github.com/buildingSMART/BCF-XML" ;
    terms:license "https://creativecommons.org/licenses/by/4.0/" ;
    terms:title "BIM collaboration Format Ontology" ;
    vann:prefferedNamespacePrefix "bcfOWL" ;
    vann:prefferedNamespaceURI "http://lbd.arch.rwth-aachen.de/bcfOWL#" ;
    a owl:Ontology ;
    owl:versionIRI <http://lbd.arch.rwth-aachen.de/bcfOWL#> ;
    owl:versionInfo "0.7.0" .

:Bitmap
    a owl:Class ;
    rdfs:comment "A list of bitmaps can be used to add more information, for example, text in the visualization."@en ;
    rdfs:label "Bitmap"@en .

:Camera
    a owl:Class ;
    rdfs:comment "Camera View"@en ;
    rdfs:label "Camera"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCameraDirection
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCameraUpVector
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCameraViewPoint
    ] .

:ClippingPlanes
    a owl:Class ;
    rdfs:comment "ClippingPlanes can be used to define a subsection of a building model that is related to the topic. Each clipping plane is defined by Location and Direction."@en ;
    rdfs:label "Clipping Planes"@en .

:Coloring
    a owl:Class ;
    rdfs:comment "The Coloring element lists colors and a list of associated components that should be displayed with the specified color when displaying a viewpoint. The color is given in ARGB format. Colors are represented as 6 or 8 hexadecimal digits. If 8 digits are present, the first two represent the alpha (transparency) channel. For example, 40E0D0 would be the color <span style=\"color:#40E0D0;\";>Turquoise. More information about the color format can be found on Wikipedia."@en ;
    rdfs:label "Coloring"@en .

:Comment
    a owl:Class ;
    rdfs:comment "The markup file can contain comments related to the topic. Their purpose is to record discussion between different parties related to the topic. Comment has also the Guid attribute for identifying it uniquely."@en ;
    rdfs:label "Comment"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCommentModifiedAuthor
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasViewpoint
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasAuthor
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasProject
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopic
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCommentModifiedAuthor
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasViewpoint
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCommentModifiedDate
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCommentDate
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCommentText
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCommentModifiedDate
    ] .

:Component
    a owl:Class ;
    rdfs:comment "A component that links to a building element." ;
    rdfs:label "Component"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasIfcElement
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasOriginatingSystem
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasIfcElement
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasOriginatingSystem
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasAuthoringToolId
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasIfcGuid
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasAuthoringToolId
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasIfcGuid
    ] .

:Exception
    a owl:Class ;
    rdfs:comment "Components to hide/show determined by default_visibility."@en ;
    rdfs:label "Exception"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasComponent
    ] .

:ExtensionSchema
    a owl:Class ;
    rdfs:comment "The extension define the mapping of a BCF project."@en ;
    rdfs:label "Extension Schema"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasAuthor
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasLabels
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasPriority
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasStage
    ], [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopicStatus
    ], [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopicType
    ] .

:Label
    a owl:Class ;
    rdfs:comment "The label is for tagging the Issue to be able to make a better categorization"@en ;
    rdfs:label "Label"@en .

:Lines
    a owl:Class ;
    rdfs:comment "Lines can be used to add markup in 3D. Each line is defined by three dimensional Start Point and End Point. Lines that have the same start and end points are to be considered points and may be displayed accordingly."@en ;
    rdfs:label "Lines"@en .

:OriginatingSystem
    a owl:Class ;
    rdfs:comment "Software with which the respective element was created"@en ;
    rdfs:label "Originating System"@en .

:OrthogonalCamera
    a owl:Class ;
    rdfs:comment "This element describes a viewpoint using orthogonal camera. "@en ;
    rdfs:label "Orthogonal Camera"@en ;
    rdfs:subClassOf :Camera, [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasViewToWorldScale
    ] ;
    owl:disjointWith :PerspectiveCamera .

:PerspectiveCamera
    a owl:Class ;
    rdfs:comment "This element describes a viewpoint using perspective camera."@en ;
    rdfs:label "Perspective Camera"@en ;
    rdfs:subClassOf :Camera, [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasFieldOfView
    ] .

:Priority
    a owl:Class ;
    rdfs:comment "Indication of the Priority of an Issue"@en ;
    rdfs:label "Priority"@en .

:Project
    a owl:Class ;
    rdfs:comment "The project contains reference information about the project the topics belong to."@en ;
    rdfs:label "Project"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasExtensionSchema
    ], [
        a owl:Restriction ;
        owl:cardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasGuid
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasName
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasProjectId
    ] .

:Selection
    a owl:Class ;
    rdfs:comment "Selected components	"@en ;
    rdfs:label "Selection"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasComponent
    ] .

:Stage
    a owl:Class ;
    rdfs:comment "To what stage of the project does the Topic relate to?"@en ;
    rdfs:label "Stage"@en .

:Topic
    a owl:Class ;
    rdfs:comment "Topic node contains reference information of the topic. It has one attribute, Guid, which is the topic GUID."@en ;
    rdfs:label "Topic"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasAssignedTo
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasLabels
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasPriority
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasStage
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopicModifiedAuthor
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopicStatus
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopicType
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCreationAuthor
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasAssignedTo
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasPriority
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasStage
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopicModifiedAuthor
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopicStatus
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopicType
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasDescription
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasDueDate
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasIndex
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopicModifiedDate
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasCreationDate
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasGuid
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTitle
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasDescription
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasDueDate
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasIndex
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopicModifiedDate
    ] .

:TopicStatus
    a owl:Class ;
    rdfs:comment "Status of the issue. Is it still active or closed?"@en ;
    rdfs:label "Topic Status"@en .

:TopicType
    a owl:Class ;
    rdfs:comment "The Topic Type specifies the use case of a BCF Issue. E.g. an Information request, an error etc."@en ;
    rdfs:label "Topic Type"@en .

:Viewpoint
    a owl:Class ;
    rdfs:comment "The markup file can contain multiple viewpoints related to one or more comments. A viewpoint has also the Guid attribute for identifying it uniquely."@en ;
    rdfs:label "Viewpoint"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasOrthogonalCamera
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasPerspectiveCamera
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasSelection
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasProject
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasTopic
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasException
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasOrthogonalCamera
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasPerspectiveCamera
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasSelection
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasSnapshot
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :spacesVisible
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasDefaulVisibility
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasGuid
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :openingsVisible
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :spaceBoundariesVisible
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasSnapshot
    ], [
        a owl:Restriction ;
        owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty :spacesVisible
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasColoring
    ], [
        a owl:Restriction ;
        owl:minCardinality "0"^^xsd:nonNegativeInteger ;
        owl:onProperty :hasException
    ] .

:hasAspectRatio
    a owl:DatatypeProperty ;
    rdfs:comment "Proportional relationship between the width and the height of the view (w/h)"@en ;
    rdfs:domain :Camera ;
    rdfs:label "has Aspect Ratio"@en ;
    rdfs:range xsd:double .

:hasAssignedTo
    a owl:ObjectProperty ;
    rdfs:comment "The user to whom this topic is assigned to. Recommended to be in email format. The list of possible values are defined in the extension schema."@en ;
    rdfs:domain :Topic ;
    rdfs:label "has Assigned To"@en ;
    rdfs:range <http://xmlns.com/foaf/0.1/Person> .

:hasAuthor
    a owl:ObjectProperty ;
    rdfs:comment "Comment author"@en ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:Comment
            :ExtensionSchema
        )
    ] ;
    rdfs:label "has Author"@en ;
    rdfs:range <http://xmlns.com/foaf/0.1/Person> .

:hasAuthoringToolId
    a owl:DatatypeProperty ;
    rdfs:comment "Name of the system in which the component is originated"@en ;
    rdfs:domain :Component ;
    rdfs:label "has Authoring Tool Id"@en ;
    rdfs:range xsd:string .

:hasBitmap
    a owl:ObjectProperty ;
    rdfs:comment "Object Property, pointing to the Bitmap"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "has Bitmap"@en ;
    rdfs:range :Bitmap .

:hasCameraDirection
    a owl:DatatypeProperty, owl:ObjectProperty ;
    rdfs:comment "Points to the Camera direction, defined as wktLiteral"@en ;
    rdfs:domain :Camera ;
    rdfs:label "has Camera Direction"@en ;
    rdfs:range <http://www.opengis.net/ont/geosparql#wktLiteral> .

:hasCameraUpVector
    a owl:DatatypeProperty, owl:ObjectProperty ;
    rdfs:comment "Points to the Camera up vector, defined as wktLiteral"@en ;
    rdfs:domain :Camera ;
    rdfs:label "has Camera Up Vector"@en ;
    rdfs:range <http://www.opengis.net/ont/geosparql#wktLiteral> .

:hasCameraViewPoint
    a owl:DatatypeProperty, owl:ObjectProperty ;
    rdfs:comment "Points to the Camera location, defined as wktLiteral"@en ;
    rdfs:domain :Camera ;
    rdfs:label "has Camera View Point"@en ;
    rdfs:range <http://www.opengis.net/ont/geosparql#wktLiteral> .

:hasClippingPlanes
    a owl:ObjectProperty ;
    rdfs:comment "Object Property, pointing to the Clipping Planes"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "has Clipping Planes"@en ;
    rdfs:range :ClippingPlanes .

:hasColoring
    a owl:ObjectProperty ;
    rdfs:comment "Object Property, pointing to the Coloring class"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "has Coloring"@en ;
    rdfs:range :Coloring .

:hasCommentDate
    a owl:DatatypeProperty ;
    rdfs:comment "Date of the comment"@en ;
    rdfs:domain :Comment ;
    rdfs:label "has Comment Date"@en ;
    rdfs:range xsd:dateTime .

:hasCommentModifiedAuthor
    a owl:ObjectProperty ;
    rdfs:comment "The author who modified the comment"@en ;
    rdfs:domain :Comment ;
    rdfs:label "has Comment Modified Author"@en ;
    rdfs:range <http://xmlns.com/foaf/0.1/Person> .

:hasCommentModifiedDate
    a owl:DatatypeProperty ;
    rdfs:comment "The date when comment was modified"@en ;
    rdfs:domain :Comment ;
    rdfs:label "has Comment Modified Date"@en ;
    rdfs:range xsd:dateTime .

:hasCommentText
    a owl:DatatypeProperty ;
    rdfs:comment "The comment text"@en ;
    rdfs:domain :Comment ;
    rdfs:label "has Comment Text"@en ;
    rdfs:range xsd:string .

:hasComponent
    a owl:ObjectProperty ;
    rdfs:comment "Pointer to the Component"@en ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:Exception
            :Selection
        )
    ] ;
    rdfs:label "has Component"@en ;
    rdfs:range :Component .

:hasCreationAuthor
    a owl:ObjectProperty ;
    rdfs:comment "User who created the topic."@en ;
    rdfs:domain :Topic ;
    rdfs:label "has Creation Author"@en ;
    rdfs:range <http://xmlns.com/foaf/0.1/Person> .

:hasCreationDate
    a owl:DatatypeProperty ;
    rdfs:comment "Date when the topic was created."@en ;
    rdfs:domain :Topic ;
    rdfs:label "has Creation Date"@en ;
    rdfs:range xsd:dateTime .

:hasDefaulVisibility
    a owl:DatatypeProperty ;
    rdfs:comment "Object Property, pointing to the Default Visibility"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "has Default Visibility"@en ;
    rdfs:range xsd:boolean .

:hasDescription
    a owl:DatatypeProperty ;
    rdfs:comment "Description of the topic."@en ;
    rdfs:domain :Topic ;
    rdfs:label "has Description"@en ;
    rdfs:range xsd:string .

:hasDueDate
    a owl:DatatypeProperty ;
    rdfs:comment "Date until when the topics issue needs to be resolved."@en ;
    rdfs:domain :Topic ;
    rdfs:label "has Due Date"@en ;
    rdfs:range xsd:dateTime .

:hasException
    a owl:ObjectProperty ;
    rdfs:comment "Object Property, pointing to the Exception"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "has Exception"@en ;
    rdfs:range :Exception .

:hasExtensionSchema
    a owl:ObjectProperty ;
    rdfs:comment "URI to the extension schema."@en ;
    rdfs:domain :Project ;
    rdfs:label "has Extension Schema"@en ;
    rdfs:range :ExtensionSchema .

:hasFieldOfView
    a owl:DatatypeProperty ;
    rdfs:comment "Camera's field of view angle in degrees."@en ;
    rdfs:domain :PerspectiveCamera ;
    rdfs:label "has Vield Of View"@en ;
    rdfs:range xsd:double .

:hasGuid
    a owl:DatatypeProperty ;
    rdfs:comment "The GUID of the resource"@en ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:Comment
            :Project
            :Topic
            :Viewpoint
        )
    ] ;
    rdfs:label "has GUID"@en ;
    rdfs:range xsd:string .

:hasIfcElement
    a owl:ObjectProperty ;
    rdfs:comment "The link to the linked data Ifc Element."@en ;
    rdfs:domain :Component ;
    rdfs:label "has Ifc Element"@en ;
    rdfs:range [
        a owl:Class ;
        owl:unionOf (<http://www.buildingsmart-tech.org/ifcOWL/IFC2X3_Final#IfcProduct>
            <https://w3id.org/bot#Element>
        )
    ] .

:hasIfcGuid
    a owl:DatatypeProperty ;
    rdfs:comment "The IfcGuid of the component"@en ;
    rdfs:domain :Component ;
    rdfs:label "has Ifc Guid"@en ;
    rdfs:range xsd:string .

:hasIndex
    a owl:DatatypeProperty ;
    rdfs:comment "Number to maintain the order of the topics."@en, "Parameter for sorting"@en ;
    rdfs:domain :Topic ;
    rdfs:label "has Index"@en ;
    rdfs:range xsd:integer .

:hasLabels
    a owl:ObjectProperty ;
    rdfs:comment "Tags for grouping Topics. The list of possible values are defined in the extension schema."@en ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:ExtensionSchema
            :Topic
        )
    ] ;
    rdfs:label "has Label"@en ;
    rdfs:range :Label .

:hasLines
    a owl:ObjectProperty ;
    rdfs:comment "Object Property, pointing to the Lines"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "has Lines"@en ;
    rdfs:range :Lines .

:hasName
    a owl:DatatypeProperty ;
    rdfs:comment "Name of the project."@en ;
    rdfs:domain :Project ;
    rdfs:label "has Name"@en ;
    rdfs:range xsd:string .

:hasOriginatingSystem
    a owl:ObjectProperty ;
    rdfs:comment "Name of the system in which the component is originated"@en ;
    rdfs:domain :Component ;
    rdfs:label "has Originating System"@en ;
    rdfs:range :OriginatingSystem .

:hasOrthogonalCamera
    a owl:ObjectProperty ;
    rdfs:comment "Object Property, pointing to the orthogonal camera"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "has Orthogonal Camera"@en ;
    rdfs:range :OrthogonalCamera .

:hasPerspectiveCamera
    a owl:ObjectProperty ;
    rdfs:comment "Object Property, pointing to the Perspective Camera"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "has Perspective Camera"@en ;
    rdfs:range :PerspectiveCamera .

:hasPriority
    a owl:ObjectProperty ;
    rdfs:comment "Topic priority. The list of possible values are defined in the extension schema."@en ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:ExtensionSchema
            :Topic
        )
    ] ;
    rdfs:label "has Priority"@en ;
    rdfs:range :Priority .

:hasProject
    a owl:ObjectProperty ;
    rdfs:comment "Reference to the corresponding Project"@en ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:Comment
            :Topic
            :Viewpoint
        )
    ] ;
    rdfs:label "has Project"@en ;
    rdfs:range :Project .

:hasProjectId
    a owl:DatatypeProperty ;
    rdfs:comment "GUID of the Project"@en ;
    rdfs:domain :Project ;
    rdfs:label "has Project ID"@en ;
    rdfs:range xsd:string .

:hasSelection
    a owl:ObjectProperty ;
    rdfs:comment "Object Property, pointing to the Selection class"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "has Selection"@en ;
    rdfs:range :Selection .

:hasSnapshot
    a owl:DatatypeProperty ;
    rdfs:comment "The URL of the snapshot(.png)"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "has Snapshot"@en ;
    rdfs:range xsd:anyURI .

:hasStage
    a owl:ObjectProperty ;
    rdfs:comment "Stage this topic is part of (Predefined list)."@en ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:ExtensionSchema
            :Topic
        )
    ] ;
    rdfs:label "has Stage"@en ;
    rdfs:range :Stage .

:hasTitle
    a owl:DatatypeProperty ;
    rdfs:comment "Title of the topic."@en ;
    rdfs:domain :Topic ;
    rdfs:label "has Title"@en ;
    rdfs:range xsd:string .

:hasTopic
    a owl:ObjectProperty ;
    rdfs:comment "A link to the relating comment"@en ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:Comment
            :Viewpoint
        )
    ] ;
    rdfs:label "has Topic"@en ;
    rdfs:range :Topic .

:hasTopicModifiedAuthor
    a owl:ObjectProperty ;
    rdfs:comment "User who modified the topic. Exists only when Topic has been modified after creation."@en ;
    rdfs:domain :Topic ;
    rdfs:label "has Topic Modified Author"@en ;
    rdfs:range <http://xmlns.com/foaf/0.1/Person> .

:hasTopicModifiedDate
    a owl:DatatypeProperty ;
    rdfs:comment "Date when the topic was last modified. Exists only when Topic has been modified after creation."@en ;
    rdfs:domain :Topic ;
    rdfs:label "has Topic Modified Date"@en ;
    rdfs:range xsd:dateTime .

:hasTopicStatus
    a owl:ObjectProperty ;
    rdfs:comment "Type of the topic (Predefined list)"@en ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:ExtensionSchema
            :Topic
        )
    ] ;
    rdfs:label "has Topic Status"@en ;
    rdfs:range :TopicStatus .

:hasTopicType
    a owl:ObjectProperty ;
    rdfs:comment "Type of the topic (Predefined list)"@en ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:ExtensionSchema
            :Topic
        )
    ] ;
    rdfs:label "has Topic Type"@en ;
    rdfs:range :TopicType .

:hasViewToWorldScale
    a owl:DatatypeProperty ;
    rdfs:comment "Proportion of camera view to model"@en ;
    rdfs:domain :OrthogonalCamera ;
    rdfs:label "has View To World Scale"@en ;
    rdfs:range xsd:double .

:hasViewpoint
    a owl:ObjectProperty ;
    rdfs:comment "Back reference to the viewpoint"@en, "The viewpoint "@en ;
    rdfs:domain :Comment ;
    rdfs:label "has Viewpoint"@en ;
    rdfs:range :Viewpoint .

:openingsVisible
    a owl:DatatypeProperty ;
    rdfs:comment "Object Property, pointing to the Openings Visible class"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "openings Visible"@en ;
    rdfs:range xsd:boolean .

:spaceBoundariesVisible
    a owl:DatatypeProperty ;
    rdfs:comment "Object Property, pointing to the Space Boundaries Visible class"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "space Boundaries Visible"@en ;
    rdfs:range xsd:boolean .

:spacesVisible
    a owl:DatatypeProperty ;
    rdfs:comment "Object Property, pointing to the Spaces Visible class"@en ;
    rdfs:domain :Viewpoint ;
    rdfs:label "spaces Visible"@en ;
    rdfs:range xsd:boolean .

terms:creator
    a owl:AnnotationProperty .

terms:description
    a owl:AnnotationProperty .

terms:license
    a owl:AnnotationProperty .

terms:title
    a owl:AnnotationProperty .

vann:prefferedNamespacePrefix
    a owl:AnnotationProperty .

vann:prefferedNamespaceURI
    a owl:AnnotationProperty .

<http://www.buildingsmart-tech.org/ifcOWL/IFC2X3_Final#IfcProduct>
    a owl:Class .

<http://www.opengis.net/ont/geosparql#wktLiteral>
    a owl:Class .

<http://xmlns.com/foaf/0.1/Person>
    a owl:Class .

<https://w3id.org/bot#Element>
    a owl:Class .

