@base <https://w3id.org/lbd/aec3po/> .
@prefix aec3po: <https://w3id.org/lbd/aec3po/> .
@prefix cc: <http://creativecommons.org/ns#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix dul: <http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#> .
@prefix fno: <https://fno.io/spec/> .
@prefix ns1: <https://w3id.org/profile/ontdoc/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix qudt: <http://qudt.org/schema/qudt/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

_:nd0bd5a6ec01349f6a8b0e7adcf398e5fb10 a rdfs:Class,
        owl:Class ;
    owl:unionOf ( <FeatureOfInterest> <Property> <CheckMethod> ) ;
    ns1:inDomainOf <hasUnit> .

_:nd0bd5a6ec01349f6a8b0e7adcf398e5fb6 a rdfs:Class,
        owl:Class ;
    owl:unionOf ( <FeatureOfInterest> <Property> <CheckMethod> ) ;
    ns1:inDomainOf <hasBSDDTarget> .

<BooleanCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Boolean Check Method"@en ;
    dct:description "Boolean check method refers to a type of validation method that checks whether a certain condition or property is either true or false. It is a simple binary check that evaluates the compliance or non-compliance of a specific aspect in the construction process. "@en ;
    dct:title "Boolean Check Method"@en ;
    rdfs:comment "Boolean check method refers to a type of validation method that checks whether a certain condition or property is either true or false. It is a simple binary check that evaluates the compliance or non-compliance of a specific aspect in the construction process. "@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <CheckMethod> ;
    ns1:inDomainOf <hasOperator> .

<CategoryCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Category Check Method"@en ;
    dct:description "A validation type that involves comparing content against a textual concept."@en ;
    dct:title "Category Check Method"@en ;
    rdfs:comment "A validation type that involves comparing content against a textual concept."@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <CheckMethod> .

<CertificateCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Certificate Check Method"@en ;
    dct:description "Certificate check method is a formal process used to verify and validate the authenticity and compliance of certificates related to construction projects. It involves a systematic review and examination of certificates issued by authorised entities to ensure that they meet all the necessary regulatory requirements, standards, and specifications."@en ;
    dct:title "Certificate Check Method"@en ;
    rdfs:comment "Certificate check method is a formal process used to verify and validate the authenticity and compliance of certificates related to construction projects. It involves a systematic review and examination of certificates issued by authorised entities to ensure that they meet all the necessary regulatory requirements, standards, and specifications."@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <CheckMethod> .

<CheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Check Method"@en ;
    dct:description "A piece of information that operationalizes check statements in documents, usually executed in order to control the conformance of some entity. A Check Method is re-usable, and may be executed several times."@en ;
    dct:title "Check Method"@en ;
    rdfs:comment "A piece of information that operationalizes check statements in documents, usually executed in order to control the conformance of some entity. A Check Method is re-usable, and may be executed several times."@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf dul:Method ;
    ns1:inDomainOf <hasNestedValue>,
        <operationalizes> ;
    ns1:inRangeOf <hasNestedTarget>,
        <isOperationalizedBy> ;
    ns1:superClassOf <BooleanCheckMethod>,
        <CategoryCheckMethod>,
        <CertificateCheckMethod>,
        <ComponentCheckMethod>,
        <ConceptCheckMethod>,
        <DeclarativeCheckMethod>,
        <FunctionCheckMethod>,
        <NumericalCheckMethod>,
        <ProceduralCheckMethod> .

<ComponentCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Component Check Method"@en ;
    dct:description "Refers to a process of inspecting and verifying specific components or elements of a building or infrastructure to ensure they meet the required standards, specifications, and regulations. This method is used to assess the quality, functionality, and safety of individual components used in construction projects. Formally defined as checks for some feature of interest"@en ;
    dct:title "Component Check Method"@en ;
    rdfs:comment "Refers to a process of inspecting and verifying specific components or elements of a building or infrastructure to ensure they meet the required standards, specifications, and regulations. This method is used to assess the quality, functionality, and safety of individual components used in construction projects. Formally defined as checks for some feature of interest"@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <CheckMethod> ;
    owl:intersectionOf ( <CheckMethod> _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb1 ) .

<CompositeCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Composite Check Method"@en ;
    dct:description "A check implemented by grouping and nesting other checks using the ACCORD rule language. "@en ;
    dct:title "Composite Check Method"@en ;
    rdfs:comment "A check implemented by grouping and nesting other checks using the ACCORD rule language. "@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <DeclarativeCheckMethod> .

<ConceptCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Check for Concept"@en ;
    dct:description "Concept check method refers to a process of evaluating and verifying the validity and applicability of concepts used in construction projects. It involves a systematic examination of the concepts and ideas proposed for the design, construction, or management of a building or infrastructure to ensure they are appropriate, compliant, and align with industry standards."@en ;
    dct:title "Check for Concept"@en ;
    rdfs:comment "Concept check method refers to a process of evaluating and verifying the validity and applicability of concepts used in construction projects. It involves a systematic examination of the concepts and ideas proposed for the design, construction, or management of a building or infrastructure to ensure they are appropriate, compliant, and align with industry standards."@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <CheckMethod> .

<DeclarativeCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Declarative Check Method"@en ;
    dct:description "Declarative check, expressed in IDS, SPARQL, BimSPARQL (SPARQL with eg HDF5 for geometry access, with extra SPARQL functions), or any other declarative language. The identifier of a Declarative Check is expected to be dereferenceable, potentially with mediatype-based content negotiation. The content type of the retrieved representation indicates which type of declaration language it uses. Alternatively, the check expression may be given using a property such as aec3po:asText."@en ;
    dct:title "Declarative Check Method"@en ;
    rdfs:comment "Declarative check, expressed in IDS, SPARQL, BimSPARQL (SPARQL with eg HDF5 for geometry access, with extra SPARQL functions), or any other declarative language. The identifier of a Declarative Check is expected to be dereferenceable, potentially with mediatype-based content negotiation. The content type of the retrieved representation indicates which type of declaration language it uses. Alternatively, the check expression may be given using a property such as aec3po:asText."@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <CheckMethod> ;
    ns1:superClassOf <CompositeCheckMethod>,
        <JenaCheckMethod>,
        <SHACLCheckMethod>,
        <SPARQLCheckMethod>,
        <SWRLCheckMethod> .

<FunctionCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Function Check Method"@en ;
    dct:description "Methods of check defined by functions. The function can be general purpose, not tied to specific project and reused i.e. getArea(), getVolume(). This concept is equivalent to the Execution class in the Function ontology: https://fno.io/spec/ "@en ;
    dct:title "Function Check Method"@en ;
    rdfs:comment "Methods of check defined by functions. The function can be general purpose, not tied to specific project and reused i.e. getArea(), getVolume(). This concept is equivalent to the Execution class in the Function ontology: https://fno.io/spec/ "@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <CheckMethod> ;
    owl:equivalentClass fno:Execution .

<JenaCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Jena Check Method"@en ;
    dct:description "A check implemented using the Jena rule language. "@en ;
    dct:title "Jena Check Method"@en ;
    rdfs:comment "A check implemented using the Jena rule language. "@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <DeclarativeCheckMethod> .

<NumericalCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Numerical Check Method"@en ;
    dct:description "Numerical check method refers to a type of check that involves assessing and verifying numerical data or values for accuracy and adherence to specific criteria or standards. This method typically includes comparing numerical inputs to predefined rules, constraints, or mathematical calculations to ensure data integrity and correctness. "@en ;
    dct:title "Numerical Check Method"@en ;
    rdfs:comment "Numerical check method refers to a type of check that involves assessing and verifying numerical data or values for accuracy and adherence to specific criteria or standards. This method typically includes comparing numerical inputs to predefined rules, constraints, or mathematical calculations to ensure data integrity and correctness. "@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <CheckMethod> ;
    ns1:inDomainOf <hasComparator> .

<ProceduralCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "Procedural Check Method"@en ;
    dct:description "Procedural check methods are semantically described but opaque modules, implemented in any language or as REST API, invoked by micro-services. Alternatively, the check procedure may be given using a property such as aec3po:asText."@en ;
    dct:title "Procedural Check Method"@en ;
    rdfs:comment "Procedural check methods are semantically described but opaque modules, implemented in any language or as REST API, invoked by micro-services. Alternatively, the check procedure may be given using a property such as aec3po:asText."@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <CheckMethod> .

<SHACLCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "SHACL Check Method"@en ;
    dct:description "Refers to a validation process that ensures compliance of data with predefined SHACL shapes, constraints, and rules."@en ;
    dct:title "SHACL Check Method"@en ;
    rdfs:comment "Refers to a validation process that ensures compliance of data with predefined SHACL shapes, constraints, and rules."@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <DeclarativeCheckMethod> .

<SPARQLCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "SPARQL Check Method"@en ;
    dct:description "Refers to a validation process that ensures compliance of data with a predefined SPARQL query, stored in aec3po:asText"@en ;
    dct:title "SPARQL Check Method"@en ;
    rdfs:comment "Refers to a validation process that ensures compliance of data with a predefined SPARQL query, stored in aec3po:asText"@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <DeclarativeCheckMethod> .

<SWRLCheckMethod> a rdfs:Class,
        owl:Class ;
    rdfs:label "SWRL Check Method"@en ;
    dct:description "A check method implemented using SWRL rules. "@en ;
    dct:title "SWRL Check Method"@en ;
    rdfs:comment "A check method implemented using SWRL rules. "@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:subClassOf <DeclarativeCheckMethod> .

<http://maxime-lefrancois.info/me#> a prov:Agent .

qudt:Unit ns1:inRangeOf <hasUnit> .

dul:Method ns1:superClassOf <CheckMethod> .

owl:DatatypeProperty ns1:hasMember <hasTarget> .

owl:Ontology ns1:hasMember <check_method> .

<CheckMethodComparator> ns1:inRangeOf <hasComparator> .

<CheckMethodOperator> ns1:inRangeOf <hasOperator> .

<hasTarget> a owl:DatatypeProperty ;
    rdfs:label "hasTarget"@en ;
    dct:description ""@en ;
    dct:title "hasTarget"@en ;
    rdfs:comment ""@en .

owl:Restriction ns1:hasMember _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb1,
        _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb2 .

<CheckStatement> ns1:inDomainOf <isOperationalizedBy> ;
    ns1:inRangeOf <operationalizes> .

<hasBSDDValue> a owl:FunctionalProperty,
        owl:ObjectProperty ;
    rdfs:label "hasBSSDDValue"@en ;
    dct:description "TBD"@en ;
    dct:title "hasBSSDDValue"@en ;
    rdfs:comment "TBD"@en ;
    rdfs:isDefinedBy <check_method> .

<hasNestedTarget> a owl:ObjectProperty ;
    rdfs:label "hasNestedTarget"@en ;
    dct:description ""@en ;
    dct:title "hasNestedTarget"@en ;
    rdfs:comment ""@en ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:range <CheckMethod> .

<hasNestedValue> a owl:ObjectProperty ;
    rdfs:label "hasNestedValue"@en ;
    dct:description "TBD"@en ;
    dct:title "hasNestedValue"@en ;
    rdfs:comment "TBD"@en ;
    rdfs:domain <CheckMethod> ;
    rdfs:isDefinedBy <check_method> .

owl:FunctionalProperty ns1:hasMember <hasBSDDTarget>,
        <hasBSDDValue>,
        <hasUnit> .

<hasBSDDTarget> a owl:FunctionalProperty,
        owl:ObjectProperty ;
    rdfs:label "hasBSSDDTarget"@en ;
    dct:description "The target refers to either the name of an object, the name of property or a function."@en ;
    dct:title "hasBSSDDTarget"@en ;
    rdfs:comment "The target refers to either the name of an object, the name of property or a function."@en ;
    rdfs:domain _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb6 ;
    rdfs:isDefinedBy <check_method> .

<hasComparator> a owl:ObjectProperty ;
    rdfs:label "has comparator"@en ;
    dct:description "Links a numerical check method to the check method comparator it uses (=, <, >, etc.)"@en ;
    dct:title "has comparator"@en ;
    rdfs:comment "Links a numerical check method to the check method comparator it uses (=, <, >, etc.)"@en ;
    rdfs:domain <NumericalCheckMethod> ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:range <CheckMethodComparator> .

<hasOperator> a owl:ObjectProperty ;
    rdfs:label "has operator"@en ;
    dct:description "Links a boolean check method to the check method operator it uses (exists, for all, etc.)"@en ;
    dct:title "has operator"@en ;
    rdfs:comment "Links a boolean check method to the check method operator it uses (exists, for all, etc.)"@en ;
    rdfs:domain <BooleanCheckMethod> ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:range <CheckMethodOperator> .

<hasUnit> a owl:FunctionalProperty,
        owl:ObjectProperty ;
    rdfs:label "hasUnit"@en ;
    dct:description "the hasUnit property is used to link a specific property or feature of interest to its corresponding unit of measurement. For example, it could be a property related to physical quantities, such as temperature, length, or weight."@en ;
    dct:title "hasUnit"@en ;
    rdfs:comment "the hasUnit property is used to link a specific property or feature of interest to its corresponding unit of measurement. For example, it could be a property related to physical quantities, such as temperature, length, or weight."@en ;
    rdfs:domain _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb10 ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:range qudt:Unit ;
    owl:eqivalentProperty qudt:hasValue .

<isOperationalizedBy> a owl:ObjectProperty ;
    rdfs:label "is operationalized by"@en ;
    dct:description "Links a check statement in a document to a check method that operationalize it."@en ;
    dct:title "is operationalized by"@en ;
    rdfs:comment "Links a check statement in a document to a check method that operationalize it."@en ;
    rdfs:domain <CheckStatement> ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:range <CheckMethod> ;
    owl:inverseOf <operationalizes> .

<operationalizes> a owl:ObjectProperty ;
    rdfs:label "operationalizes"@en ;
    dct:description "Links a check method to a check statement in a document that it operationalizes."@en ;
    dct:title "operationalizes"@en ;
    rdfs:comment "Links a check method to a check statement in a document that it operationalizes."@en ;
    rdfs:domain <CheckMethod> ;
    rdfs:isDefinedBy <check_method> ;
    rdfs:range <CheckStatement> ;
    owl:inverseOf <isOperationalizedBy> .

owl:ObjectProperty ns1:hasMember <hasBSDDTarget>,
        <hasBSDDValue>,
        <hasComparator>,
        <hasNestedTarget>,
        <hasNestedValue>,
        <hasOperator>,
        <hasUnit>,
        <isOperationalizedBy>,
        <operationalizes> .

rdfs:Class ns1:hasMember _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb10,
        _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb6,
        <BooleanCheckMethod>,
        <CategoryCheckMethod>,
        <CertificateCheckMethod>,
        <CheckMethod>,
        <ComponentCheckMethod>,
        <CompositeCheckMethod>,
        <ConceptCheckMethod>,
        <DeclarativeCheckMethod>,
        <FunctionCheckMethod>,
        <JenaCheckMethod>,
        <NumericalCheckMethod>,
        <ProceduralCheckMethod>,
        <SHACLCheckMethod>,
        <SPARQLCheckMethod>,
        <SWRLCheckMethod> .

owl:Class ns1:hasMember _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb10,
        _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb6,
        <BooleanCheckMethod>,
        <CategoryCheckMethod>,
        <CertificateCheckMethod>,
        <CheckMethod>,
        <ComponentCheckMethod>,
        <CompositeCheckMethod>,
        <ConceptCheckMethod>,
        <DeclarativeCheckMethod>,
        <FunctionCheckMethod>,
        <JenaCheckMethod>,
        <NumericalCheckMethod>,
        <ProceduralCheckMethod>,
        <SHACLCheckMethod>,
        <SPARQLCheckMethod>,
        <SWRLCheckMethod> .

<check_method> a owl:Ontology ;
    cc:license <https://creativecommons.org/licenses/by/4.0/> ;
    dct:contributor <http://maxime-lefrancois.info/me#> ;
    dct:created "2023-05-26"^^xsd:date ;
    dct:description "The AEC3PO Check Method module describes pieces of information that operationalize check statements in documents."@en ;
    dct:modified "2023-05-26"^^xsd:date,
        "2025-04-17"^^xsd:date ;
    dct:title "AEC3PO: Check Method"@en ;
    vann:preferredNamespacePrefix "aec3po" ;
    vann:preferredNamespaceUri "https://w3id.org/lbd/aec3po/" ;
    owl:imports <compliance_verification_report>,
        <statement> .

_:nd0bd5a6ec01349f6a8b0e7adcf398e5fb3 owl:inverseOf <forDesign> .

_:nd0bd5a6ec01349f6a8b0e7adcf398e5fb1 a owl:Restriction ;
    owl:allValuesFrom _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb2 ;
    owl:onProperty <forDesign> .

_:nd0bd5a6ec01349f6a8b0e7adcf398e5fb2 a owl:Restriction ;
    owl:allValuesFrom <FeatureOfInterest> ;
    owl:onProperty _:nd0bd5a6ec01349f6a8b0e7adcf398e5fb3 .

