@prefix :      <https://w3id.org/cto#> .
@prefix cc:    <http://creativecommons.org/ns#> .
@prefix schema: <http://schema.org/> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix bot:   <https://w3id.org/bot#> .
@prefix dot:   <https://w3id.org/dot#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix voaf:  <http://purl.org/vocommons/voaf#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> .
@prefix dct:   <http://purl.org/dc/terms/> .
@prefix dbr:   <http://dbpedia.org/resource/> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix contax: <https://w3id.org/con-tax#> .
@prefix vann:  <http://purl.org/vocab/vann/> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix cto:   <https://w3id.org/cto#> .

cto:resultsInDeletedStatement
        a                   owl:ObjectProperty ;
        rdfs:comment        "Connects a (planned or executed) task to a reified statement that is deleted from the construction description as a result of the task."@en ;
        rdfs:domain         cto:Task ;
        rdfs:isDefinedBy    <https://w3id.org/cto> ;
        rdfs:label          "results in deleted statement"@en ;
        rdfs:range          rdf:Statement ;
        rdfs:subPropertyOf  cto:resultsInStatement .

cto:resultsInStatement
        a                 owl:ObjectProperty ;
        rdfs:comment      "Connects a (planned or executed) task to a reified statement that is either added or deleted as a result of the task. The subproperties of this property (cto:resultsInAddedStatement and cto:resultsInDeletedStatement) should be used to express the consequence of the task to the statement. A cto:InstalmentTask and dot:Inspection task typically result in the use of cto:resultsInAddedStatement, a cto:RemovalTask typically results in the use of cto:resultsInDeletedStatement while a cto:ModificationTask results in the use of cto:resultsInAddedStatement and/or cto:resultsInDeletedStatement."@en ;
        rdfs:domain       cto:Task ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "results in statement"@en ;
        rdfs:range        rdf:Statement .

cto:ModificationTask  a   owl:Class ;
        rdfs:comment      "A specialized type of a (planned or executed) construction task that physically modifies a construction component, spatial zone or damage. The modification results in a change to one or more properties and/or geometry descriptions of the modified subject. It should not be used to repair a damaged construction element or spatial zone as cto:RepairTask should be used instead."@en ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "a modification task"@en ;
        rdfs:subClassOf   cto:Task .

cto:TaskContext  a        owl:Class ;
        rdfs:comment      "A task context allows to group certain tasks that are related. Examples are tasks that fall under the responsibility of a certain organization, tasks grouped per activity or project (e.g. inspections, demolition, construction, etc.), work item (cost estimation) or a larger task that can be subdivided in smaller tasks."@en ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "a task context"@en .

bot:Zone  a     owl:Class .

dot:Inspection  a  owl:Class .

schema:rangeIncludes  a  owl:AnnotationProperty .

bot:Element  a  owl:Class .

cto:hasTaskContext  a     owl:ObjectProperty ;
        rdfs:comment      "Connects a task to a task context that forms a group of tasks with shared properties."@en ;
        rdfs:domain       cto:Task ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "has task context"@en ;
        rdfs:range        cto:TaskContext .

cto:resultsInAddedStatement
        a                   owl:ObjectProperty ;
        rdfs:comment        "Connects a (planned or executed) task to a reified statement that is added to the construction description as a result of the task."@en ;
        rdfs:domain         cto:Task ;
        rdfs:isDefinedBy    <https://w3id.org/cto> ;
        rdfs:label          "results in added statement"@en ;
        rdfs:range          rdf:Statement ;
        rdfs:subPropertyOf  cto:resultsInStatement .

cto:RemovalTask  a        owl:Class ;
        rdfs:comment      "A specialized type of a (planned or executed) construction task that physically removes a construction component from the construction. The removal results in the removal of all the (directly or indirectly) asserted triples related to the thing that is subject of this task, including triples that use terminology from BOT (building topology), DOT (damage topology), OMG/FOG (geometry, properties, etc."@en ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "a removal task"@en ;
        rdfs:subClassOf   cto:Task .

cto:hasTaskMethod  a      owl:ObjectProperty ;
        rdfs:comment      "Property to connect a certain construction task (cto:Task) to an intermediate property node when applied on property level 2 or 3. The intermediate property node then connects to a task method description directly using cto:hasSimpleTaskMethodDescription or cto:hasComplexTaskMethodDescription (L2) or to a property state using opm:hasPropertyState (L3) to indicate a versioned task method description connected using cto:hasSimpleTaskMethodDescription or cto:hasComplexTaskMethodDescription. A task method description contains a step-by-step description of the procedure, used materials and equipment."@en ;
        rdfs:domain       cto:Task ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "has task method"@en .

cto:afterFinishedTask
        a                 owl:ObjectProperty ;
        rdfs:comment      "Connects the subject task to one ore more other tasks have to be finished before it is allowed to start."@en ;
        rdfs:domain       cto:Task ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "after finished task"@en ;
        rdfs:range        cto:Task .

schema:domainIncludes
        a       rdf:Property .

cto:InspectionTask  a     owl:Class ;
        rdfs:comment      "A specialized type of a (planned or executed) construction task that indicates that a construction element, spatial zone and/or damage are inspected. When a construction component or spatial zone is inspected and a damage is detected, the result of the inspection task is the damage description connected to the inspected object. Note that existing known damage, e.g. covered by previous inspections, can be the subject of subsequent inspection tasks."@en ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "an inspection task"@en ;
        rdfs:subClassOf   cto:Task .

cto:RepairTask  a         owl:Class ;
        rdfs:comment      "A specialized type of a (planned or executed) construction task that repairs a damaged construction element or spatial zone. The subjects of this type of task are construction damages. Depending on the degree of modeling, a repair task can either directly result in the lifting of a damage (and its influence on properties of the damaged object) or subtasks can be defined e.g. to remove a damaged construction component and replace it by a new one."@en ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "a repair task"@en ;
        rdfs:subClassOf   cto:Task .

cto:hasSimpleTaskMethodDescription
        a                     owl:DatatypeProperty ;
        rdfs:comment          "Property to connect a construction task method node to an RDF literal containing either a text description for human interpretation (rdf:langString with language tag) and/or embedded or referenced file content (diagrams, movies, webpages, etc.). In case of a referenced external file, the literal contain the reference is of datatype xsd:anyURI. When the content of a file is embedded in the literal and file format is text-based the xsd:string datatype is used. If the file format is binary, a binary-to-text encoded version is located inside the RDF literal combined with a datatype to indicate the encoding scheme (xsd:base64Binary, xsd:hexBinary, or a custom datatype for other encoding schemes)."@en ;
        rdfs:domain           cto:TaskMethod ;
        rdfs:isDefinedBy      <https://w3id.org/cto> ;
        rdfs:label            "has simple task method description"@en ;
        schema:rangeIncludes  xsd:anyURI , xsd:base64Binary , rdf:langString , xsd:string , xsd:hexBinary .

cto:InstallmentTask  a    owl:Class ;
        rdfs:comment      "A specialized type of a (planned or executed) construction task that physically installs a construction component as part of the construction. The installment results in the addition of asserted triple(s) connecting the installed object to other construction elements and/or spatial zones and other triples describing the object through classification, properties and/or geometry."@en ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "an installment task"@en ;
        rdfs:subClassOf   cto:Task .

<https://w3id.org/cto>
        a                              voaf:Vocabulary , owl:Ontology ;
        rdfs:comment                   "- Version 0.0.1: initial version"@en ;
        cc:license                     <https://creativecommons.org/licenses/by/4.0/> ;
        dct:creator                    [ a                          vcard:Individual ;
                                         vcard:family-name          "Bonduel" ;
                                         vcard:fn                   "Mathias Bonduel" ;
                                         vcard:given-name           "Mathias" ;
                                         vcard:hasOrganizationName  [ a                        vcard:Organization ;
                                                                      owl:sameAs               dbr:Katholieke_Universiteit_Leuven ;
                                                                      vcard:hasURL             <https://www.kuleuven.be> ;
                                                                      vcard:organization-name  "KU Leuven"
                                                                    ] ;
                                         vcard:hasURL               <https://www.researchgate.net/profile/Mathias_Bonduel> , <https://www.kuleuven.be/wieiswie/nl/person/00110827> , <https://orcid.org/0000-0002-3313-924X>
                                       ] ;
        dct:description                "The Construction Tasks Ontology (CTO) describes tasks operating on construction elements, spatial zones and/or damages.  The tasks are either planned or executed depending on the dataset metadata context of the dataset its used in. Five different types of tasks are defined: instalment, removal, modification, repair and inspection. \nConsequences of tasks on the dataset, i.e. added and/or deleted triples, are modeled using reified statements. The tasks can link to a reified statement using the CTO relations."@en ;
        dct:issued                     "2020-12-18"^^xsd:date ;
        dct:title                      "CTO: Construction Tasks Ontology"@en ;
        vann:preferredNamespacePrefix  "cto" ;
        vann:preferredNamespaceUri     "https://w3id.org/cto#" ;
        owl:versionInfo                "0.0.1" .

cto:Task  a               owl:Class ;
        rdfs:comment      "A generic class for defining (planned or executed) construction tasks. Instances of this class are connected with the construction element(s), spatial zone(s) or construction damages they operate on (cto:isSubjectOfTask). In addition, they might also be linked to a (planned or executed) moment or time span of performance (prov:atTime/prov:startedAtTime/prov:endedAtTime) and one or more task contexts (cto:hasTaskContext), task methods (cto:hasTaskMethod), assigned persons and/or organizations (prov:wasAssociatedWith), other tasks that must be finalized before the task can start (cto:afterFinishedTask) and reified statements that are added or deleted (cto:resultsInAddedStatement or cto:resultsInDeletedStatement)."@en ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "a construction task"@en .

cto:hasComplexTaskMethodDescription
        a                 owl:ObjectProperty ;
        rdfs:comment      "Property to connect a certain construction task (cto:Task) to the topnode of an RDF-based description of a task method. \nDepending on the property level used, this property get's a different location. In case of L1, a task is directly connected with the task method description. When using L2, a task is first connected to an intermediate property node via cp:hasTaskMethod. The intermediate node is then connected using cp:hasComplexTaskMethodDescription. In case of L3, the first intermediate node from L2 receives an outgoing opm:hasPropertyState property. The property state node is then connected to the task method description using cp:hasComplexTaskMethodDescrription. A task method description contains a step-by-step description of the procedure, used materials and equipment."@en ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "has complex task method description"@en .

cto:TaskMethod  a         owl:Class ;
        rdfs:comment      "A task method description defines how a task should be or was executed, depending on the construction dataset context (planning or progress monitoring). The cto:hasTaskMethod property connects a task to instances of this class that in turn point to a task method described in text using the cto:hasSimpleTaskMethodDescription. If RDF-based task method descriptions are applied instead of text, they can be connected using cto:hasComplexTaskMethodDescription."@en ;
        rdfs:isDefinedBy  <https://w3id.org/cto> ;
        rdfs:label        "a task (execution) method"@en .

dot:Damage  a   owl:Class .

cto:isSubjectOfTask  a         owl:ObjectProperty ;
        rdfs:comment           "Connects a construction component (e.g. bot:Element instance), a spatial zone (e.g. bot:Zone instance) or a construction damage (e.g. dot:Damage instance) to a (planned or executed) task that is related to it."@en ;
        rdfs:isDefinedBy       <https://w3id.org/cto> ;
        rdfs:label             "is subject of task"@en ;
        rdfs:range             cto:Task ;
        schema:domainIncludes  dot:Damage , bot:Zone , bot:Element .
