Docs

ns4:purpose

URI: pub:purpose


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:purpose> ns1:title "PURPOSE" ;
    rdfs:comment "The purpose of this standard is to define formal knowledge concepts and a methodology to apply them to create interoperable, machine-readable semantic frameworks for representing building automation and control data, and other building system information." .


        

ns4:scope

URI: pub:scope


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:scope> ns1:title "SCOPE" ;
    rdfs:comment """This standard provides a comprehensive way to apply semantic formalisms to represent the context of building system data and relationships between the associated building mechanical system components so that software applications can find and understand the information in an automated way. It is intended to facilitate the development and implementation of building analytics tools and enterprise knowledge applications that can implement many building system functions, including:

(a) automated fault detection and diagnostics,
(b) building system commissioning,
(c) digital twins,
(d) optimization of energy use, and
(e) smart grid interactions.
""" .


        

ns4:definitions

URI: pub:definitions


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<pub:definitions> ns1:subclauses ( <pub:definitions-terms> <pub:abbrev> ) ;
    ns1:title "DEFINITIONS" .


        

ns4:definitions-terms

URI: pub:definitions-terms


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:definitions-terms> ns1:title "Terms Defined for this Standard" ;
    rdfs:comment """
**Connectable:** an abstract class that represents a thing (`Equipment` or `DomainSpace`) that can be connected via connection points and connections.

**Connection:** the modeling construct used to represent a physical thing (e.g., pipe, duct, orconductor) that is used to convey some Medium (e.g., water, air, or electricity) between two `Connectable` things.

**ConnectionPoint:** an abstract modeling construct used to represent the fact that one `Connectable` thing can be connected to another `Connectable` thing using a `Connection`. It is the abstract representation of the flange, wire terminal, or other physical feature where a connection is made.

Domain: a categorization of building service or specialization used to characterize equipment or spaces in a building. Example domains include HVAC, lighting, and plumbing.

**DomainSpace:** a portion or the entirety of a `PhysicalSpace` that is associated with a Domain, such as lighting, HVAC, or physical security. `DomainSpace`s can be combined to form a `Zone`.

**Duct:** a subclass of `Connection` that is used to transport air such as supply, return, and exhaust in HVAC (Heating, Ventilation, and Air Conditioning) systems. 

**Conductor:** a subclass of `Connection` that represents one or more wires used to convey electricity.

**Equipment:** the modeling construct used to represent a device designed to accomplish a specific task. Examples include a pump, fan, heat exchanger, luminaire, temperature sensor, or flow meter. A piece of equipment can contain another piece of equipment. For example, an air handling unit can contain a cooling coil.

**PhysicalSpace:** an architectural concept that represents a room, a collection of rooms such as a floor, a part of a room, or any physical space that might not even be thought of as a room, such as a patio.

**Pipe:** a subclass of `Connection` that is used primarily to transport liquids and gases such as water, sewage, natural gas, and compressed air.

**System:** a logical grouping (collection) of `Equipment` for some functional purpose. Examples of possible systems include an air distribution system, or a hot water system. Systems can contain other Systems. A `System` does not participate in connections.

**Zone:** a collection of `DomainSpace`s of a specific domain that are grouped together from the perspective of building services or controls.

""" .


        

ns4:abbrev

URI: pub:abbrev


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:abbrev> ns1:title "Abbreviations and Acronyms Used in this Standard" ;
    rdfs:comment """

IFC     Industry Foundation Class
RDF     Resource Description Framework
SHACL   Shapes Constraint Language
SPARQL  SPARQL Protocol and RDF Query Language
Turtle  Terse RDF Triple Language
W3C     Worldwide Web Consortium

""" .


        

ns4:conceptual-framework

URI: pub:conceptual-framework


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:conceptual-framework> ns1:subclauses ( <pub:Conform-Constraints> <pub:Implicit-Info> <pub:Text-Serialization> <pub:Units> <pub:Namespace> <http://data.ashrae.org/standard223#Class> <http://data.ashrae.org/standard223#Concept> <http://data.ashrae.org/standard223#SymmetricRelation> <http://data.ashrae.org/standard223#inverseOf> <http://data.ashrae.org/standard223#abstract> ) ;
    ns1:title "CONCEPTUAL FRAMEWORK FOR SEMANTIC MODELING OF BUILDING SYSTEMS AND DATA" ;
    rdfs:comment """
This standard defines modeling constructs for use in creating a machine-readable representation of building systems, the building spaces that they serve, 
and the measurement and control points used to provide a safe and comfortable environment for the building occupants. The standard can be considered a 
toolkit of semantic building blocks and rules for using them to create a semantic model of a particular building or campus of buildings. The resulting model provides 
a way for software applications to determine the relationships between the mechanical equipment in the building (i.e., AHU 1 gets chilled water from CH 3 
and provides conditioned air to VAV Boxes 12 through 15 serving rooms on the third floor) and the meaning of measurements that are available 
(i.e., T16 is a temperature sensor measuring the temperature of the air stream exiting AHU 1).

The model does not directly contain telemetric data about the real-time operation or past operation of the building systems. It does provide information 
about the meaning or context of that data and defines external references that are used to point to a source of the data values, thus enablling analytics
 applications to find them. If the data source is a BACnet building automation and control system, the external reference contains the necessary information 
 for analytic software to learn which BACnet device, object and property corresponds to the desired piece of information. This enables construction of a BACnet
 message used to read the value.

These capabilities are achieved by applying concepts, standards, and query tools developed and deployed for information and data science applications outside the building domain. A primary commercial driver for developing these standards and tools is the Semantic Web, an extension of the World Wide Web that was created to make the semantic meaning of data accessible from the Internet machine readable.

This standard uses Resource Description Framework (RDF) (W3C) and its extended schema (RDFS) to represent the semantic ideas in the model. RDF is a general method for representing semantic ideas as of a triple. A triple consists of a subject, a predicate, and either a literal or an object. For example:

Jane hasFriend Dave

Jane hasSupervisor Mary

In this example Jane is the subject of both triples, there are two different predicates, hasFriend and hasSupervisor, and there are two different objects,
 Dave and Mary. The number of triples is expanded as needed to capture the desired information. The collection of triples represents a directed
  multi-graph that can be searched or queried to answer questions or to infer information that may not be explicit in the graph. Figure 4-1 is a graph that
   corresponds to this example.

![Example triple graph.](figures/Figure_4-1_Triple_Example.svg)

This standard defines subjects, predicates, and objects relevant to the building space that are used to build a multi-graph representing a specific
 building or group of buildings. A compelling advantage of this graph-based approach is the ability to combine semantic graphs derived from complementary
 semantic models that apply to the same building. This makes it possible to take advantage of the combined information from distinct domains. For example, a 
 RealEstateCore model that captures how spaces are assigned to different tenants in a building linked to the spaces represented in a Standard 223 model 
 results in a semantic model containing the combined information. In a similar way, it is possible to link information from a computerized maintenance 
 management system or an asset management system to the semantic graph of a Standard 223 model by adding a triple that binds a piece of equipment to its 
 representation in the other system.. 

A model constructed from this standard describes the topology of the equipment and spaces in a building but not the geometric details. Linking a 
Standard 223 model with an RDF representation of a building information model would add that geometric information. 

Another advantage of using RDF to model building systems is that a query language standard, SPARQL (W3C SPARQL), exists and tools that implement SPARQL 
are readily available. A building analytics tool developer needs only to create a library of queries relevant to their application, and use these queries 
to interrogate any Standard 223 conformant model to find what they need from that building for their application.

Using RDF also provides a way to build conformance constraints into this standard in a way that enables conformance to be algorithmically verified. 
This is done by using a different W3C standard, Shapes Constraints Language (SHACL) (W3C SHACL). SHACL defines a way to constrain the construction of RDF 
graphs through the application of custom developed rules called shapes. The normative constraints described in this standard are formalized in 
SHACL shapes. The description of each concept defined in this standard includes a table that lists related conformance constraints defined by these 
SHACL shapes. Readily available SHACL reasoners check whether or not a particular model instance conforms to the shapes defined in this standard.

SHACL is also used in this standard to derive implicit information. The triples generated from this inference process enhance the ability to make useful 
queries without the burden of a modeler crafting each predicate that might be useful in common searches. The goal is to make model development easier without sacrificing the utility application 
developers need to find what they are looking for. The description of each concept defined in this standard with related inference rules includes a 
table that lists the relevant SHACL shapes that apply the inferencing.

The Terse RDF Triple Language (W3C Turtle) defines a textual syntax to represent and exchange RDF models.

Because this standard includes references to measurements of physical properties, it is necessary to provide a model representation of units of measure 
as well as what those units are quantifying (e.g., temperature, power, etc.). This standard builds upon the "Quantities, Units, Dimensions and 
Types" (QUDT) ontology which is the leading open-source model expressed in RDF/SHACL. The QUDT model is documented at https://qudt.org. The key 
concepts used here are the classes qudt:Unit and qudt:QuantityKind.

The normative content of this standard is documented in an RDF model textualized using Turtle (see {pub:AnnexA}). All models conforming to this standard shall be textualized using Turtle.

Because it is anticipated that models conforming to this standard will be combined with other semantic models, it is necessary to define a namespace for the 
concepts defined by this standard to avoid any possible ambiguities that might arise from the same name being used in the complementary model. In this standard 
and all conforming models, the prefix “s223:” shall be used in the name of each concept (class and relation) defined by this standard, e.g., s223:Equipment. 
The prefix “s223:” is reserved for this standard. Users who extend this standard with additional concept definitions shall use a different prefix for their concepts. The 
use of different prefixes for different models allows the combination of models without ambiguity, and makes it possible to enforce a closed-world assumption 
for concepts that use the "s223:" prefix, namely allowing the use of a relation with a given class only if a SHACL shape has been defined for that use (see {s223:Concept}). The 
closed-world assumption is a fundamental principle of semantic modeling that states that if a concept is not defined 
in the model, then it is not part of the model. This principle is essential for the development of semantic models that can be used to make inferences about the 
real world. Managing the use of the "s223:" prefix also makes it possible to test for strict conformance to the standard.

The concepts and relations mentioned below were designed to aid in standard development using RDF and SHACL exclusively and avoiding any dependence on OWL axioms. 
This approach was chosen to avoid some of the shortcomings of using OWL in industrial settings, such as the open world assumption, the many flavors of OWL and their 
support, and the sometimes counterintuitive implications of OWL reasoning for non-ontologists. (For example, if an instance satisfies the OWL axioms for a class, then 
it is inferred to be an instance of that class). The use of SHACL shapes to define constraints and inferencing rules is a more intuitive way to define intended
model behavior and to verify conformance to the standard. The two most-used OWL inferences, supporting symmetric and inverse relations, are redefined in this standard 
using SHACL rules.

""" .


        

ns4:Conform-Constraints

URI: pub:Conform-Constraints


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:Conform-Constraints> ns1:title "Conformance Constraints and Validation" ;
    rdfs:comment """ Using RDF also provides a way to build conformance constraints into this standard in a way that enables conformance to be algorithmically 
verified. This is done by using a different W3C standard, Shapes Constraints Language (SHACL) (W3C SHACL). SHACL defines a way to constrain how RDF graphs 
can be constructed through the application of custom developed rules called shapes. The normative constraints described in this standard are formalized in 
SHACL shapes. The description of each concept defined in this standard includes a table that lists related conformance constraints defined by these SHACL 
shapes. Readily available SHACL reasoners can use the shapes defined in this standard to determine if a particular model instance violates conformance to the standard.

When a SHACL reasoner is applied to a model, discrepancies from the conformance constraints result in a message from the reasoner with one of three levels 
of severity (sh:severity).

A message with a severity sh:Info means that a model construct is incomplete. 

A message with a severity sh:Warning means that a model construct is used in an unexpected way.

A message with a severity sh:Violation means a model construct is invalid and does not comply with the standard.

The concepts and relations defined in this standard were designed to aid in standard development using RDF and SHACL exclusively and
avoiding any dependence on OWL
axioms. This approach was chosen to avoid some of the shortcomings of using OWL in industrial settings, such as the open world assumption, the many flavors 
of OWL and their support, and the sometimes counterintuitive implications of OWL reasoning for non-ontologists. (For example, if an instance satisfies the 
OWL axioms for a class, then it is inferred to be an instance of that class). The use of SHACL shapes to define constraints and inferencing rules is a more 
intuitive way to define intended model behavior and to verify conformance to the standard. The two most-used OWL inferences, supporting symmetric and inverse
 relations, are redefined in this standard using SHACL rules.
 """ .


        

ns4:Implicit-Info

URI: pub:Implicit-Info


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:Implicit-Info> ns1:title "Deriving Implicit Information from Inference Rules" ;
    rdfs:comment """ SHACL is also used in this standard to derive implicit information via a process called inferencing. Inference rules are used to define 
how new triples are generated. The triples generated from this inference process enhance the ability to make useful queries without the burden of a modeler 
crafting each one. The goal is to make model development easier without sacrificing the utility application developers need to find what they are looking 
for. The description of each concept defined in this standard with related inference rules includes a table that lists the relevant SHACL shapes that specify 
the inferencing. """ .


        

ns4:Text-Serialization

URI: pub:Text-Serialization


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:Text-Serialization> ns1:title "Textual Serialization" ;
    rdfs:comment """ The Terse RDF Triple Language (W3C Turtle) defines a textual syntax to represent and exchange RDF models.
The normative content of this standard is documented in an RDF model textualized using Turtle (see Clause 15). All models conforming to this standard shall 
be textualized using Turtle.
""" .


        

ns4:Units

URI: pub:Units


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:Units> ns1:title "Units of Measure" ;
    rdfs:comment """ Because this standard includes references to measurements of physical properties, it is necessary to provide a model representation of 
units of measure as well as what those units are quantifying (e.g. temperature, power, etc.). This standard builds upon the “Quantities, Units, Dimensions 
and Types” (QUDT) ontology which is the leading open-source model expressed in RDF/SHACL. The QUDT model is documented at https://qudt.org. The key concepts 
used here are the classes qudt:Unit and qudt:QuantityKind. The 223 standard is compatible with Version 2.1.41 of QUDT and is expected to be compatible with 
all newer versions as well.""" .


        

ns4:Namespace

URI: pub:Namespace


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:Namespace> ns1:title "Namespace" ;
    rdfs:comment """ Because it is anticipated that models conforming to this standard will be combined with other semantic models, it is necessary to define 
a namespace for the concepts defined by this standard to avoid any possible ambiguities that might arise from a similar name used in the complementary model.
 In this standard and all conforming models, the prefix “s223:” shall be used in the name of each concept (class and relation) defined by this standard, 
 e.g., s223:Equipment.
 """ .


        

Class

URI: http://data.ashrae.org/standard223#Class


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Class> a rdfs:Class,
        sh:NodeShape ;
    rdfs:label "Class" ;
    rdfs:comment "This is a modeling construct. All classes defined in the 223 standard are instances of `s223:Class`." ;
    rdfs:subClassOf rdfs:Class .


        

Concept

URI: http://data.ashrae.org/standard223#Concept


@prefix ns1: <http://sample.org/doc#> .
@prefix ns2: <http://data.ashrae.org/standard223#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns2:Concept a ns2:Class,
        sh:NodeShape ;
    rdfs:label "Concept" ;
    ns2:abstract true ;
    ns1:subclauses ( ns2:hasProperty ) ;
    rdfs:comment """All classes defined in the 223 standard are subclasses of `s223:Concept`.
  See {s223:Substance-Medium} for more details on ensuring compatibility of mediums listed in the 
  constraint table.  
  """ ;
    rdfs:subClassOf rdfs:Resource ;
    sh:property [ rdfs:comment "Incompatible Medium. Case4: An entity with constituents and an associated property with constituents." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path ns2:hasMedium ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 4: A medium with constituents and an associated property with constituents." ;
                    sh:message "s223: {$this} `hasMedium` of {?m1}, but is associated with property {?prop} that has `ofMedium` of {?m2}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m1 ?prop ?m2
WHERE {
$this s223:hasMedium ?m1 .
$this ?p ?prop .
?prop a/rdfs:subClassOf* s223:Property .
?prop s223:ofMedium ?m2 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case1: An entity with a pure medium and an associated property with a pure medium." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path ns2:hasMedium ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 1: Two pure mediums." ;
                    sh:message "s223: {$this} `hasMedium` of {?m1}, but is associated with property {?prop} that has `ofMedium` of {?m2}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m1 ?prop ?m2
WHERE {
$this s223:hasMedium ?m1 .
$this ?p ?prop .
?prop a/rdfs:subClassOf* s223:Property .
?prop s223:ofMedium ?m2 .
FILTER (?m1 != ?m2 ) .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case2: An entity with a pure medium and an associated property with constituents." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path ns2:hasMedium ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 2: A pure medium and an associated property with constituents." ;
                    sh:message "s223: {$this} `hasMedium` of {?m1}, but is associated with property {?prop} that has `ofMedium` of {?m2}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m1 ?prop ?m2
WHERE {
$this s223:hasMedium ?m1 .
$this ?p ?prop .
?prop a/rdfs:subClassOf* s223:Property .
?prop s223:ofMedium ?m2 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] ],
        [ rdfs:comment "Ensure that any instance that is declared to be an instance of an abstract class must also be declared an instance of at least one subClass of that abstract class." ;
            sh:path ns2:abstract ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Ensure that any instance that is declared to be an instance of an abstract class must also be declared an instance of at least one subClass of that abstract class" ;
                    sh:message "s223: {$this} cannot be declared an instance of only abstract class {?class}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT DISTINCT $this ?class
WHERE {
?class s223:abstract true .
$this a ?class .
OPTIONAL {
?otherClass rdfs:subClassOf+ ?class .
$this a ?otherClass .
FILTER (?class != ?otherClass) .
}
FILTER (!bound (?otherClass)) .
}
""" ] ],
        [ rdfs:comment "If the relation `hasProperty` is present, it must associate the concept with a `Property`." ;
            sh:class ns2:Property ;
            sh:message "s223: If the relation `hasProperty` is present, it must associate the concept with a `Property`." ;
            sh:path ns2:hasProperty ],
        [ rdfs:comment "A `Concept` must be associated with at least one label using the relation label." ;
            sh:message "s223: A `Concept` must be associated with at least one label using the relation label." ;
            sh:minCount 1 ;
            sh:path rdfs:label ;
            sh:severity sh:Warning ],
        [ rdfs:comment "Incompatible Medium. Case3: An entity with constituents and an associated property with a pure medium." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path ns2:hasMedium ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 3: A medium with constituents and an associated property with a pure medium." ;
                    sh:message "s223: {$this} `hasMedium` of {?m2}, but is associated with property {?prop} that has `ofMedium` of {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m1 ?prop ?m2
WHERE {
$this s223:hasMedium ?m2 .
$this ?p ?prop .
?prop a/rdfs:subClassOf* s223:Property .
?prop s223:ofMedium ?m1 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] ] ;
    sh:rule [ a sh:SPARQLRule ;
            rdfs:comment "Add an rdfs:label if it is missing." ;
            sh:construct """
CONSTRUCT {$this rdfs:label ?newLabel .}
WHERE {
FILTER (NOT EXISTS {$this rdfs:label ?something}) .
BIND(REPLACE(STR($this), "^.*/([^/]*)$", "$1") AS ?localNameWithoutHash)
BIND(REPLACE(?localNameWithoutHash, "^.*#(.*)$", "$1") AS ?localName)
BIND(REPLACE(?localName, "-", " ", "i") AS ?newLabel)
}
""" ;
            sh:name "AddLabelFromLocalName" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> ] .


        

has Property

URI: http://data.ashrae.org/standard223#hasProperty


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasProperty> a rdf:Property ;
    rdfs:label "has Property" ;
    rdfs:comment "The relation `hasProperty` is used to associate any `Concept` with a `Property`." .


        

Symmetric relation

URI: http://data.ashrae.org/standard223#SymmetricRelation


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#SymmetricRelation> a rdfs:Class,
        sh:NodeShape ;
    rdfs:label "Symmetric relation" ;
    rdfs:comment "A `SymmetricRelation` is modeling construct used to define symmetric behavior for certain relations in the standard such as `cnx` and `connected`." ;
    rdfs:subClassOf rdf:Property .


        

inverse of

URI: http://data.ashrae.org/standard223#inverseOf


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#inverseOf> a rdf:Property ;
    rdfs:label "inverse of" ;
    rdfs:comment "The relation `inverseOf` is a modeling construct to associate relations that are inverses of one another, such as `connectedTo` and `connectedFrom`." .


        

abstract

URI: http://data.ashrae.org/standard223#abstract


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#abstract> a rdf:Property ;
    rdfs:label "abstract" ;
    rdfs:comment "If the relation `abstract` has a value of true, the associated class cannot be instantiated. " ;
    rdfs:range xsd:boolean .


        

ns4:equipment

URI: pub:equipment


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:equipment> ns1:subclauses ( <http://data.ashrae.org/standard223#Equipment> <pub:equipment-containment> <http://data.ashrae.org/standard223#contains> <http://data.ashrae.org/standard223#hasRole> <http://data.ashrae.org/standard223#hasPhysicalLocation> <http://data.ashrae.org/standard223#Sensor> <http://data.ashrae.org/standard223#Actuator> <http://data.ashrae.org/standard223#Controller> ) ;
    ns1:title "EQUIPMENT" ;
    rdfs:comment """This clause is the top level of the hierarchical structure of the portion of the model that represents the characteristics and features of physical equipment that make up the building systems being modeled. `Equipment` can be connected to other `Equipment` or `DomainSpace`s (see {pub:connectedness}). `Equipment` can optionally contain other pieces of equipment, providing a way to represent its constituent parts within the model (see {pub:equipment-containment}). `Equipment` can also be grouped together to define a `System` (see {pub:system}).
    
""" .


        

Equipment

URI: http://data.ashrae.org/standard223#Equipment


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Equipment> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Equipment" ;
    rdfs:comment """
`Equipment` is the modeling construct used to represent a device designed to accomplish a specific task, 
or a complex device that contains component pieces of `Equipment`. This is distinct from a `System`, which is a logical grouping or collection of `Equipment`. 
`Equipment` can have `ConnectionPoint`s and participate 
in the flow of one or more kinds of Medium. Examples of possible equipment include a `Pump`, `Fan`, HeatExchanger, `Luminaire`, 
`TemperatureSensor`, or `FlowSensor`.

In common usage terms like equipment and system have a variety of ambituous and possibly conflicting interpretations. A semantic model
is an attempt to eliminate such ambiguities and conflicts. If the thing being modeled has a need for `ConnectionPoint`s it must be modeled as Equipment and not a System.
Thus, a complex example like a chlled water plant is modeled as Equipment because it has connection points for distributing chilled water. The same chilled water plant 
may be part of a logical grouping of pumps, valves, filters, and other things modeled as a chilled water System.

The graphical depiction of Equipment used in this standard is a rounded cornered rectangle as show in Figure 5-1.

![Graphical Depiction of Equipment.](figures/Figure_5-1Graphical_Depiciton_of_Equipment.svg)
  """ ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Connectable> ;
    sh:property [ rdfs:comment "Disallow contained equipment from having external incoming connections." ;
            sh:path <http://data.ashrae.org/standard223#connectedFrom> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Disallow contained equipment from having external incoming connections." ;
                    sh:message "s223: {$this} should not have a connection from external equipment {?otherDev} because {?container} contains {$this}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?container ?otherDev
WHERE {
$this s223:connectedFrom ?otherDev .
$this ^s223:contains ?container .
?container a/rdfs:subClassOf* s223:Equipment .
FILTER NOT EXISTS {?container s223:contains ?otherDev .}
}
""" ] ],
        [ rdfs:comment "Disallow contained equipment from having external outgoing connections." ;
            sh:path <http://data.ashrae.org/standard223#connectedTo> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Disallow contained equipment from having external outgoing connections." ;
                    sh:message "s223: {$this} should not have a connection to external equipment {?otherDev} because {?container} contains {$this}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?container ?otherDev
WHERE {
$this s223:connectedTo ?otherDev .
$this ^s223:contains ?container .
?container a/rdfs:subClassOf* s223:Equipment .
FILTER NOT EXISTS {?container s223:contains ?otherDev .}
}
""" ] ],
        [ rdfs:comment "Warning about a subClass of `Equipment` of type A containing something that is in the same subClass branch." ;
            sh:path <http://data.ashrae.org/standard223#contains> ;
            sh:severity sh:Warning ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Warning about a subClass of `Equipment` of type A containing something that is in the same subClass branch." ;
                    sh:message "s223: {$this}, of type {?type1}, contains {?subEquip} of type {?type2}, that could result in double-counting items in the class hierarchy of {?type1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?subEquip ?type1 ?type2
WHERE {
  FILTER NOT EXISTS {$this a s223:Equipment} .
$this s223:contains+ ?subEquip .
  FILTER NOT EXISTS {?subEquip a s223:Equipment} .
$this a ?type1 .
?subEquip a ?type2 .
{
?type2 rdfs:subClassOf* ?type1 .
}
UNION
{
?type1 rdfs:subClassOf* ?type2 .
}
}
""" ] ],
        [ rdfs:comment "If the relation `hasRole` is present it must associate the `Equipment` with a `EnumerationKind-Role`." ;
            sh:class <http://data.ashrae.org/standard223#EnumerationKind-Role> ;
            sh:message "s223: If the relation `hasRole` is present it must associate the `Equipment` with a `EnumerationKind-Role`." ;
            sh:path <http://data.ashrae.org/standard223#hasRole> ],
        [ rdfs:comment "If the relation `executes` is present it must associate the `Equipment` with a `Function`." ;
            sh:class <http://data.ashrae.org/standard223#Function> ;
            sh:message "s223: If the relation `executes` is present it must associate the `Equipment` with a `Function`." ;
            sh:path <http://data.ashrae.org/standard223#executes> ],
        [ rdfs:comment "If the relation `hasPhysicalLocation` is present it must associate the `Equipment` with a `PhysicalSpace`." ;
            sh:class <http://data.ashrae.org/standard223#PhysicalSpace> ;
            sh:message "s223: If the relation `hasPhysicalLocation` is present it must associate the `Equipment` with a `PhysicalSpace`." ;
            sh:path <http://data.ashrae.org/standard223#hasPhysicalLocation> ],
        [ rdfs:comment """If the relation `actuatedByProperty` is present it must associate the `Equipment` with a `ActuatableProperty`.
Note that any `Equipment` may use this relation, not just `Actuator`.""" ;
            sh:class <http://data.ashrae.org/standard223#ActuatableProperty> ;
            sh:message """If the relation `actuatedByProperty` is present it must associate the `Equipment` with a `ActuatableProperty`.
Note that any `Equipment` may use this relation, not just `Actuator`.""" ;
            sh:path <http://data.ashrae.org/standard223#actuatedByProperty> ],
        [ a sh:PropertyShape ;
            rdfs:comment "If the relation `contains` is present it must associate the `Equipment` with either `Equipment` or `Junction`." ;
            sh:message "s223: If the relation `contains` is present it must associate the `Equipment` with either `Equipment` or `Junction`." ;
            sh:name "device contains shape" ;
            sh:or ( [ sh:class <http://data.ashrae.org/standard223#Equipment> ] [ sh:class <http://data.ashrae.org/standard223#Junction> ] ) ;
            sh:path <http://data.ashrae.org/standard223#contains> ] ;
    sh:rule [ a sh:SPARQLRule ;
            rdfs:comment "For equipment contained within another piece of equipment use the `mapsTo` relation to infer a Medium from the containing equipment." ;
            sh:construct """
CONSTRUCT {
    ?childCp s223:hasMedium ?medium .
}
WHERE {
  $this s223:hasConnectionPoint ?cp .
  ?childCp s223:mapsTo ?cp .
  ?cp s223:connectsThrough ?connection .
  ?cp s223:hasMedium ?medium .
  FILTER NOT EXISTS {?childCp s223:hasMedium ?something} .
}
""" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> ],
        [ a sh:SPARQLRule ;
            rdfs:comment "For equipment containing another piece of equipment, use the `mapsTo` relation to infer a Medium from the contained equipment." ;
            sh:construct """
CONSTRUCT {
    ?parentCp s223:hasMedium ?medium .
}
WHERE {
  $this s223:hasConnectionPoint ?cp .
  ?cp s223:mapsTo ?parentCp .
  ?cp s223:connectsThrough ?connection .
  ?cp s223:hasMedium ?medium .
  FILTER NOT EXISTS {?parentCp s223:hasMedium ?something} .
}
""" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> ] .


        

ns4:equipment-containment

URI: pub:equipment-containment


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:equipment-containment> ns1:title "Equipment Containment" ;
    rdfs:comment "A piece of equipment can only contain other pieces of equipment. For example, a fan can be contained by an air handling unit. The relation `contains` is used to describe a piece of equipment containing another piece of equipment (see {s223:contains}). The relationship `mapsTo` relates a `ConnectionPoint` of a contained equipment to the `ConnectionPoint` of a containing equipment (see {s223:mapsTo}). For example, the inlet to a heating coil contained in a fan coil unit may map to the inlet of the fan coil unit. Any air connection to the fan coil unit inlet is supplying air to the inlet of the heating coil as well. Multiple pieces of equipment contained by the same piece of equipment may connect to each other, however, they may not connect to equipment that are not also contained. To indicate how a contained piece of equipment connects to an external piece of equipment, the relationship `mapsTo` is used. MapsTo will relate the connection point of a contained equipment to the connection point of the containing equipment, then the connection point of the containing equipment may connect to the external equipment." .


        

contains

URI: http://data.ashrae.org/standard223#contains


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#contains> a rdf:Property ;
    rdfs:label "contains" ;
    rdfs:comment "The relation `contains` is used to associate a `PhysicalSpace` with its component PhysicalSpaces or a piece of `Equipment` with its component pieces of `Equipment`." .


        

hasRole

URI: http://data.ashrae.org/standard223#hasRole


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasRole> a rdf:Property ;
    rdfs:label "hasRole" ;
    rdfs:comment "The relation `hasRole` is used to indicate the role of an `Equipment`, `Connection`, `ConnectionPoint`, or `System` within a building (e.g., a heating coil will be associated with `Role-Heating`). Possible values are defined in `EnumerationKind-Role` (see {s223:EnumerationKind-Role})." .


        

has Physical Location

URI: http://data.ashrae.org/standard223#hasPhysicalLocation


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasPhysicalLocation> a rdf:Property ;
    rdfs:label "has Physical Location" ;
    rdfs:comment "The relation `hasPhysicalLocation` is used to indicate the `PhysicalSpace` (see {s223:PhysicalSpace}) where a piece of `Equipment` (see {s223:Equipment}) is located. The physical location of a piece of equipment is not necessarily the same as the location affected by the operation of the equipment. For example, an air handler may physically be on the roof, but its effect is to provide conditioned air to a `Zone` or `DomainSpace` within the building. By following the path of connections, it can be determined what other equipment or spaces are possibly impacted by the equipment." .


        

Sensor

URI: http://data.ashrae.org/standard223#Sensor


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Sensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Sensor" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#FlowSensor> <http://data.ashrae.org/standard223#HumiditySensor> <http://data.ashrae.org/standard223#PressureSensor> <http://data.ashrae.org/standard223#TemperatureSensor> <http://data.ashrae.org/standard223#ConcentrationSensor> <http://data.ashrae.org/standard223#LightSensor> <http://data.ashrae.org/standard223#ParticulateSensor> <http://data.ashrae.org/standard223#OccupancySensor> <http://data.ashrae.org/standard223#hasMeasurementResolution> <http://data.ashrae.org/standard223#observes> <http://data.ashrae.org/standard223#hasObservationLocation> <http://data.ashrae.org/standard223#hasReferenceLocation> ) ;
    rdfs:comment "A `Sensor` observes an `ObservableProperty` (see {s223:ObservableProperty}) which may be quantifiable (see {s223:QuantifiableObservableProperty}), such as a temperature, flowrate, or concentration, or enumerable (see {s223:EnumeratedObservableProperty}), such as an alarm state or occupancy state." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "s223: If the observed `Property` has isDeltaQuantity true, the `Sensor` must have a `hasReferenceLocation` relation." ;
            sh:path <http://data.ashrae.org/standard223#observes> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "s223: If the observed `Property` has isDeltaQuantity true, the `Sensor` must have a `hasReferenceLocation` relation." ;
                    sh:message "s223: `Sensor` {$this} has `Property` {?x} with isDeltaQuantity true, but the `Sensor` lacks a reference location." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
          SELECT $this ?x
          WHERE {
$this s223:observes/qudt:isDeltaQuantity true .
$this s223:observes ?x .
?x a/rdfs:subClassOf* s223:QuantifiableProperty .
FILTER NOT EXISTS {$this s223:hasReferenceLocation ?y}
}
""" ] ],
        [ rdfs:comment "If a `Sensor` measures a differential property, it must be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`." ;
            sh:maxCount 1 ;
            sh:message "s223: If a `Sensor` measures a differential property, it must be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`." ;
            sh:path <http://data.ashrae.org/standard223#hasReferenceLocation> ],
        [ rdfs:comment "s223: If the `hasReferenceLocation` relation exists, the observed `Property` must have isDeltaQuantity true." ;
            sh:path <http://data.ashrae.org/standard223#observes> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "s223: If the `hasReferenceLocation` relation exists, the observed `Property` must have isDeltaQuantity true." ;
                    sh:message "s223: `Sensor` {$this} has a reference location, but its `Property` lacks isDeltaQuantity true." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
          SELECT $this
          WHERE {
$this s223:hasReferenceLocation ?y .
$this s223:observes ?x .
?x a/rdfs:subClassOf* s223:QuantifiableProperty .
FILTER NOT EXISTS {$this s223:observes/qudt:isDeltaQuantity true}
}
""" ] ],
        [ rdfs:comment "A `Sensor` must be associated with exactly one location using the relation `hasObservationLocation`." ;
            sh:maxCount 1 ;
            sh:message "s223: A `Sensor` must be associated with exactly one location using the relation `hasObservationLocation`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasObservationLocation> ],
        [ rdfs:comment "If the relation `hasMeasurementResolution` is present it must associate a `Sensor` with a `QuantifiableProperty`." ;
            sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
            sh:message "s223: If the relation `hasMeasurementResolution` is present it must associate a `Sensor` with a `QuantifiableProperty`." ;
            sh:path <http://data.ashrae.org/standard223#hasMeasurementResolution> ],
        [ rdfs:comment "A `Sensor` must be associated with exactly one `ObservableProperty` using the relation `observes`." ;
            sh:class <http://data.ashrae.org/standard223#ObservableProperty> ;
            sh:maxCount 1 ;
            sh:message "s223: A `Sensor` must be associated with exactly one `ObservableProperty` using the relation `observes`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#observes> ] ;
    sh:rule [ a sh:SPARQLRule ;
            rdfs:comment "Infer the `hasObservationLocation` relation for a `Sensor` from the `Property` that it is observing, only if that `Property` is associated with a single entity." ;
            sh:construct """
CONSTRUCT {$this s223:hasObservationLocation ?something .}
WHERE {
{
SELECT ?prop (COUNT (DISTINCT ?measurementLocation) AS ?count) $this
WHERE {
FILTER (NOT EXISTS {$this s223:hasObservationLocation ?anything}) .
$this s223:observes ?prop .
?measurementLocation s223:hasProperty ?prop .
}
GROUP BY ?prop $this
}
FILTER (?count = 1) .
?something s223:hasProperty ?prop .
{?something a/rdfs:subClassOf* s223:Connectable}
UNION
{?something a/rdfs:subClassOf* s223:Connection}
UNION
{?something a/rdfs:subClassOf* s223:ConnectionPoint}
}
""" ;
            sh:name "InferredMeasurementLocation" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> ] .


        

Flow sensor

URI: http://data.ashrae.org/standard223#FlowSensor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#FlowSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Flow sensor" ;
    rdfs:comment "A `FlowSensor` is a specialization of a `Sensor` that produces an `ObservableProperty` that is quantifiable and represents a flow measurement." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Sensor> .


        

Humidity sensor

URI: http://data.ashrae.org/standard223#HumiditySensor


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#HumiditySensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Humidity sensor" ;
    rdfs:comment "A `HumiditySensor` is a specialization of a `Sensor` that `observes` a `QuantifiableObservableProperty` that represents a humidity measurement. " ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Sensor> ;
    sh:property [ rdfs:comment "A `HumiditySensor` must be defined in terms of the `QuantityKind` that is being measured, which must be either RelativeHumidity or AbsoluteHumidity." ;
            sh:class <http://data.ashrae.org/standard223#QuantifiableObservableProperty> ;
            sh:message "s223: A `HumiditySensor` must observe a `QuantifiableObservableProperty` that `hasQuantityKind` of either RelativeHumidity or AbsoluteHumidity." ;
            sh:node [ sh:property [ sh:or ( [ sh:hasValue <http://qudt.org/vocab/quantitykind/RelativeHumidity> ] [ sh:hasValue <http://qudt.org/vocab/quantitykind/AbsoluteHumidity> ] ) ;
                            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ;
            sh:path <http://data.ashrae.org/standard223#observes> ] .


        

Pressure sensor

URI: http://data.ashrae.org/standard223#PressureSensor


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#PressureSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Pressure sensor" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#GaugePressureSensor> ) ;
    rdfs:comment """
A `PressureSensor` is a specialization of a `Sensor` that observes a `QuantifiableObservableProperty` that represents a pressure measurement.

There are three primary use cases for measuring pressure in building environments.

* **Absolute pressure**, essential in applications like weather stations where
  atmospheric pressure readings are required.

```
@prefix : <http://example.com/> .

:case1 a s223:PressureSensor ;
    s223:hasObservationLocation :location1 ;
    qudt:hasQuantityKind quantitykind:Pressure ;
.
```

* **Differential pressure**, where it's necessary to measure the pressure drop
  across filters in ducts or compare the pressure between different rooms and
  hallways to ensure proper airflow and contamination control.

```
@prefix : <http://example.com/> .

:case2 a s223:PressureSensor ;
    s223:hasObservationLocation :location2 ;
    s223:hasReferenceLocation :other-location ;
    qudt:hasQuantityKind quantitykind:Pressure ;
    qudt:isDeltaQuantity true ;
.
```

* **Gauge pressure**, which indicates pressure relative to atmospheric pressure.
  This is commonly used in applications such as monitoring compressed gas
  cylinders. In this scenario, a gauge reading of zero signifies that the
  measured pressure is equal to the atmospheric pressure, not a vacuum.

```
@prefix : <http://example.com/> .

:case3 a s223:PressureSensor ;
    s223:hasObservationLocation :location3 ;
    s223:hasReferenceLocation :ambient-location ;
    qudt:hasQuantityKind quantitykind:GaugePressure ;
    qudt:isDeltaQuantity true ;
.
```
""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Sensor> .


        

Differential sensor

URI: http://data.ashrae.org/standard223#GaugePressureSensor


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#GaugePressureSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Differential sensor" ;
    rdfs:comment "A pressure sensor that indicates pressure relative to atmospheric pressure." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#PressureSensor> ;
    sh:property [ rdfs:comment "A `GaugePressureSensor` must always observe a `Property` that has a value of true for qudt:isDeltaQuantity." ;
            sh:maxCount 1 ;
            sh:message "s223: A `GaugePressureSensor` must always observe a `Property` that has a value of true for qudt:isDeltaQuantity." ;
            sh:minCount 1 ;
            sh:path ( <http://data.ashrae.org/standard223#observes> <http://qudt.org/schema/qudt/isDeltaQuantity> ) ;
            sh:value true ],
        [ rdfs:comment "A `GaugePressureSensor` must always observe a `Property` that has a `QuantityKind` of GaugePressure." ;
            sh:message "s223: A `GaugePressureSensor` must always observe a `Property` that has a `QuantityKind` of GaugePressure." ;
            sh:path ( <http://data.ashrae.org/standard223#observes> <http://qudt.org/schema/qudt/hasQuantityKind> ) ;
            sh:value <http://qudt.org/vocab/quantitykind/GaugePressure> ] .


        

Temp sensor

URI: http://data.ashrae.org/standard223#TemperatureSensor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#TemperatureSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Temp sensor" ;
    rdfs:comment "A `TemperatureSensor` is a specialization of a `Sensor` that observes a `QuantifiableObservableProperty` that represents a temperature measurement." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Sensor> ;
    sh:property [ rdfs:comment "A `TemperatureSensor` must always observe a `Property` that has a `QuantityKind` of `Temperature`." ;
            sh:message "s223: A `TemperatureSensor` must always observe a `Property` that has a `QuantityKind` of `Temperature`." ;
            sh:path <http://data.ashrae.org/standard223#observes> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Property> ;
                    sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/quantitykind/Temperature> ;
                                    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ] ] .


        

Concentration sensor

URI: http://data.ashrae.org/standard223#ConcentrationSensor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#ConcentrationSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Concentration sensor" ;
    rdfs:comment """A `ConcentrationSensor` is a specialization of a `Sensor` that `observes` a `QuantifiableObservableProperty` 
that represents the concentration of a miscible constituent in a medium, in contrast to a `ParticulateSensor` that `observes` the amount of a particulate in a medium 
(see {s223:ParticulateSensor}). The 223 standard does not constrain the `Unit` or `QuantityKind` reported by a `ConcentrationSensor`, but possible 
`QuantityKind`s include `Concentration` (moles per volume), `Density` (mass per volume), `MoleFraction`, and `VolumeFraction`.""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Sensor> .


        

Light sensor

URI: http://data.ashrae.org/standard223#LightSensor


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#LightSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Light sensor" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#CorrelatedColorTemperatureSensor> <http://data.ashrae.org/standard223#DuvSensor> <http://data.ashrae.org/standard223#IlluminanceSensor> ) ;
    rdfs:comment "A `LightSensor` is a specialization of a `Sensor` that observes a `QuantifiableObservableProperty` that represents a measurement of some attribute of light, as specified by the `QuantityKind` of the `Property` being observed." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Sensor> .


        

Correlated color temperature sensor

URI: http://data.ashrae.org/standard223#CorrelatedColorTemperatureSensor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#CorrelatedColorTemperatureSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Correlated color temperature sensor" ;
    rdfs:comment "A subclass of `LightSensor` that `observes` the correlated color temperature (CCT) of a light source, defined as the absolute temperature of a blackbody whose chromaticity most nearly resembles that of the light source." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#LightSensor> ;
    sh:property [ rdfs:comment "A `CorrelatedColorTemperatureSensor` must always observe a `Property` that has a `QuantityKind` of `ThermodynamicTemperature`." ;
            sh:message "s223: A `CorrelatedColorTemperatureSensor` must always observe a `Property` that has a `QuantityKind` of `ThermodynamicTemperature`." ;
            sh:path <http://data.ashrae.org/standard223#observes> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Property> ;
                    sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/quantitykind/ThermodynamicTemperature> ;
                                    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ] ] .


        

Duv sensor

URI: http://data.ashrae.org/standard223#DuvSensor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#DuvSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Duv sensor" ;
    rdfs:comment "A subclass of `LightSensor` that `observes` Duv of a light source, defined as the distance between the chromaticity of the light source and a blackbody radiator of equal correlated color temperature (CCT)." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#LightSensor> ;
    sh:property [ rdfs:comment "A `DuvSensor` must always observe a `Property` that has a `QuantityKind` of `Duv`." ;
            sh:message "s223: A `DuvSensor` must always observe a `Property` that has a `QuantityKind` of `Duv`." ;
            sh:path <http://data.ashrae.org/standard223#observes> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Property> ;
                    sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/quantitykind/Duv> ;
                                    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ] ] .


        

Illuminance sensor

URI: http://data.ashrae.org/standard223#IlluminanceSensor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#IlluminanceSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Illuminance sensor" ;
    rdfs:comment "A subclass of `LightSensor` that `observes` illuminance, defined as the areal density of the luminous flux incident at a point on a surface." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#LightSensor> ;
    sh:property [ rdfs:comment "An `IlluminanceSensor` must observe a `Property` that has a `QuantityKind` of Illuminance." ;
            sh:message "s223: An `IlluminanceSensor` must observe a `Property` that has a `QuantityKind` of Illuminance." ;
            sh:path <http://data.ashrae.org/standard223#observes> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Property> ;
                    sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/quantitykind/Illuminance> ;
                                    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ] ] .


        

Particulate sensor

URI: http://data.ashrae.org/standard223#ParticulateSensor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#ParticulateSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Particulate sensor" ;
    rdfs:comment """A `ParticulateSensor` is a specialization of a `Sensor` that observes a `QuantifiableObservableProperty` 
that represents the amount of a particulate in a medium, in contrast to a `ConcentrationSensor` that observes the concentration 
of a miscible constituent in a medium (see {s223:ConcentrationSensor}). The 223 standard does not constrain the `Unit` or 
`QuantityKind` reported by a `ParticulateSensor`, but possible `QuantityKind`s include `Density` (mass per volume), 
`ParticleNumberDensity` (count per volume), and `DimensionlessRatio` (with units such as PPM or PPB). Some sensors may claim to report
a raw count of particles, for which a `QuantityKind` of `Count` could be used, but the required context for such a measurement 
should be provided in the sensor's documentation to specify if it in fact measures a count per volume, time, or some other combination. 
Explicitly declaring the `QuantityKind` of a sensor's output is preferable to relying on implicit assumptions.
""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Sensor> ;
    sh:property [ rdfs:comment "If the relation `ofSubstance` is present it must associate the `ParticulateSensor` with a `Substance-Particulate`." ;
            sh:class <http://data.ashrae.org/standard223#Substance-Particulate> ;
            sh:message "s223: If the relation `ofSubstance` is present it must associate the `ParticulateSensor` with a `Substance-Particulate`." ;
            sh:path <http://data.ashrae.org/standard223#ofSubstance> ] .


        

Occupancy sensor

URI: http://data.ashrae.org/standard223#OccupancySensor


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#OccupancySensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Occupancy sensor" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#OccupantCounter> <http://data.ashrae.org/standard223#OccupantMotionSensor> <http://data.ashrae.org/standard223#OccupantPresenceSensor> ) ;
    rdfs:comment "An `OccupancySensor` is a subclass of a `Sensor` that observes a `Property` that represents measurement of occupancy in a space." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Sensor> .


        

Occupant counter

URI: http://data.ashrae.org/standard223#OccupantCounter


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#OccupantCounter> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Occupant counter" ;
    rdfs:comment "A subclass of `OccupancySensor` that counts the population within its sensing region." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#OccupancySensor> ;
    sh:property [ rdfs:comment "An `OccupantCounter` must always observe a `QuantifiableObservableProperty` that has a `QuantityKind` of `Population` and a `Unit` of `NUM`." ;
            sh:class <http://data.ashrae.org/standard223#QuantifiableObservableProperty> ;
            sh:message "s223: An `OccupantCounter` must always observe a `QuantifiableObservableProperty` that has a `QuantityKind` of `Population` and a `Unit` of `NUM`." ;
            sh:minCount 1 ;
            sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/unit/NUM> ;
                            sh:maxCount 1 ;
                            sh:path <http://qudt.org/schema/qudt/hasUnit> ],
                        [ sh:hasValue <http://qudt.org/vocab/quantitykind/Population> ;
                            sh:maxCount 1 ;
                            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ;
            sh:path <http://data.ashrae.org/standard223#observes> ] .


        

Occupant motion sensor

URI: http://data.ashrae.org/standard223#OccupantMotionSensor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#OccupantMotionSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Occupant motion sensor" ;
    rdfs:comment "A subclass of `OccupancySensor` that observes motion within its sensing region." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#OccupancySensor> ;
    sh:property [ rdfs:comment "An `OccupantMotionSensor` must always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Motion`." ;
            sh:class <http://data.ashrae.org/standard223#EnumeratedObservableProperty> ;
            sh:message "s223: An `OccupantMotionSensor` must always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Motion`." ;
            sh:minCount 1 ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Occupancy-Motion> ;
                            sh:maxCount 1 ;
                            sh:path <http://data.ashrae.org/standard223#hasEnumerationKind> ] ] ;
            sh:path <http://data.ashrae.org/standard223#observes> ] .


        

Occupant presence sensor

URI: http://data.ashrae.org/standard223#OccupantPresenceSensor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#OccupantPresenceSensor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Occupant presence sensor" ;
    rdfs:comment "A subclass of `OccupancySensor` that observes presence within its sensing region." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#OccupancySensor> ;
    sh:property [ rdfs:comment "An `OccupantPresenceSensor` must always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Presence`." ;
            sh:class <http://data.ashrae.org/standard223#EnumeratedObservableProperty> ;
            sh:message "s223: An `OccupantPresenceSensor` must always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Presence`." ;
            sh:minCount 1 ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Occupancy-Presence> ;
                            sh:maxCount 1 ;
                            sh:path <http://data.ashrae.org/standard223#hasEnumerationKind> ] ] ;
            sh:path <http://data.ashrae.org/standard223#observes> ] .


        

has measurement resolution

URI: http://data.ashrae.org/standard223#hasMeasurementResolution


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasMeasurementResolution> a rdf:Property ;
    rdfs:label "has measurement resolution" ;
    rdfs:comment "The `hasMeasurementResolution` relation is used to link to a numerical `Property` whose value indicates the smallest recognizable change in engineering units that the sensor is able to indicate. " .


        

observes

URI: http://data.ashrae.org/standard223#observes


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#observes> a rdf:Property ;
    rdfs:label "observes" ;
    rdfs:comment "The relation `observes` binds a sensor to one `ObservableProperty` (see {s223:ObservableProperty}) which is used by the sensor to generate a measurement value (ex. a temperature) or a simple observation of a stimulus causing a reaction (a current binary switch that closes a dry contact when a fan is powered on)." .


        

has observation location

URI: http://data.ashrae.org/standard223#hasObservationLocation


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasObservationLocation> a rdf:Property ;
    rdfs:label "has observation location" ;
    rdfs:comment "The relation `hasObservationLocation` is used to associate a sensor to the topological location where it is observing the `Property` (see {s223:observes}). The observation location shall be a `Connectable` (see {s223:Connectable}), `Connection` (see {s223:Connection}), or `ConnectionPoint` (see {s223:ConnectionPoint})." .


        

has reference location

URI: http://data.ashrae.org/standard223#hasReferenceLocation


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasReferenceLocation> a rdf:Property ;
    rdfs:label "has reference location" ;
    rdfs:comment "The relation `hasReferenceLocation` is used to associate a differential sensor to the topological location of the baseline (reference) `Property` (see {s223:observes})." .


        

Actuator

URI: http://data.ashrae.org/standard223#Actuator


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Actuator> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Actuator" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#actuates> <http://data.ashrae.org/standard223#actuatedByProperty> ) ;
    ns1:title "Actuator" ;
    rdfs:comment "A piece of equipment, either electrically, pneumatically, or hydraulically operated, that makes a change in the physical world, such as the position of a valve or damper.",
        "Actuators are physical entities that receive control signals and actuate equipment." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "If the relation `actuates` is present it must associate the `Actuator` with a `Equipment`." ;
            sh:class <http://data.ashrae.org/standard223#Equipment> ;
            sh:message "s223: If the relation `actuates` is present it must associate the `Actuator` with a `Equipment`." ;
            sh:path <http://data.ashrae.org/standard223#actuates> ],
        [ rdfs:comment "An `Actuator` must be associated with at least one `ActuatableProperty` using the relation `actuatedByProperty`." ;
            sh:class <http://data.ashrae.org/standard223#ActuatableProperty> ;
            sh:message "s223: An `Actuator` must be associated with at least one `ActuatableProperty` using the relation `actuatedByProperty`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#actuatedByProperty> ] .


        

actuates

URI: http://data.ashrae.org/standard223#actuates


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#actuates> a rdf:Property ;
    rdfs:label "actuates" ;
    rdfs:comment "The relation `actuates` binds an `Actuator` to the `Equipment` that it actuates." .


        

commanded by Property

URI: http://data.ashrae.org/standard223#actuatedByProperty


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#actuatedByProperty> a rdf:Property ;
    rdfs:label "commanded by Property" ;
    rdfs:comment """The relation `actuatedByProperty` binds an `Equipment` to the `ActuatableProperty` that it responds to. If the `Equipment` 
is an `Actuator` (a subclass of `Equipment`), `actuatedByProperty` is a required relation. An `Actuator` may also identify another piece of 
`Equipment` being actuated. (see {s223:actuates}).""" .


        

Controller

URI: http://data.ashrae.org/standard223#Controller


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Controller> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Controller" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Function> <http://data.ashrae.org/standard223#executes> ) ;
    ns1:title "Controller" ;
    rdfs:comment "A device for regulation of a system or component in normal operation, which executes a `Function`." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "If the relation `executes` is present it must associate the `Controller` with a `Function`." ;
            sh:class <http://data.ashrae.org/standard223#Function> ;
            sh:message "s223: If the relation `executes` is present it must associate the `Controller` with a `Function`." ;
            sh:path <http://data.ashrae.org/standard223#executes> ] .


        

Function

URI: http://data.ashrae.org/standard223#Function


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Function> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Function" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#hasInput> <http://data.ashrae.org/standard223#hasOutput> ) ;
    ns1:title "Function" ;
    rdfs:comment "A `Function` is used to model transfer and/or transformation of information (i.e. `Property`). It has relations to input Properties and output Properties. The actual algorithms that perform the transformations are described in CDL and are out of scope of the 223 standard." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Concept> ;
    sh:property [ rdfs:comment "If the relation `hasInput` is present it must associate a `Function` with a `Property`." ;
            sh:class <http://data.ashrae.org/standard223#Property> ;
            sh:message "s223: If the relation `hasInput` is present it must associate a `Function` with a `Property`." ;
            sh:path <http://data.ashrae.org/standard223#hasInput> ],
        [ rdfs:comment "If the relation `hasOutput` is present it must associate a `Function` with a `Property`." ;
            sh:class <http://data.ashrae.org/standard223#Property> ;
            sh:message "s223: If the relation `hasOutput` is present it must associate a `Function` with a `Property`." ;
            sh:path <http://data.ashrae.org/standard223#hasOutput> ] .


        

has input

URI: http://data.ashrae.org/standard223#hasInput


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasInput> a rdf:Property ;
    rdfs:label "has input" ;
    rdfs:comment "The relation `hasInput` is used to relate a `Function` (see {s223:Function}) to a `Property` (see {s223:Property}) that is used as input." .


        

has output

URI: http://data.ashrae.org/standard223#hasOutput


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasOutput> a rdf:Property ;
    rdfs:label "has output" ;
    rdfs:comment "The relation `hasOutput` is used to relate a `Function` (see {s223:Function}) to a `Property` (see {s223:Property}) that is calculated by the `Function`." .


        

executes

URI: http://data.ashrae.org/standard223#executes


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#executes> a rdf:Property ;
    rdfs:label "executes" ;
    rdfs:comment "The relation `executes` is used to specify that a `Controller` (see {s223:Controller}) is responsible for the execution of a `Function` (see {s223:Function}). " .


        

ns4:connection

URI: pub:connection


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:connection> ns1:subclauses ( <http://data.ashrae.org/standard223#Connectable> <http://data.ashrae.org/standard223#ConnectionPoint> <http://data.ashrae.org/standard223#Connection> <http://data.ashrae.org/standard223#Junction> <pub:connectedness> <http://data.ashrae.org/standard223#hasMedium> ) ;
    ns1:title "CONNECTION" ;
    rdfs:comment "This clause is the top level of the hierarchical structure of the portion of the model that represents the characteristics and features of connections that provide a means for a medium such as air, water, or electricity, to flow from one place to another. Examples of connections are ducts, pipes, andconductors." .


        

Connectable

URI: http://data.ashrae.org/standard223#Connectable


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns1:Connectable a ns1:Class,
        sh:NodeShape ;
    rdfs:label "Connectable" ;
    ns1:abstract true ;
    rdfs:comment "`Connectable` is an abstract class representing a thing such as, `Equipment` (see {s223:Equipment}), `DomainSpace` (see {s223:DomainSpace}), or `Junction` (see {s223:Junction}) that can be `connected` via connection points and connections." ;
    rdfs:subClassOf ns1:Concept ;
    sh:property [ rdfs:comment "If the relation `cnx` is present it must associate the `Connectable` with a `ConnectionPoint`." ;
            sh:class ns1:ConnectionPoint ;
            sh:message "s223: If the relation `cnx` is present it must associate the `Connectable` with a `ConnectionPoint`." ;
            sh:path ns1:cnx ],
        [ rdfs:comment "If the relation `connectedFrom` is present it must associate the `Connectable` with a `Connectable`." ;
            sh:class ns1:Connectable ;
            sh:message "s223: If the relation `connectedFrom` is present it must associate the `Connectable` with a `Connectable`." ;
            sh:path ns1:connectedFrom ],
        [ rdfs:comment "If a `Connectable` has s223:connected or s223:connectedTo (i.e. high-level connection specification), it must also have the supporting `cnx` relations (low-level connection specification)." ;
            sh:path ns1:cnx ;
            sh:severity sh:Warning ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "If a `Connectable` has s223:connected or s223:connectedTo (i.e. high-level connection specification), it must also have the supporting `cnx` relations (low-level connection specification)." ;
                    sh:message "s223: {$this} is s223:connected (high-level) to {?otherC} but not connected at the cnx-level." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?otherC
WHERE {
$this s223:connected ?otherC .
FILTER NOT EXISTS {$this s223:cnx+ ?otherC}
}
""" ] ],
        [ rdfs:comment "If the relation `connectedTo` is present it must associate the `Connectable` with a `Connectable`." ;
            sh:class ns1:Connectable ;
            sh:message "s223: If the relation `connectedTo` is present it must associate the `Connectable` with a `Connectable`." ;
            sh:name "ConnectableToConnectableShape" ;
            sh:path ns1:connectedTo ],
        [ rdfs:comment "If the relation `hasConnectionPoint` is present it must associate the `Connectable` with a `ConnectionPoint`." ;
            sh:class ns1:ConnectionPoint ;
            sh:message "s223: If the relation `hasConnectionPoint` is present it must associate the `Connectable` with a `ConnectionPoint`." ;
            sh:name "EquipmentToConnectionPointShape" ;
            sh:path ns1:hasConnectionPoint ],
        [ rdfs:comment "If the relation `connected` is present it must associate the `Connectable` with a `Connectable`." ;
            sh:class ns1:Connectable ;
            sh:message "s223: If the relation `connected` is present it must associate the `Connectable` with a `Connectable`." ;
            sh:name "SymmetricConnectableToConnectableShape" ;
            sh:path ns1:connected ],
        [ rdfs:comment "If the relation `connectedThrough` is present it must associate the `Connectable` with a `Connection`." ;
            sh:class ns1:Connection ;
            sh:message "s223: If the relation `connectedThrough` is present it must associate the `Connectable` with a `Connection`." ;
            sh:name "EquipmentToConnectionShape" ;
            sh:path ns1:connectedThrough ] ;
    sh:rule [ a sh:SPARQLRule ;
            rdfs:comment "Infer the `connected` relation for BiDirectional connections" ;
            sh:construct """
CONSTRUCT {$this s223:connected ?d2 .}
WHERE {
$this s223:connectedThrough/^s223:connectedThrough ?d2 .
FILTER ($this != ?d2) .
FILTER NOT EXISTS {$this s223:contains* ?d2} .
FILTER NOT EXISTS {?d2 s223:contains* $this} .
}
""" ;
            sh:name "InferredEquipmentToDownstreamEquipmentProperty" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> ],
        [ a sh:TripleRule ;
            rdfs:comment "Infer the `cnx` relation using `isConnectionPointOf`." ;
            sh:name "InferredEquipmentToConnectionPointCnxPropertyFromInverse" ;
            sh:object [ sh:path [ sh:inversePath ns1:isConnectionPointOf ] ] ;
            sh:predicate ns1:cnx ;
            sh:subject sh:this ],
        [ a sh:TripleRule ;
            rdfs:comment "Infer the `connectedThrough` relation using `hasConnectionPoint` and `connectsThrough`" ;
            sh:name "InferredEquipmentToConnectionProperty" ;
            sh:object [ sh:path ( ns1:hasConnectionPoint ns1:connectsThrough ) ] ;
            sh:predicate ns1:connectedThrough ;
            sh:subject sh:this ],
        [ a sh:TripleRule ;
            rdfs:comment "Infer the `connected` relation using `connectedFrom`" ;
            sh:name "InferredEquipmentToEquipmentPropertyfromconnectedFrom" ;
            sh:object [ sh:path ns1:connectedFrom ] ;
            sh:predicate ns1:connected ;
            sh:subject sh:this ],
        [ a sh:SPARQLRule ;
            rdfs:comment "Infer the `connectedFrom` relations using `connectsThrough` and `connectsFrom`." ;
            sh:construct """
CONSTRUCT {$this s223:connectedFrom ?equipment .}
WHERE {
$this s223:hasConnectionPoint ?cp .
?cp a s223:InletConnectionPoint .
?cp s223:connectsThrough/s223:connectsFrom ?equipment .
}
""" ;
            sh:name "InferredEquipmentToUpstreamEquipmentProperty" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> ],
        [ a sh:TripleRule ;
            rdfs:comment "Infer the `hasConnectionPoint` relation using `cnx`" ;
            sh:name "InferredEquipmentToConnectionPointProperty" ;
            sh:object [ sh:path ns1:cnx ] ;
            sh:predicate ns1:hasConnectionPoint ;
            sh:subject sh:this ],
        [ a sh:SPARQLRule ;
            rdfs:comment "Infer the `connectedTo` relation using `connectsThrough` and `connectsTo`." ;
            sh:construct """
CONSTRUCT {$this s223:connectedTo ?equipment .}
WHERE {
$this s223:hasConnectionPoint ?cp .
?cp a s223:OutletConnectionPoint .
?cp s223:connectsThrough/s223:connectsTo ?equipment .
}
""" ;
            sh:name "InferredEquipmentToDownstreamEquipmentProperty" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> ],
        [ a sh:TripleRule ;
            rdfs:comment "Infer the `connected` relation using `connectedTo`" ;
            sh:name "InferredEquipmentToEquipmentPropertyfromconnectedTo" ;
            sh:object [ sh:path ns1:connectedTo ] ;
            sh:predicate ns1:connected ;
            sh:subject sh:this ],
        [ a sh:TripleRule ;
            rdfs:comment "Infer the `cnx` relationship using `hasConnectionPoint`." ;
            sh:name "InferredEquipmentToConnectionPointCnxProperty" ;
            sh:object [ sh:path ns1:hasConnectionPoint ] ;
            sh:predicate ns1:cnx ;
            sh:subject sh:this ] .


        

ConnectionPoint

URI: http://data.ashrae.org/standard223#ConnectionPoint


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix ns2: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns1:ConnectionPoint a ns1:Class,
        sh:NodeShape ;
    rdfs:label "ConnectionPoint" ;
    ns1:abstract true ;
    ns2:subclauses ( ns1:BidirectionalConnectionPoint ns1:InletConnectionPoint ns1:OutletConnectionPoint ns1:pairedConnectionPoint ns1:mapsTo ns1:hasMedium ) ;
    rdfs:comment """
A `ConnectionPoint` is an abstract modeling construct used to represent the fact that one connectable thing can be `connected` to another connectable thing using a `Connection`. It is the abstract representation of the flange, wire terminal, or other physical feature where a connection is made. `Equipment`, DomainSpaces and Junctions can have one or more connection points (see {s223:Connectable}).

A `ConnectionPoint` is constrained to relate to a specific medium such as air, water, or electricity which determines what other things can be connected to it. For example, constraining a ConnectionPoint to be for air means it cannot be used for an electrical connection.

A `ConnectionPoint` belongs to exactly one connectable thing (see {s223:Connectable}).

Connection points are represented graphically in this standard by a triangle with the point indicating a direction of flow, or a diamond in the case of a bidirectional flow as shown in Figure 6-1. 

![Graphical Representation of a ConnectionPoint.](figures/Figure_5-2_Graphical_Depiciton_of_Connection_Points.svg)

 """ ;
    rdfs:subClassOf ns1:Concept ;
    sh:property [ rdfs:comment "If a `ConnectionPoint` `mapsTo` another `ConnectionPoint`, the respective `Equipment` should have a `contains` relation." ;
            sh:path ns1:mapsTo ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "If a `ConnectionPoint` `mapsTo` another `ConnectionPoint`, the respective `Equipment` should have a `contains` relation." ;
                    sh:message "s223: {?otherEquipment} should contain {?equipment} because `ConnectionPoint` {$this} has a `mapsTo` relation." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?equipment ?otherEquipment
WHERE {
$this s223:mapsTo ?otherCP .
?equipment s223:hasConnectionPoint $this .
?otherEquipment s223:hasConnectionPoint ?otherCP .
FILTER NOT EXISTS {?otherEquipment s223:contains ?equipment}
}
""" ] ],
        [ rdfs:comment "A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the relation `mapsTo`" ;
            sh:class ns1:ConnectionPoint ;
            sh:maxCount 1 ;
            sh:message "s223: A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the relation `mapsTo`" ;
            sh:path ns1:mapsTo ],
        [ rdfs:comment "Ensure that the Medium identified by a `ConnectionPoint` via the s223:hasMedium relation is compatible with the Medium identified by the entity identified by the `mapsTo`+ relation." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path ns1:hasMedium ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Ensure that the Medium identified by a `ConnectionPoint` via the s223:hasMedium relation is compatible with the Medium identified by the entity identified by the `mapsTo`+ relation." ;
                    sh:message "s223: {$this} declares a medium of {?a}, but the medium of {?b} is declared by {?target} pointed to by the `mapsTo`+ relation." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT DISTINCT $this ?a ?b ?target
WHERE {
$this s223:hasMedium ?a .
$this s223:mapsTo+ ?target .
?target s223:hasMedium ?b .
?a a/rdfs:subClassOf* s223:Substance-Medium .
?b a/rdfs:subClassOf* s223:Substance-Medium .
FILTER (?a != ?b ) .
FILTER (NOT EXISTS {?b a/rdfs:subClassOf* ?a}) .
FILTER (NOT EXISTS {?a a/rdfs:subClassOf* ?b}) .
}
""" ] ],
        [ rdfs:comment "A `ConnectionPoint` must not have both a `mapsTo` and a `connectsThrough` relation." ;
            sh:path ns1:mapsTo ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "A `ConnectionPoint` must not have both a `mapsTo` and a `connectsThrough` relation." ;
                    sh:message "s223: {$this} cannot have both a `mapsTo` {?uppercp} and a `connectsThrough` {?connection}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?uppercp ?connection
WHERE {
$this s223:mapsTo ?uppercp .
$this s223:connectsThrough ?connection .
?connection a/rdfs:subClassOf* s223:Connection .
}
""" ] ],
        [ rdfs:comment "If the relation `hasElectricalPhase` is present it must associate the `ConnectionPoint` with an ElectricalPhaseIdentifier or ElectricalVoltagePhases." ;
            sh:message "s223: If the relation `hasElectricalPhase` is present it must associate the `ConnectionPoint` with an ElectricalPhaseIdentifier or ElectricalVoltagePhases." ;
            sh:or ( [ sh:class ns1:EnumerationKind-ElectricalPhaseIdentifier ] [ sh:class ns1:EnumerationKind-ElectricalVoltagePhases ] ) ;
            sh:path ns1:hasElectricalPhase ],
        [ rdfs:comment "A `ConnectionPoint` must be associated with at most one `Connection` using the `cnx` relation" ;
            sh:message "s223: A `ConnectionPoint` must be associated with at most one `Connection` using the `cnx` relation" ;
            sh:path ns1:cnx ;
            sh:qualifiedMaxCount 1 ;
            sh:qualifiedValueShape [ sh:class ns1:Connection ] ;
            sh:qualifiedValueShapesDisjoint true ],
        [ rdfs:comment "A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the inverse of relation `mapsTo`" ;
            sh:class ns1:ConnectionPoint ;
            sh:maxCount 1 ;
            sh:message "s223: A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the inverse of relation `mapsTo`" ;
            sh:path [ sh:inversePath ns1:mapsTo ] ],
        [ rdfs:comment "If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, but is associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` might need a `mapsTo` relation to a `ConnectionPoint` of the containing `Equipment`." ;
            sh:path ns1:mapsTo ;
            sh:severity sh:Info ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, but is associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` might need a `mapsTo` relation to a `ConnectionPoint` of the containing `Equipment`." ;
                    sh:message "s223: `ConnectionPoint` {$this} could be missing a `mapsTo` relation to a `ConnectionPoint` of {?containerEquipment} because it is associated with a `Junction` or `Equipment` that is contained by {?containerEquipment}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
    SELECT $this ?containerEquipment
    WHERE {
        FILTER NOT EXISTS {$this s223:connectsThrough ?anything1} .
        FILTER NOT EXISTS {$this s223:mapsTo ?anything2} .
        FILTER NOT EXISTS {?anything3 s223:hasBoundaryConnectionPoint $this} .
        $this s223:isConnectionPointOf ?equipment .
        ?containerEquipment s223:contains ?equipment .
        }
        """ ] ],
        [ rdfs:comment "A `ConnectionPoint` must be associated with at most one `Connectable` using the `cnx` relation." ;
            sh:message "s223: A `ConnectionPoint` must be associated with at most one `Connectable` using the `cnx` relation." ;
            sh:path ns1:cnx ;
            sh:qualifiedMaxCount 1 ;
            sh:qualifiedValueShape [ sh:class ns1:Connectable ] ;
            sh:qualifiedValueShapesDisjoint true ],
        [ rdfs:comment "If the relation `hasRole` is present it must associate the `ConnectionPoint` with an `EnumerationKind-Role`." ;
            sh:class ns1:EnumerationKind-Role ;
            sh:message "s223: If the relation `hasRole` is present it must associate the `ConnectionPoint` with an `EnumerationKind-Role`." ;
            sh:path ns1:hasRole ],
        [ rdfs:comment "If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, and is not associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` probably needs an association with a `Connection`." ;
            sh:path ns1:connectsThrough ;
            sh:severity sh:Info ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, and is not associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` probably needs an association with a `Connection`." ;
                    sh:message "s223: `ConnectionPoint` {$this} probably needs an association with a `Connection`, or use of `hasOptionalConnectionPoint` or `hasBoundaryConnectionPoint` qualifiers." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
    SELECT $this 
    WHERE {
        FILTER NOT EXISTS {?sys1 s223:hasBoundaryConnectionPoint $this} .
        FILTER NOT EXISTS {?sys2 s223:hasOptionalConnectionPoint $this} .
        FILTER NOT EXISTS {$this s223:connectsThrough ?anything1} .
        FILTER NOT EXISTS {$this s223:mapsTo ?anything2} .
        $this s223:isConnectionPointOf ?equipment .
        FILTER NOT EXISTS {?containerEquipment s223:contains ?equipment} .
        }
        """ ] ],
        [ rdfs:comment "A `ConnectionPoint` must be associated with exactly one `Connectable` using the relation `isConnectionPointOf`." ;
            sh:class ns1:Connectable ;
            sh:maxCount 1 ;
            sh:message "s223: A `ConnectionPoint` must be associated with exactly one `Connectable` using the relation `isConnectionPointOf`." ;
            sh:minCount 1 ;
            sh:name "ConnectionPointToEquipmentShape" ;
            sh:path ns1:isConnectionPointOf ],
        [ rdfs:comment "A `ConnectionPoint` must be associated with at most one `Connection` using the relation `connectsThrough`." ;
            sh:class ns1:Connection ;
            sh:maxCount 1 ;
            sh:message "s223: This `ConnectionPoint` must be associated with at most one `Connection`." ;
            sh:name "ConnectionPointToConnectionShape" ;
            sh:path ns1:connectsThrough ;
            sh:severity sh:Info ],
        [ rdfs:comment "A `ConnectionPoint` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
            sh:class ns1:Substance-Medium ;
            sh:maxCount 1 ;
            sh:message "s223: A `ConnectionPoint` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
            sh:minCount 1 ;
            sh:name "ConnectionPoint medium" ;
            sh:path ns1:hasMedium ] ;
    sh:rule [ a sh:TripleRule ;
            rdfs:comment "Infer the `hasElectricalPhase` value from any connected `Conductor`." ;
            sh:object [ sh:path ( ns1:connectsThrough ns1:hasElectricalPhase ) ] ;
            sh:predicate ns1:hasElectricalPhase ;
            sh:subject sh:this ] .


        

Bidirectional Connection Point

URI: http://data.ashrae.org/standard223#BidirectionalConnectionPoint


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#BidirectionalConnectionPoint> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Bidirectional Connection Point" ;
    rdfs:comment "A `BidirectionalConnectionPoint` is a `ConnectionPoint` for which a Medium is expected to flow either into or out of the associated `Connectable`." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:property [ rdfs:comment "If the relation `mapsTo` is present it must associate the `BidirectionalConnectionPoint` with a `BidirectionalConnectionPoint`." ;
            sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:message "s223: If the relation `mapsTo` is present it must associate the `BidirectionalConnectionPoint` with a `BidirectionalConnectionPoint`." ;
            sh:path <http://data.ashrae.org/standard223#mapsTo> ] .


        

Inlet Connection Point

URI: http://data.ashrae.org/standard223#InletConnectionPoint


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#InletConnectionPoint> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Inlet Connection Point" ;
    rdfs:comment "An `InletConnectionPoint` is a `ConnectionPoint` for which a Medium is expected to flow into the associated `Connectable`." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:property [ rdfs:comment "If the relation `mapsTo` is present it must associate the `InletConnectionPoint` with an `InletConnectionPoint`." ;
            sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:message "s223: If the relation `mapsTo` is present it must associate the `InletConnectionPoint` with an `InletConnectionPoint`." ;
            sh:path <http://data.ashrae.org/standard223#mapsTo> ],
        [ rdfs:comment "If the relation `pairedConnectionPoint` is present it must associate the `InletConnectionPoint` with an `OutletConnectionPoint`." ;
            sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:message "s223: If the relation `pairedConnectionPoint` is present it must associate the `InletConnectionPoint` with an `OutletConnectionPoint`." ;
            sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> ],
        [ rdfs:comment "Ensure an `InletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`" ;
            sh:path <http://data.ashrae.org/standard223#mapsTo> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Ensure an `InletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`" ;
                    sh:message "s223: {$this} must have a `mapsTo` an `InletConnectionPoint` of {?parentEquipment} and not an external `Connection` from {?sourceEquipment}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?parentEquipment ?sourceEquipment
WHERE {
?equipment s223:hasConnectionPoint $this .
?parentEquipment s223:contains ?equipment .
$this s223:connectsThrough/s223:connectsFrom ?sourceEquipment .
FILTER NOT EXISTS {?parentEquipment s223:contains ?sourceEquipment} .
FILTER NOT EXISTS {$this s223:mapsTo ?anything} .
}
""" ] ] .


        

Outlet Connection Point

URI: http://data.ashrae.org/standard223#OutletConnectionPoint


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#OutletConnectionPoint> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Outlet Connection Point" ;
    rdfs:comment "An `OutletConnectionPoint` is a `ConnectionPoint` for which a Medium is expected to flow out of the associated `Connectable`." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:property [ rdfs:comment "Ensure an `OutletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`" ;
            sh:path <http://data.ashrae.org/standard223#mapsTo> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Ensure an `OutletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`" ;
                    sh:message "s223: {$this} must have a `mapsTo` an `OutletConnectionPoint` of {?parentEquipment} and not an external `Connection` to {?destinationEquipment}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?parentEquipment ?destinationEquipment
WHERE {
?equipment s223:hasConnectionPoint $this .
?parentEquipment s223:contains ?equipment .
$this s223:connectsThrough/s223:connectsTo ?destinationEquipment .
FILTER NOT EXISTS {?parentEquipment s223:contains ?destinationEquipment} .
FILTER NOT EXISTS {$this s223:mapsTo ?anything} .
}
""" ] ],
        [ rdfs:comment "If the relation `mapsTo` is present it must associate the `OutletConnectionPoint` with an `OutletConnectionPoint`." ;
            sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:message "s223: If the relation `mapsTo` is present it must associate the `OutletConnectionPoint` with an `OutletConnectionPoint`." ;
            sh:path <http://data.ashrae.org/standard223#mapsTo> ],
        [ rdfs:comment "If the relation `pairedConnectionPoint` is present it must associate the `OutletConnectionPoint` with an `InletConnectionPoint`." ;
            sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:message "s223: If the relation `pairedConnectionPoint` is present it must associate the `OutletConnectionPoint` with an `InletConnectionPoint`." ;
            sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> ] .


        

paired connection point

URI: http://data.ashrae.org/standard223#pairedConnectionPoint


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#pairedConnectionPoint> a <http://data.ashrae.org/standard223#SymmetricRelation> ;
    rdfs:label "paired connection point" ;
    rdfs:comment "The `pairedConnectionPoint` relation is a symmetric relation used to associate two connection points where an `InletConnectionPoint` shares the same medium with an `OutletConnectionPoint`." .


        

mapsTo

URI: http://data.ashrae.org/standard223#mapsTo


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#mapsTo> a rdf:Property ;
    rdfs:label "mapsTo" ;
    rdfs:comment "The relation `mapsTo` is used to associate a `ConnectionPoint` of a `Connectable` to a corresponding `ConnectionPoint` of the one containing it (see {pub:equipment-containment}). The associated connection points must have the same direction (see {s223:EnumerationKind-Direction}) and compatiable medium (see {s223:Substance-Medium})." .


        

has Medium

URI: http://data.ashrae.org/standard223#hasMedium


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasMedium> a rdf:Property ;
    rdfs:label "has Medium" ;
    rdfs:comment "The relation `hasMedium` is used to indicate what medium is flowing through the connection (e.g., air, water, electricity). The possible values are defined in `Substance-Medium` (see {s223:Substance-Medium})." .


        

Connection

URI: http://data.ashrae.org/standard223#Connection


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Connection> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Connection" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Pipe> <http://data.ashrae.org/standard223#Duct> <http://data.ashrae.org/standard223#Conductor> ) ;
    rdfs:comment """A `Connection` is the modeling construct used to represent the thing (e.g., pipe, duct, conductor, or free space) that is used to convey 
some Medium (e.g., water, air, electricity, light, wi-fi) between two connectable things. All connections have two or more connection points bound 
to either `Equipment` (see {s223:Equipment}), `DomainSpace` (see {s223:DomainSpace}), or `Junction` (see {s223:Junction}) See Figure 6-2. If the direction 
of flow is constrained, that constraint is indicated by using one or more `InletConnectionPoint`s (see {s223:InletConnectionPoint}) to represent the 
inflow points and `OutletConnectionPoint`s (see {s223:OutletConnectionPoint}) to represent the outflow points.
  
A `Connection` may contain branches or intersections. These may be modeled using `Junction`s if it is necessary to identify a specific intersection. 
(see {s223:Junction}).

The constraint to maintain compatible mediums among a `Connection` and all of its associated `ConnectionPoint`s gives rise to multiple
validation test cases, where the specified medium might be a pure medium, or a mixture with constituents. See {s223:Substance-Medium} for
more details.

![Graphical Depiction of Connection.](figures/Figure_5-3_Connection.svg)
""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Concept> ;
    sh:property [ rdfs:comment "Incompatible Medium. Case 2: A `Connection` with constituents and an associated `ConnectionPoint` with a pure medium." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 2: A `Connection` with constituents and an associated `ConnectionPoint` with a pure medium." ;
                    sh:message "s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m1 .
$this s223:hasMedium ?m2 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case 3: `Connection` with a pure medium and an associated `ConnectionPoint` with constituents." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 3: `Connection` with a pure medium and an associated `ConnectionPoint` with constituents." ;
                    sh:message "s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m2 .
$this s223:hasMedium ?m1 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] ],
        [ rdfs:comment "A `Connection` must only have a `cnx` relation with a `ConnectionPoint`" ;
            sh:path <http://data.ashrae.org/standard223#cnx> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "A `Connection` must only have a `cnx` relation with a `ConnectionPoint`" ;
                    sh:message "s223: {$this} cannot have a s223:cnx relation to {?something}, because {?something} is not a `ConnectionPoint`." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """SELECT $this ?something
WHERE {
$this s223:cnx ?something .
FILTER NOT EXISTS {?something a/rdfs:subClassOf* s223:ConnectionPoint} .
}""" ] ],
        [ rdfs:comment "Incompatible Medium. Case 6: Two `ConnectionPoint`s, one with a medium with constituents and one with a pure medium." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 6: A medium with constituents and a pure medium." ;
                    sh:message "s223: {?cp1} with medium {?m1} is incompatible with {?cp2} with medium {?m2}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m1 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
FILTER (?cp1 != ?cp2 ) .
?cp2 s223:hasMedium ?m2 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] ],
        [ rdfs:comment "A `Connection` must have two or more `connectsAt` relations to connection points" ;
            sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
            sh:message "s223: A `Connection` must have two or more `connectsAt` relations to connection points" ;
            sh:minCount 2 ;
            sh:path <http://data.ashrae.org/standard223#connectsAt> ;
            sh:severity sh:Warning ],
        [ rdfs:comment "Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents." ;
                    sh:message "s223: {?cp1} with medium {?m2} is incompatible with {?cp2} with medium {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m2 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
FILTER (?cp1 != ?cp2 ) .
?cp2 s223:hasMedium ?m1 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case 1: A `Connection` with a pure medium and an associated `ConnectionPoint` with a pure medium." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 1: Two pure mediums." ;
                    sh:message "s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m1 .
$this s223:hasMedium ?m2 .
FILTER (?m1 != ?m2 ) .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] ],
        [ rdfs:comment "If the relation `connectsFrom` is present it must associate the `Connection` with a `Connectable`." ;
            sh:class <http://data.ashrae.org/standard223#Connectable> ;
            sh:message "s223: If the relation `connectsFrom` is present it must associate the `Connection` with a `Connectable`." ;
            sh:name "ConnectionToUpstreamConnectableShape" ;
            sh:path <http://data.ashrae.org/standard223#connectsFrom> ],
        [ rdfs:comment "A `Connection` must have two or more `cnx` relations to connection points" ;
            sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
            sh:message "s223: A `Connection` must have two or more `cnx` relations to connection points" ;
            sh:path <http://data.ashrae.org/standard223#cnx> ],
        [ rdfs:comment "Incompatible Medium. Case 5: Two `ConnectionPoint`s with pure mediums." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 5: Two `ConnectionPoint`s with pure mediums." ;
                    sh:message "s223: {?cp1} with medium {?m1} is incompatible with {?cp2} with medium {?m2}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m1 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp2 s223:hasMedium ?m2 .
FILTER (?m1 != ?m2 ) .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] ],
        [ rdfs:comment "A `Connection` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
            sh:class <http://data.ashrae.org/standard223#Substance-Medium> ;
            sh:maxCount 1 ;
            sh:message "s223: A `Connection` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
            sh:minCount 1 ;
            sh:name "Connection medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ],
        [ rdfs:comment "Incompatible Medium. Case 4: A `Connection` with constituents and an associated `ConnectionPoint` with constituents." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 4: A `Connection` with constituents and an associated `ConnectionPoint` with constituents." ;
                    sh:message "s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m2 .
$this s223:hasMedium ?m1 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] ],
        [ rdfs:comment "If the relation `hasThermodynamicPhase` is present it must associate the `Connection` with at most one `EnumerationKind-ThermodynamicPhase`." ;
            sh:class <http://data.ashrae.org/standard223#EnumerationKind-ThermodynamicPhase> ;
            sh:maxCount 1 ;
            sh:message "s223: If the relation `hasThermodynamicPhase` is present it must associate the `Connection` with at most one `EnumerationKind-ThermodynamicPhase`." ;
            sh:path <http://data.ashrae.org/standard223#hasThermodynamicPhase> ],
        [ rdfs:comment "If the relation `connectsTo` is present it must associate the `Connection` with a `Connectable`." ;
            sh:class <http://data.ashrae.org/standard223#Connectable> ;
            sh:message "s223: If the relation `connectsTo` is present it must associate the `Connection` with a `Connectable`." ;
            sh:name "ConnectionToDownstreamConnectableShape" ;
            sh:path <http://data.ashrae.org/standard223#connectsTo> ],
        [ rdfs:comment "If the relation `hasRole` is present it must associate the `Connection` with an `EnumerationKind-Role`." ;
            sh:class <http://data.ashrae.org/standard223#EnumerationKind-Role> ;
            sh:message "s223: If the relation `hasRole` is present it must associate the `Connection` with an `EnumerationKind-Role`." ;
            sh:path <http://data.ashrae.org/standard223#hasRole> ] ;
    sh:rule [ a sh:SPARQLRule ;
            rdfs:comment "Infer the `connectsFrom` relation using `connectsAt`" ;
            sh:construct """
CONSTRUCT {$this s223:connectsFrom ?equipment .}
WHERE {
$this s223:connectsAt ?cp .
?cp a s223:OutletConnectionPoint .
?cp s223:isConnectionPointOf ?equipment .
}
""" ;
            sh:name "InferredConnectionToUpstreamEquipmentProperty" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> ],
        [ a sh:SPARQLRule ;
            rdfs:comment "Infer the `connectsTo` relation using `connectsAt`" ;
            sh:construct """
CONSTRUCT {$this s223:connectsTo ?equipment .}
WHERE {
$this s223:connectsAt ?cp .
?cp a s223:InletConnectionPoint .
?cp s223:isConnectionPointOf ?equipment .
}
""" ;
            sh:name "InferredConnectionToDownstreamEquipmentProperty" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> ],
        [ a sh:TripleRule ;
            rdfs:comment "Infer `cnx` relation using `connectsThrough`" ;
            sh:object [ sh:path [ sh:inversePath <http://data.ashrae.org/standard223#connectsThrough> ] ] ;
            sh:predicate <http://data.ashrae.org/standard223#cnx> ;
            sh:subject sh:this ],
        [ a sh:TripleRule ;
            rdfs:comment "Infer the `connectsAt` relation using `cnx`" ;
            sh:object [ sh:path <http://data.ashrae.org/standard223#cnx> ] ;
            sh:predicate <http://data.ashrae.org/standard223#connectsAt> ;
            sh:subject sh:this ],
        [ a sh:TripleRule ;
            rdfs:comment "Infer `cnx` relation using `connectsAt`" ;
            sh:object [ sh:path <http://data.ashrae.org/standard223#connectsAt> ] ;
            sh:predicate <http://data.ashrae.org/standard223#cnx> ;
            sh:subject sh:this ] .


        

Pipe

URI: http://data.ashrae.org/standard223#Pipe


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Pipe> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Pipe" ;
    rdfs:comment "A `Pipe` is a subclass of `Connection` that is used primarily to transport liquids and gases such as water, sewage, natural gas, and compressed air." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Connection> .


        

Duct

URI: http://data.ashrae.org/standard223#Duct


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Duct> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Duct" ;
    rdfs:comment "A `Duct` is a subclass of `Connection` that is used to transport air such as supply, return, and exhaust in HVAC (Heating, Ventilation, and Air Conditioning) systems." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Connection> .


        

Conductor

URI: http://data.ashrae.org/standard223#Conductor


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Conductor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Conductor" ;
    rdfs:comment """A `Conductor` is a subclass of `Connection`. It is an abstraction that represents one or more wires used to convey electricity, 
  with the electricity conceptualized as flowing through a `Conductor` like water through a pipe. Each instance of `Conductor` applies to no more than one circuit.""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Connection> ;
    sh:property [ rdfs:comment "Ensure the electrical phase is the same as all connected `ConnectionPoint`s" ;
            sh:path <http://data.ashrae.org/standard223#hasElectricalPhase> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Ensure the electrical phase is the same as all connected `ConnectionPoint`s" ;
                    sh:message "s223: {$this} has an electrical phase of {?myphase} which is different from {?cpPhase} for `ConnectionPoint` {?cp}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
    SELECT $this ?myphase ?cp ?cpPhase
    WHERE {
        $this s223:hasElectricalPhase ?myphase .
        $this s223:connectsAt ?cp .
        ?cp s223:hasElectricalPhase ?cpPhase .
        FILTER (?myphase != ?cpPhase) .
        }
        """ ] ],
        [ rdfs:comment "If the relation `hasElectricalPhase` is present it must associate the `Conductor` with a single ElectricalPhaseIdentifier or ElectricalVoltagePhases value." ;
            sh:maxCount 1 ;
            sh:message "s223: If the relation `hasElectricalPhase` is present it must associate the `Conductor` with a single ElectricalPhaseIdentifier or ElectricalVoltagePhases value." ;
            sh:or ( [ sh:class <http://data.ashrae.org/standard223#EnumerationKind-ElectricalPhaseIdentifier> ] [ sh:class <http://data.ashrae.org/standard223#EnumerationKind-ElectricalVoltagePhases> ] ) ;
            sh:path <http://data.ashrae.org/standard223#hasElectricalPhase> ],
        [ rdfs:comment "A `Conductor` must be associated with exactly one `Constituent-Electricity` using the relation `hasMedium`." ;
            sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
            sh:maxCount 1 ;
            sh:message "s223: A `Conductor` must be associated with exactly one `Constituent-Electricity` using the relation `hasMedium`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ;
    sh:rule [ a sh:TripleRule ;
            rdfs:comment "Infer the `hasElectricalPhase` value from any connected `ConnectionPoint`s." ;
            sh:object [ sh:path ( <http://data.ashrae.org/standard223#cnx> <http://data.ashrae.org/standard223#hasElectricalPhase> ) ] ;
            sh:predicate <http://data.ashrae.org/standard223#hasElectricalPhase> ;
            sh:subject sh:this ] .


        

Junction

URI: http://data.ashrae.org/standard223#Junction


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Junction> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Junction" ;
    rdfs:comment """A `Junction` is a modeling construct used when a branching point within a `Connection` (see {s223:Connection}) is of significance, 
such as specifying the observation location of a `Sensor`, or when a modeler wants to expose a branch point within a containing piece of `Equipment`. 
When a `Junction` is used, what might have been modeled as a single, branched `Connection` 
is separated into three or more separate connections, all tied together with the `Junction` and its associated connection points. 

`Junction` is a subClassOf `Connectable`, which gives it the ability to have connection points, but unlike Equipment (and like Connection) 
it is not allowed to change the Medium that passes through it. This is why `Junction` is a sibling class to `Equipment` and not a subclass.
This constraint to maintain compatible mediums among a `Junction` and all of its associated `ConnectionPoint`s gives rise to multiple
validation test cases, where the specified medium might be a pure medium, or a mixture with constituents. See {s223:Substance-Medium} for
more details.
""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Connectable> ;
    sh:property [ rdfs:comment "Incompatible Medium. Case 2: A `Junction` with constituents and an associated `ConnectionPoint` with a pure medium." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 2: A `Junction` with constituents and an associated `ConnectionPoint` with a pure medium." ;
                    sh:message "s223: `Junction` {$this} with Medium {?m2} is incompatible with {?cp} with Medium {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m1 .
$this s223:hasMedium ?m2 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case5: Two `ConnectionPoint`s with pure mediums." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 5: Two `ConnectionPoint`s with pure mediums." ;
                    sh:message "s223: {?cp1} with Medium {?m1} is incompatible with {?cp2} with Medium {?m2}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m1 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
FILTER (?cp1 != ?cp2 ) .
?cp2 s223:hasMedium ?m2 .
FILTER (?m1 != ?m2 ) .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case 6: Two `ConnectionPoint`s, one with a medium with constituents and one a pure medium." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 6: Two `ConnectionPoint`s with a medium with constituents and a pure medium." ;
                    sh:message "s223: {?cp1} with Medium {?m1} is incompatible with {?cp2} with Medium {?m2}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m1 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp2 s223:hasMedium ?m2 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents." ;
                    sh:message "s223: {?cp1} with Medium {?m1} is incompatible with {?cp2} with Medium {?m2}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m1 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp2 s223:hasMedium ?m2 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] ],
        [ rdfs:comment "A `Junction` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
            sh:class <http://data.ashrae.org/standard223#Substance-Medium> ;
            sh:maxCount 1 ;
            sh:message "s223: A `Junction` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ],
        [ rdfs:comment "Incompatible Medium. Case 3: `Junction` with a pure medium and an associated `ConnectionPoint` with constituents" ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 3: `Junction` with a pure medium and an associated `ConnectionPoint` with constituents." ;
                    sh:message "s223: `Junction` {$this} with Medium {?m1} is incompatible with {?cp} with Medium {?m2}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m2 .
$this s223:hasMedium ?m1 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case4: `Junction` with constituents and an associated `ConnectionPoint` with constituents." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 4: `Junction` with constituents and an associated `ConnectionPoint` with constituents." ;
                    sh:message "s223: `Junction` {$this} with Medium {?m2} is incompatible with {?cp} with Medium {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m1 .
$this s223:hasMedium ?m2 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case1: A `Junction` with a pure medium and an associated `ConnectionPoint` with a pure medium." ;
            sh:name "Test for compatible declared Medium" ;
            sh:path <http://data.ashrae.org/standard223#hasMedium> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 1: Two pure mediums." ;
                    sh:message "s223: `Junction` {$this} with Medium {?m2} is incompatible with {?cp} with Medium {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m1 .
$this s223:hasMedium ?m2 .
FILTER (?m1 != ?m2 ) .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] ] .


        

ns4:connectedness

URI: pub:connectedness


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:connectedness> ns1:subclauses ( <http://data.ashrae.org/standard223#connected> <http://data.ashrae.org/standard223#connectedTo> <http://data.ashrae.org/standard223#connectedFrom> <http://data.ashrae.org/standard223#connectedThrough> <http://data.ashrae.org/standard223#connectsTo> <http://data.ashrae.org/standard223#connectsFrom> <http://data.ashrae.org/standard223#connectsThrough> <http://data.ashrae.org/standard223#connectsAt> <http://data.ashrae.org/standard223#hasConnectionPoint> <http://data.ashrae.org/standard223#isConnectionPointOf> <http://data.ashrae.org/standard223#cnx> ) ;
    ns1:title "Relations Describing Connectedness" ;
    rdfs:comment """The collection of relations defined for `Connectable`, `ConnectionPoint`, and `Connection` is intended to facilitate model queries that answer questions about how equipment is connected and to what it is connected. These relations are shown in Figure 6-3.

![Connection Relations.](figures/Figure_6-1_Connection_Relationships.svg)

It is not necessary for a model developer to create each of these relations individually. A model can be created using a simpler construct shown in Figure 6-4 using the `cnx` relation. Inference rules can then be applied to generate the complete set shown in Figure 6-3. The intent is to simplify model development without losing the connectedness relationships that facilitate model queries.

![CNX Relations.](figures/Figure_6-2_CNX_Relationships.svg)
""" .


        

connected

URI: http://data.ashrae.org/standard223#connected


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#connected> a <http://data.ashrae.org/standard223#SymmetricRelation>,
        rdf:Property ;
    rdfs:label "connected" ;
    rdfs:comment "The relation `connected` indicates that two connectable things are `connected` without regard to any directionality of a process flow.  " .


        

connected to

URI: http://data.ashrae.org/standard223#connectedTo


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:connectedTo a rdf:Property ;
    rdfs:label "connected to" ;
    ns1:inverseOf ns1:connectedFrom ;
    rdfs:comment "The relation `connectedTo` indicates that connectable things are `connected` with a specific flow direction. A is `connectedTo` B, means a directionality beginning at A and ending at B.  The inverse direction is indicated by `connectedFrom` (see {s223:connectedFrom})." ;
    rdfs:domain ns1:Equipment .


        

connected from

URI: http://data.ashrae.org/standard223#connectedFrom


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:connectedFrom a rdf:Property ;
    rdfs:label "connected from" ;
    ns1:inverseOf ns1:connectedTo ;
    rdfs:comment "The relation `connectedFrom` indicates that connectable things are `connected` with a specific flow direction. B is `connectedFrom` A, means a directionality beginning at A and ending at B.  The inverse direction is indicated by `connectedTo` (see {s223:connectedTo})." ;
    rdfs:domain ns1:Equipment .


        

connected through

URI: http://data.ashrae.org/standard223#connectedThrough


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#connectedThrough> a rdf:Property ;
    rdfs:label "connected through" ;
    rdfs:comment "The relation `connectedThrough` is used to associate a `Connectable` thing with a `Connection` without regard to the direction of flow. It is used to discover what connection links two connectable things." .


        

connects to

URI: http://data.ashrae.org/standard223#connectsTo


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#connectsTo> a rdf:Property ;
    rdfs:label "connects to" ;
    rdfs:comment "The relation `connectsTo` binds a `Connection` to a `Connectable` thing with an implied directionality. A `connectsTo` B indicates a flow from A to B." .


        

connects from

URI: http://data.ashrae.org/standard223#connectsFrom


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#connectsFrom> a rdf:Property ;
    rdfs:label "connects from" ;
    rdfs:comment "The relation `connectsFrom` binds a `Connectable` thing to a `Connection` with an implied directionality. B `connectsFrom` A indicates a flow from A to B." .


        

connects through

URI: http://data.ashrae.org/standard223#connectsThrough


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:connectsThrough a rdf:Property ;
    rdfs:label "connects through" ;
    ns1:inverseOf ns1:connectsAt ;
    rdfs:comment "The relation `connectsThrough` binds a `ConnectionPoint` to a `Connection` without regard to the direction of flow." .


        

connects at

URI: http://data.ashrae.org/standard223#connectsAt


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:connectsAt a rdf:Property ;
    rdfs:label "connects at" ;
    ns1:inverseOf ns1:connectsThrough ;
    rdfs:comment "The relation `connectsAt` binds a `Connection` to a specific `ConnectionPoint`." .


        

has connection point

URI: http://data.ashrae.org/standard223#hasConnectionPoint


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:hasConnectionPoint a rdf:Property ;
    rdfs:label "has connection point" ;
    ns1:inverseOf ns1:isConnectionPointOf ;
    rdfs:comment "The relation `hasConnectionPoint` is part of a pair of relations that bind a `Connectable` thing to a `ConnectionPoint`. It is the inverse of the relation `isConnectionPointOf` (see {s223:isConnectionPointOf})." .


        

is connection point of

URI: http://data.ashrae.org/standard223#isConnectionPointOf


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:isConnectionPointOf a rdf:Property ;
    rdfs:label "is connection point of" ;
    ns1:inverseOf ns1:hasConnectionPoint ;
    rdfs:comment "The relation `isConnectionPointOf` is part of a pair of relations that bind a `ConnectionPoint` to a `Connectable` thing. It is the inverse of the relation `hasConnectionPoint` (see {s223:hasConnectionPoint})." .


        

cnx

URI: http://data.ashrae.org/standard223#cnx


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#cnx> a <http://data.ashrae.org/standard223#SymmetricRelation> ;
    rdfs:label "cnx" ;
    rdfs:comment "The `cnx` relation is a symmetric relation used to associate adjacent entities in a connection path (comprised of Equipment-ConnectionPoint-Connection-ConnectionPoint-Equipment sequences)." .


        

ns4:system

URI: pub:system


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:system> ns1:subclauses ( <http://data.ashrae.org/standard223#System> <http://data.ashrae.org/standard223#hasMember> <http://data.ashrae.org/standard223#hasBoundaryConnectionPoint> <http://data.ashrae.org/standard223#hasOptionalConnectionPoint> ) ;
    ns1:title "SYSTEM" ;
    rdfs:comment """A `System` is a logical grouping of one or more pieces of `Equipment` or other Systems defined by the modeler for some functional purpose. Examples of possible systems are an air distribution system, or a hot water system. Systems can be associated with other Systems or `Equipment` using the relation `hasMember` (see {s223:hasMember}) A `System` may be associated with an `EnumerationKind-Role` (see {s223:EnumerationKind-Role}).
""" .


        

System

URI: http://data.ashrae.org/standard223#System


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#System> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "System" ;
    rdfs:comment "A `System` is a logical grouping of one or more `Equipment`  or other Systems for some functional purpose." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Concept> ;
    sh:property [ rdfs:comment "A `System` may be defined with a number of connection points that are the \"boundary\" of the equipment. The `hasOptionalConnectionPoint` relation is used to reference those connection points of its equipment that may not be `connected`, the \"dangling connection point\" should not generate a validation error." ;
            sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
            sh:message "s223: A `System` may be defined with a number of connection points that are the \"boundary\" of the equipment. The `hasOptionalConnectionPoint` relation is used to reference those connection points of its equipment that may not be connected, the \"dangling connection point\" should not generate a validation error." ;
            sh:path <http://data.ashrae.org/standard223#hasOptionalConnectionPoint> ],
        [ rdfs:comment "A `System` may be defined with a number of connection points that are the \"boundary\" of the equipment. The `hasBoundaryConnectionPoint` relation is used to reference those connection points of its equipment that must be `connected`, but in the context of validating the a model with the system by itself, the \"dangling connection point\" should not generate a validation error." ;
            sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
            sh:message "s223: A `System` may be defined with a number of connection points that are the \"boundary\" of the equipment. The `hasBoundaryConnectionPoint` relation is used to reference those connection points of its equipment that must be `connected`, but in the context of validating the a model with the system by itself, the \"dangling connection point\" should not generate a validation error." ;
            sh:path <http://data.ashrae.org/standard223#hasBoundaryConnectionPoint> ],
        [ rdfs:comment "If the relation `hasRole` is present, it must associate the `System` with an `EnumerationKind-Role`." ;
            sh:class <http://data.ashrae.org/standard223#EnumerationKind-Role> ;
            sh:message "s223: If the relation `hasRole` is present, it must associate the `System` with an `EnumerationKind-Role`." ;
            sh:path <http://data.ashrae.org/standard223#hasRole> ],
        [ a sh:PropertyShape ;
            rdfs:comment "A `System` should be associated with at least one instance of `Equipment` or `System` using the relation `hasMember`." ;
            sh:message "s223: A `System` must be associated with at least one instance of `Equipment` or `System` using the relation `hasMember`." ;
            sh:minCount 1 ;
            sh:or ( [ sh:class <http://data.ashrae.org/standard223#Equipment> ] [ sh:class <http://data.ashrae.org/standard223#System> ] ) ;
            sh:path <http://data.ashrae.org/standard223#hasMember> ;
            sh:severity sh:Warning ] ;
    sh:rule [ a sh:TripleRule ;
            rdfs:comment "Infer the `hasBoundaryConnectionPoint` relation using `hasOptionalConnectionPoint`." ;
            sh:name "InferredSystemToBoundaryConnectionPointFromOptional" ;
            sh:object [ sh:path <http://data.ashrae.org/standard223#hasOptionalConnectionPoint> ] ;
            sh:predicate <http://data.ashrae.org/standard223#hasBoundaryConnectionPoint> ;
            sh:subject sh:this ] ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Ensure that the Boundary CPs of a `System` belong to only members of that `System`" ;
            sh:message "s223: `System` {$this} `hasBoundaryConnectionPoint` {?cp}, belonging to {?con} that is not a member of {?this}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?cp ?con
WHERE {
$this s223:hasBoundaryConnectionPoint ?cp .
?cp s223:isConnectionPointOf ?con .
FILTER NOT EXISTS {$this s223:hasMember+ ?con}
}
""" ] .


        

has member

URI: http://data.ashrae.org/standard223#hasMember


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasMember> a rdf:Property ;
    rdfs:label "has member" ;
    rdfs:comment "The relation `hasMember` is used to associate a `System` with its component `Equipment` and/or Systems." .


        

has Boundary Connection Point

URI: http://data.ashrae.org/standard223#hasBoundaryConnectionPoint


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasBoundaryConnectionPoint> a rdf:Property ;
    rdfs:label "has Boundary Connection Point" ;
    rdfs:comment "The `hasBoundaryConnectionPoint` relation means the `ConnectionPoint` represents the boundary of a `System` (see {s223:System}) defined by the modeler, such as a model fragment provided by the vendor of a collection of equipment intended for integration with another model. The presence of this relation is used to indicate that such a \"dangling connection point\" should not generate a validation error in a non-integrated context but should generate an error in a integrated context." .


        

has Optional Connection Point

URI: http://data.ashrae.org/standard223#hasOptionalConnectionPoint


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasOptionalConnectionPoint> a rdf:Property ;
    rdfs:label "has Optional Connection Point" ;
    rdfs:comment "The `hasOptionalConnectionPoint` relation means the `ConnectionPoint` represents the boundary of a `System` (see {s223:System}) defined by the modeler, such as a model fragment provided by the vendor of a collection of equipment intended for integration with another model. The presence of this relation is used to indicate that such a \"dangling connection point\" should not generate a validation error in an integrated or non-integrated context." .


        

ns4:space

URI: pub:space


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:space> ns1:subclauses ( <pub:physical-space> <pub:domain-space> ) ;
    ns1:title "SPACE" ;
    rdfs:comment """
There are two types of spaces. `PhysicalSpace`s represent the building from the architectural and occupant perspective. A `PhysicalSpace` may represent a room (e.g., an office or conference room), a part of a room (e.g., a foyer), a collection of rooms (e.g., a floor or the entire building), or any other physical region in a building (e.g., a patio or a roof), or a whole campus.

A `DomainSpace` is a subclass of `Connectable` (see {s223:Connectable}) that represents some portion of a `PhysicalSpace` that is affected by a building service associated with a particular domain (e.g., HVAC, lighting, see {s223:EnumerationKind-Domain}). `DomainSpace`s can be viewed as the endpoints of building services.

`DomainSpace`s can represent an entire `PhysicalSpace` or a portion of a `PhysicalSpace`, and thus `PhysicalSpace`s enclose `DomainSpace`s. An instance of a `PhysicalSpace` may enclose `DomainSpace`s from different domains, and may also enclose multiple `DomainSpace`s of the same domain. For example, a `PhysicalSpace` may represent an office that encloses a single HVAC `DomainSpace` and multiple lighting `DomainSpace`s. This would indicate a single HVAC service is provided to the office, along with multiple lighting services (e.g., one that provides lighting to the area of the office that receives daylight, and another that provides lighting to the area of the office that does not receive daylight). Multiple `DomainSpace`s of the same domain may overlap. For example, a `DomainSpace` affected by lighting devices that provide general lighting service to a room may overlap with the  `DomainSpace` affected by the lighting devices that provide emergency lighting service to a room. 
     """ .


        

ns4:physical-space

URI: pub:physical-space


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<pub:physical-space> ns1:subclauses ( <http://data.ashrae.org/standard223#PhysicalSpace> <http://data.ashrae.org/standard223#contains> <http://data.ashrae.org/standard223#encloses> <http://data.ashrae.org/standard223#OutdoorPhysicalSpace> ) ;
    ns1:title "Physical Space" .


        

Physical Space

URI: http://data.ashrae.org/standard223#PhysicalSpace


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#PhysicalSpace> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Physical Space" ;
    rdfs:comment "A `PhysicalSpace` is an architectural concept representing a room, a part of a room, a collection of rooms, or any other physical region in a building. PhysicalSpaces may be grouped to define larger PhysicalSpaces using the relation `contains` (see {s223:contains})." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Concept> ;
    sh:property [ rdfs:comment "If the relation `encloses` is present it must associate the `PhysicalSpace` with a `DomainSpace`." ;
            sh:class <http://data.ashrae.org/standard223#DomainSpace> ;
            sh:message "s223: If the relation `encloses` is present it must associate the `PhysicalSpace` with a `DomainSpace`." ;
            sh:path <http://data.ashrae.org/standard223#encloses> ],
        [ rdfs:comment "If the relation `contains` is present it must associate the `PhysicalSpace` with a `PhysicalSpace`." ;
            sh:class <http://data.ashrae.org/standard223#PhysicalSpace> ;
            sh:message "s223: If the relation `contains` is present it must associate the `PhysicalSpace` with a `PhysicalSpace`." ;
            sh:path <http://data.ashrae.org/standard223#contains> ] .


        

encloses

URI: http://data.ashrae.org/standard223#encloses


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#encloses> a rdf:Property ;
    rdfs:label "encloses" ;
    rdfs:comment "The relation `encloses` is used to associate a `PhysicalSpace` with its DomainSpaces. " .


        

Outdoor physical space

URI: http://data.ashrae.org/standard223#OutdoorPhysicalSpace


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#OutdoorPhysicalSpace> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Outdoor physical space" ;
    rdfs:comment "An `OutdoorPhysicalSpace` is a subclass of `PhysicalSpace` to represent any physical spaces outside of a facility where, for example, ambient properties might be measured (within a suitably defined `DomainSpace`)." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#PhysicalSpace> .


        

ns4:domain-space

URI: pub:domain-space


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<pub:domain-space> ns1:subclauses ( <http://data.ashrae.org/standard223#DomainSpace> <http://data.ashrae.org/standard223#hasDomain> ) ;
    ns1:title "Domain Space" .


        

Domain Space

URI: http://data.ashrae.org/standard223#DomainSpace


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#DomainSpace> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Domain Space" ;
    rdfs:comment "A `DomainSpace` represents some portion of a `PhysicalSpace` that is affected by a building service associated with a Domain. DomainSpaces may represent an entire `PhysicalSpace` or any portion of a `PhysicalSpace`. Multiple DomainSpaces of the same Domain may overlap, and DomainSpaces of different Domains may also overlap. DomainSpaces may be grouped into Zones using the relation `hasDomainSpace` (see {s223:hasDomainSpace})." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Connectable> ;
    sh:property [ rdfs:comment "A `DomainSpace` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
            sh:class <http://data.ashrae.org/standard223#EnumerationKind-Domain> ;
            sh:maxCount 1 ;
            sh:message "s223: A `DomainSpace` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasDomain> ],
        [ rdfs:comment "A `DomainSpace` must be enclosed by a `PhysicalSpace`." ;
            sh:message "s223: A `DomainSpace` must be enclosed by a `PhysicalSpace`." ;
            sh:minCount 1 ;
            sh:path [ sh:inversePath <http://data.ashrae.org/standard223#encloses> ] ;
            sh:severity sh:Info ] ;
    sh:rule [ a sh:TripleRule ;
            rdfs:comment "Infer a `hasDomain` relation by checking any enclosing `Zone` to determine the domain." ;
            sh:object [ sh:path ( [ sh:inversePath <http://data.ashrae.org/standard223#hasDomainSpace> ] <http://data.ashrae.org/standard223#hasDomain> ) ] ;
            sh:predicate <http://data.ashrae.org/standard223#hasDomain> ;
            sh:subject sh:this ] .


        

has domain

URI: http://data.ashrae.org/standard223#hasDomain


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasDomain> a rdf:Property ;
    rdfs:label "has domain" ;
    rdfs:comment """The relation `hasDomain` is used to associate a `Zone` or `DomainSpace` with an `EnumerationKind-Domain` (e.g., `Domain-HVAC`, `Domain-Lighting`).
""" .


        

ns4:zone

URI: pub:zone


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:zone> ns1:subclauses ( <http://data.ashrae.org/standard223#Zone> <http://data.ashrae.org/standard223#hasDomainSpace> <http://data.ashrae.org/standard223#ZoneGroup> <http://data.ashrae.org/standard223#hasZone> ) ;
    ns1:title "ZONE" ;
    rdfs:comment """
    A `Zone` is a logical grouping of one or more `DomainSpace`s of a specific domain for some building service or control-related purpose. Multiple Zones of the same domain may overlap. For example, a `Zone` that defines `DomainSpace`s that are subject to an occupancy-control strategy may overlap with a `Zone` that defines `DomainSpace`s that are subject to a supervisory scheduled-control strategy.""" .


        

Zone

URI: http://data.ashrae.org/standard223#Zone


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Zone> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Zone" ;
    rdfs:comment "A `Zone` is a logical grouping of one or more DomainSpaces for a specific domain for some building service or control-related purpose. Zones may be grouped into ZoneGroups (see {s223:ZoneGroup})." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Concept> ;
    sh:property [ rdfs:comment "A `Zone` must be associated with at least one `DomainSpace` using the relation `hasDomainSpace`." ;
            sh:class <http://data.ashrae.org/standard223#DomainSpace> ;
            sh:message "s223: A `Zone` must be associated with at least one `DomainSpace` using the relation `hasDomainSpace`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasDomainSpace> ],
        [ rdfs:comment "A `Zone` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
            sh:class <http://data.ashrae.org/standard223#EnumerationKind-Domain> ;
            sh:maxCount 1 ;
            sh:message "s223: A `Zone` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasDomain> ],
        [ rdfs:comment "The associated Domain of a `Zone` and the Domain of the DomainSpaces it `contains` must be the same." ;
            sh:path <http://data.ashrae.org/standard223#hasDomain> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "The associated Domain of a `Zone` and the Domain of the DomainSpaces it contains must be the same." ;
                    sh:message "s223: `Zone` {$this} has a Domain of {?domain}, but it contains a `DomainSpace` {?ds} which has a Domain of {?dsdomain}. These should be the same." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT DISTINCT $this ?domain ?ds ?dsdomain
WHERE {
$this a s223:Zone .
$this s223:hasDomain ?domain .
$this s223:contains ?ds .
?ds s223:hasDomain ?dsdomain .
FILTER (?domain != ?dsdomain)
}
""" ] ] ;
    sh:rule [ a sh:TripleRule ;
            rdfs:comment "Infer a `hasDomain` relation by checking any enclosed DomainSpaces to determine the domain." ;
            sh:object [ sh:path ( <http://data.ashrae.org/standard223#hasDomainSpace> <http://data.ashrae.org/standard223#hasDomain> ) ] ;
            sh:predicate <http://data.ashrae.org/standard223#hasDomain> ;
            sh:subject sh:this ],
        [ a sh:TripleRule ;
            rdfs:comment "Infer a `hasDomain` relation by checking any enclosing `ZoneGroup` to determine the domain." ;
            sh:object [ sh:path ( [ sh:inversePath <http://data.ashrae.org/standard223#hasZone> ] <http://data.ashrae.org/standard223#hasDomain> ) ] ;
            sh:predicate <http://data.ashrae.org/standard223#hasDomain> ;
            sh:subject sh:this ] .


        

has domain space

URI: http://data.ashrae.org/standard223#hasDomainSpace


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasDomainSpace> a rdf:Property ;
    rdfs:label "has domain space" ;
    rdfs:comment "The relation `hasDomainSpace` is used to associate a `Zone` with its component DomainSpaces." .


        

Zone group

URI: http://data.ashrae.org/standard223#ZoneGroup


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ZoneGroup> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Zone group" ;
    rdfs:comment "A `ZoneGroup` is a logical grouping of one or more Zones (e.g., to define a supervisory building control strategy that overrides one or more system controls)." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Concept> ;
    sh:property [ rdfs:comment "A `ZoneGroup` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
            sh:class <http://data.ashrae.org/standard223#EnumerationKind-Domain> ;
            sh:maxCount 1 ;
            sh:message "s223: A `ZoneGroup` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasDomain> ],
        [ rdfs:comment "A `ZoneGroup` must be associated with at least one `Zone` using the relation `hasZone`." ;
            sh:class <http://data.ashrae.org/standard223#Zone> ;
            sh:message "s223: A `ZoneGroup` must be associated with at least one `Zone` using the relation `hasZone`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasZone> ] ;
    sh:rule [ a sh:TripleRule ;
            rdfs:comment "Infer a `hasDomain` relation by checking any enclosed Zones to determine the domain." ;
            sh:object [ sh:path ( <http://data.ashrae.org/standard223#hasZone> <http://data.ashrae.org/standard223#hasDomain> ) ] ;
            sh:predicate <http://data.ashrae.org/standard223#hasDomain> ;
            sh:subject sh:this ] .


        

has zone

URI: http://data.ashrae.org/standard223#hasZone


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasZone> a rdf:Property ;
    rdfs:label "has zone" ;
    rdfs:comment "The relation `hasZone` is used to associate a `ZoneGroup` with its component Zones." .


        

ns4:enumerations

URI: pub:enumerations


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:enumerations> ns1:subclauses ( <http://data.ashrae.org/standard223#EnumerationKind> <http://data.ashrae.org/standard223#EnumerationKind-Aspect> <http://data.ashrae.org/standard223#EnumerationKind-Binary> <http://data.ashrae.org/standard223#EnumerationKind-DayOfWeek> <http://data.ashrae.org/standard223#EnumerationKind-Direction> <http://data.ashrae.org/standard223#EnumerationKind-Domain> <http://data.ashrae.org/standard223#EnumerationKind-ElectricalPhaseIdentifier> <http://data.ashrae.org/standard223#EnumerationKind-ElectricalVoltagePhases> <http://data.ashrae.org/standard223#EnumerationKind-Numerical> <http://data.ashrae.org/standard223#EnumerationKind-Occupancy> <http://data.ashrae.org/standard223#EnumerationKind-ThermodynamicPhase> <http://data.ashrae.org/standard223#EnumerationKind-Role> <http://data.ashrae.org/standard223#EnumerationKind-RunStatus> <http://data.ashrae.org/standard223#EnumerationKind-Substance> ) ;
    ns1:title "ENUMERATIONS" ;
    rdfs:comment """Enumerations are sets of closed values (they cannot take on values outside of what is explicitly listed in the definition) and named (each value has a unique name). The values within an enumeration share a "kind," which communicates how the enumerations are intended to be used.

The standard uses enumerations to convey groups of useful values for describing attributes of Properties, `Equipment`, and other things in the model.
    """ .


        

Enumeration kind

URI: http://data.ashrae.org/standard223#EnumerationKind


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind>,
        sh:NodeShape ;
    rdfs:label "Enumeration kind" ;
    rdfs:comment """This is the encapsulating class for all EnumerationKinds. 
  EnumerationKinds define the (closed) set of permissible values for a given purpose. 
  For example, the DayOfWeek `EnumerationKind` enumerates the days of the week and allows no other values.

EnumerationKinds are arranged in a class hierarchy tree, with the root class named `EnumerationKind`. Each subclass is named 
starting with its immediate superclass, followed by a hyphen and a name that is unique among the sibling classes. 
Each class is also an instance of itself. This unusual modeling pattern was used to achieve:

- The ability to set an EnumerationKind value that is more general, or not yet fully specified 
at the time of modeling, such as s223:Electricity-AC without having to state exactly what voltage or frequency it is.

- The ability to use the sh:class SHACL predicate at any level in the EnumerationKind hierarchy 
to constrain a value in the s223 specification, even if it is a more general one such as s223:Electricity-AC in the above example.

Certain validation constraints exist in the standard that evaluate compatibility of EnumerationKinds. 
Two values are deemed compatible if they are the same, if one is a direct ancestor (or descendant) of the other, 
or if they are mixtures sharing at least one constituent.""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Concept> .


        

EnumerationKind Aspect

URI: http://data.ashrae.org/standard223#EnumerationKind-Aspect


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind-Aspect> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-Aspect>,
        sh:NodeShape ;
    rdfs:label "EnumerationKind Aspect" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Aspect-Effectiveness> ) ;
    rdfs:comment """
: Aspect Enumerations

| Enumeration |
|:-----------|
| `Aspect-Alarm` |
| `Aspect-CatalogNumber` |
| `Aspect-Command` |
| `Aspect-Deadband` |
| `Aspect-Delta` |
| `Aspect-DryBulb` |
| `Aspect-Effectiveness` (see {s223:Aspect-Effectiveness}) |
| `Aspect-Efficiency` |
| Aspect-Face |
| `Aspect-Fault` |
| `Aspect-HighLimit` |
| Aspect-Latent |
| `Aspect-Loss` |
| `Aspect-LowLimit` |
| `Aspect-Manufacturer` |
| `Aspect-Maximum` |
| `Aspect-Minimum` |
| `Aspect-Model` |
| `Aspect-Nominal` |
| Aspect-NominalFrequency |
| `Aspect-OperatingMode` |
| Aspect-OperatingStatus |
| Aspect-PhaseAngle |
| Aspect-PowerFactor |
| Aspect-Rated |
| Aspect-Sensible |
| Aspect-SerialNumber |
| Aspect-ServiceFactor |
| Aspect-Setpoint |
| Aspect-Speed |
| Aspect-StandardConditions |
| Aspect-Standby |
| Aspect-StartupValue |
| Aspect-Threshold |
| Aspect-Total |
| Aspect-WetBulb |
| Aspect-Year |
""",
        """This class has enumerated subclasses usually used to specify the context of a s223:Property. The following table lists all of the defined enumerations for Aspect. 
  Some Aspect enumerations have subclasses for more specific use. Those subclasses are not shown in the table but each of them are defined in `s223:EnumerationKind-DayOfWeek` - `s223:EnumerationKind-ElectricalVoltagePhases`. 
  The following table lists all of the defined enumerations for Aspect.""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> .


        

Aspect-Effectiveness

URI: http://data.ashrae.org/standard223#Aspect-Effectiveness


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Aspect-Effectiveness> a <http://data.ashrae.org/standard223#Aspect-Effectiveness>,
        <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Aspect-Effectiveness" ;
    rdfs:comment """
: Effectiveness Enumerations

| Enumeration |
|:-----------|
| `Effectiveness-Active` |
""",
        "This class enumerates the possible states of effectiveness" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Aspect> .


        

EnumerationKind Binary

URI: http://data.ashrae.org/standard223#EnumerationKind-Binary


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind-Binary> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-Binary>,
        sh:NodeShape ;
    rdfs:label "EnumerationKind Binary" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Binary-Logical> <http://data.ashrae.org/standard223#Binary-OnOff> <http://data.ashrae.org/standard223#Binary-Position> ) ;
    rdfs:comment """
: Binary Enumerations

| Enumeration |
|:-----------|
| `Binary-Logical`  |
| `Binary-OnOff`  |
| `Binary-Position`  |
""",
        "This class has enumerated subclasses of binary values" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> .


        

Binary Logical

URI: http://data.ashrae.org/standard223#Binary-Logical


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Binary-Logical> a <http://data.ashrae.org/standard223#Binary-Logical>,
        <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Binary Logical" ;
    rdfs:comment """
: Logical Enumerations

| Enumeration |
|:-----------|
| `Logical-True` |
| `Logical-False` |
""",
        "This class has enumerated subclasses of True and False used to describe the possible values of a logical property" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Binary> .


        

OnOff enumeration

URI: http://data.ashrae.org/standard223#Binary-OnOff


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Binary-OnOff> a <http://data.ashrae.org/standard223#Binary-OnOff>,
        <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "OnOff enumeration" ;
    rdfs:comment """
: On Off Enumerations

| Enumeration |
|:-----------|
| `OnOff-Off` |
| `OnOff-On` |
""",
        "This class has enumerated subclasses of states of either on or off." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Binary> .


        

Position

URI: http://data.ashrae.org/standard223#Binary-Position


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Binary-Position> a <http://data.ashrae.org/standard223#Binary-Position>,
        <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Position" ;
    rdfs:comment """
: Position Enumerations

| Enumeration |
|:-----------|
| `Position-Closed` |
| `Position-Open` |
""",
        "This class has enumerated subclasses of position such as closed or open." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Binary> .


        

Day of Week

URI: http://data.ashrae.org/standard223#EnumerationKind-DayOfWeek


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind-DayOfWeek> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-DayOfWeek>,
        sh:NodeShape ;
    rdfs:label "Day of Week" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#DayOfWeek-Weekday> <http://data.ashrae.org/standard223#DayOfWeek-Weekend> ) ;
    rdfs:comment """
: Day of Week Enumerations

| Enumeration |
|:-----------|
| `DayOfWeek-Weekday` |
| `DayOfWeek-Weekend` |
""",
        "This class has enumerated subclasses of Monday, Tuesday, Wednesday, Thursday, Friday, Saturday and Sunday. The Weekend and Weekday EnumerationKinds define subsets of this `EnumerationKind` for Mon-Fri and Sat,Sun, respectively" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> .


        

Day of week-Weekday

URI: http://data.ashrae.org/standard223#DayOfWeek-Weekday


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#DayOfWeek-Weekday> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#DayOfWeek-Weekday>,
        sh:NodeShape ;
    rdfs:label "Day of week-Weekday",
        "Weekday" ;
    rdfs:comment """
: Weekday Enumerations

| Enumeration |
|:-----------|
| `Weekday-Friday` |
| `Weekday-Monday` |
| `Weekday-Thursday` |
| `Weekday-Tuesday` |
| `Weekday-Wednesday` |
""",
        "This class defines the `EnumerationKind` values of Monday, Tuesday, Wednesday, Thursday, and Friday" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-DayOfWeek> .


        

Day of week-Weekend

URI: http://data.ashrae.org/standard223#DayOfWeek-Weekend


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#DayOfWeek-Weekend> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#DayOfWeek-Weekend>,
        sh:NodeShape ;
    rdfs:label "Day of week-Weekend",
        "Weekend" ;
    rdfs:comment """
: Weekend Enumerations

| Enumeration |
|:-----------|
| `Weekend-Saturday` |
| `Weekend-Sunday` |
""",
        "This class defines the `EnumerationKind` values of Saturday and Sunday" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-DayOfWeek> .


        

ns2:EnumerationKind-Direction

URI: http://data.ashrae.org/standard223#EnumerationKind-Direction


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#EnumerationKind-Direction> rdfs:comment """
: Direction Enumerations

| Enumeration |
|:-----------|
| Direction-Bidirectional |
| Direction-Inlet |
| Direction-Outlet |
""" .


        

EnumerationKind Domain

URI: http://data.ashrae.org/standard223#EnumerationKind-Domain


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind-Domain> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-Domain>,
        sh:NodeShape ;
    rdfs:label "EnumerationKind Domain" ;
    rdfs:comment """
: Domain Enumerations

| Enumeration |
|:-----------|
| `Domain-ConveyanceSystems` |
| `Domain-Electrical` |
| Domain-Fire |
| `Domain-HVAC` |
| `Domain-Lighting` |
| `Domain-Networking` |
| `Domain-Occupancy` |
| `Domain-PhysicalSecurity` |
| `Domain-Plumbing` |
| `Domain-Refrigeration` |
""",
        "A Domain represents a categorization of building services or specialization used to characterize equipment or spaces in a building. Example domains include HVAC, Lighting, and Plumbing." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> .


        

Aspect-Electrical phase identifier

URI: http://data.ashrae.org/standard223#EnumerationKind-ElectricalPhaseIdentifier


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind-ElectricalPhaseIdentifier> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-ElectricalPhaseIdentifier>,
        sh:NodeShape ;
    rdfs:label "Aspect-Electrical phase identifier" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#hasElectricalPhase> ) ;
    rdfs:comment """
: Electrical Phase Identifier Enumerations

| Enumeration |
|:-----------|
| `ElectricalPhaseIdentifier-A` |
| `ElectricalPhaseIdentifier-AB` |
| `ElectricalPhaseIdentifier-ABC` |
| `ElectricalPhaseIdentifier-B` |
| `ElectricalPhaseIdentifier-BC` |
| `ElectricalPhaseIdentifier-C` |
| `ElectricalPhaseIdentifier-CA` |
""",
        "The value of the associated `Property` identifies the electrical phase of the `Connection`." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> .


        

has electrical phase

URI: http://data.ashrae.org/standard223#hasElectricalPhase


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasElectricalPhase> a rdf:Property ;
    rdfs:label "has electrical phase" ;
    rdfs:comment "The relation `hasElectricalPhase` is used to indicate the electrical phase identifier or the relevant electrical phases for a voltage difference for AC electricity inside a `Connection`." .


        

Aspect-Electrical Voltage Phases

URI: http://data.ashrae.org/standard223#EnumerationKind-ElectricalVoltagePhases


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind-ElectricalVoltagePhases> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-ElectricalVoltagePhases>,
        sh:NodeShape ;
    rdfs:label "Aspect-Electrical Voltage Phases" ;
    rdfs:comment """
: Electrical Voltage Phases Enumerations

| Enumeration |
|:-----------|
| `ElectricalVoltagePhases-ABLineLineVoltage` |
| `ElectricalVoltagePhases-ANLineNeutralVoltage` |
| `ElectricalVoltagePhases-BCLineLineVoltage` |
| `ElectricalVoltagePhases-BNLineNeutralVoltage` |
| `ElectricalVoltagePhases-CALineLineVoltage` |
| `ElectricalVoltagePhases-CNLineNeutralVoltage` |
""",
        "This class enumerates the relevant electrical phases for a voltage difference for AC electricity inside a `Connection`." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> .


        

EnumerationKind Numerical

URI: http://data.ashrae.org/standard223#EnumerationKind-Numerical


@prefix ns1: <http://qudt.org/schema/qudt/> .
@prefix ns2: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#EnumerationKind-Numerical> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-Numerical>,
        sh:NodeShape ;
    rdfs:label "EnumerationKind Numerical" ;
    ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/Unknown> ;
    ns1:hasUnit <http://qudt.org/vocab/unit/UNKNOWN> ;
    ns2:subclauses ( <http://data.ashrae.org/standard223#Numerical-DCVoltage> <http://data.ashrae.org/standard223#Numerical-Frequency> <http://data.ashrae.org/standard223#Numerical-LineLineVoltage> <http://data.ashrae.org/standard223#Numerical-LineNeutralVoltage> <http://data.ashrae.org/standard223#Numerical-NumberOfElectricalPhases> <http://data.ashrae.org/standard223#Numerical-Voltage> <http://data.ashrae.org/standard223#hasFrequency> <http://data.ashrae.org/standard223#hasVoltage> ) ;
    rdfs:comment "Numerical enumeration kinds are used to support the definitions of the Electricity medium. The enumerations instances in these classes have names that are recognizable by humans but are just a string for a computer application. To avoid the need to parse strings, each of these enumeration kinds have `Property` instances associated with the enumeration that represent electrical phase, voltage, and frequency. The purpose of these `Property` instances is to enable a machine to query them and obtain the same information that a person would associate with the string" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> ;
    sh:property [ rdfs:comment "An `EnumerationKind-Numerical` can be associated with a decimal value using the relation `hasValue`." ;
            sh:datatype xsd:decimal ;
            sh:path <http://data.ashrae.org/standard223#hasValue> ],
        [ rdfs:comment "An `EnumerationKind-Numerical` must be associated with at least one `QuantityKind` using the relation `hasQuantityKind`." ;
            sh:class ns1:QuantityKind ;
            sh:minCount 1 ;
            sh:path ns1:hasQuantityKind ],
        [ rdfs:comment "An `EnumerationKind-Numerical` must be associated with at least one `Unit` using the relation `hasUnit`." ;
            sh:class ns1:Unit ;
            sh:minCount 1 ;
            sh:path ns1:hasUnit ;
            sh:severity sh:Info ] .


        

Numerical-DCVoltage

URI: http://data.ashrae.org/standard223#Numerical-DCVoltage


@prefix ns1: <http://qudt.org/schema/qudt/> .
@prefix ns2: <http://sample.org/doc#> .
@prefix ns3: <http://data.ashrae.org/standard223#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns3:Numerical-DCVoltage a ns3:Class,
        ns3:Numerical-DCVoltage,
        sh:NodeShape ;
    rdfs:label "Numerical-DCVoltage" ;
    ns3:hasVoltage ns3:Numerical-Voltage ;
    ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/Voltage> ;
    ns1:hasUnit <http://qudt.org/vocab/unit/V> ;
    ns2:subclauses ( ns3:DCVoltage-DCNegativeVoltage ns3:DCVoltage-DCPositiveVoltage ) ;
    rdfs:comment """
: DC Voltage Enumerations

| Enumeration |
|:-----------|
| `DCVoltage-DCNegativeVoltage` |
| `DCVoltage-DCPositiveVoltage` |
| `DCVoltage-DCZeroVoltage` |
""",
        "This class has enumerated instances of common positive and negative voltages, plus zero volts." ;
    rdfs:subClassOf ns3:EnumerationKind-Numerical ;
    sh:property [ rdfs:comment "A DC-Voltage must have a voltage" ;
            sh:class ns3:Numerical-Voltage ;
            sh:minCount 1 ;
            sh:path ns3:hasVoltage ] .


        

DC Negative Voltage

URI: http://data.ashrae.org/standard223#DCVoltage-DCNegativeVoltage


@prefix ns1: <http://qudt.org/schema/qudt/> .
@prefix ns2: <http://data.ashrae.org/standard223#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ns2:DCVoltage-DCNegativeVoltage a ns2:Class,
        ns2:DCVoltage-DCNegativeVoltage,
        sh:NodeShape ;
    rdfs:label "DC Negative Voltage" ;
    ns2:hasVoltage ns2:Numerical-Voltage ;
    ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/Voltage> ;
    ns1:hasUnit <http://qudt.org/vocab/unit/V> ;
    rdfs:comment """
: DC Negative Voltage Enumerations

| Enumeration |
|:-----------|
| DCNegativeVoltage-12.0V |
| DCNegativeVoltage-190.0V |
| DCNegativeVoltage-2.5V |
| DCNegativeVoltage-24.0V |
| DCNegativeVoltage-3.0V |
| DCNegativeVoltage-380.0V |
| DCNegativeVoltage-48.0V |
| DCNegativeVoltage-5.0V |
| DCNegativeVoltage-6.0V |
""",
        "This class has enumerated instances of common negative voltages." ;
    rdfs:subClassOf ns2:Numerical-DCVoltage .


        

DC Positive Voltage

URI: http://data.ashrae.org/standard223#DCVoltage-DCPositiveVoltage


@prefix ns1: <http://qudt.org/schema/qudt/> .
@prefix ns2: <http://data.ashrae.org/standard223#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ns2:DCVoltage-DCPositiveVoltage a ns2:Class,
        ns2:DCVoltage-DCPositiveVoltage,
        sh:NodeShape ;
    rdfs:label "DC Positive Voltage" ;
    ns2:hasVoltage ns2:Numerical-Voltage ;
    ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/Voltage> ;
    ns1:hasUnit <http://qudt.org/vocab/unit/V> ;
    rdfs:comment """
: DC Positive Voltage Enumerations

| Enumeration |
|:-----------|
| DCPositiveVoltage-12.0V |
| DCPositiveVoltage-190.0V |
| DCPositiveVoltage-2.5V |
| DCPositiveVoltage-24.0V |
| DCPositiveVoltage-3.0V |
| DCPositiveVoltage-380.0V |
| DCPositiveVoltage-48.0V |
| DCPositiveVoltage-5.0V |
| DCPositiveVoltage-6.0V |
""",
        "This class has enumerated instances of common positive voltages." ;
    rdfs:subClassOf ns2:Numerical-DCVoltage .


        

Dimensioned Frequency

URI: http://data.ashrae.org/standard223#Numerical-Frequency


@prefix ns1: <http://qudt.org/schema/qudt/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Numerical-Frequency> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Numerical-Frequency>,
        sh:NodeShape ;
    rdfs:label "Dimensioned Frequency" ;
    ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/Frequency> ;
    ns1:hasUnit <http://qudt.org/vocab/unit/HZ> ;
    rdfs:comment """
: Frequency Enumerations

| Enumeration |
|:-----------|
| `Frequency-50Hz` |
| `Frequency-60Hz` |
""",
        "This class has enumerated instances of common electrical frequencies." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Numerical> ;
    sh:property [ rdfs:comment "A `Numerical-Frequency` must have a `Unit` of `Hertz`" ;
            sh:hasValue <http://qudt.org/vocab/unit/HZ> ;
            sh:path ns1:hasUnit ],
        [ rdfs:comment "A `Numerical-Frequency` must have a `QuantityKind` of `Frequency`" ;
            sh:hasValue <http://qudt.org/vocab/quantitykind/Frequency> ;
            sh:path ns1:hasQuantityKind ] .


        

Dimensioned Line-Line Voltage

URI: http://data.ashrae.org/standard223#Numerical-LineLineVoltage


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix ns2: <http://qudt.org/schema/qudt/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns1:Numerical-LineLineVoltage a ns1:Class,
        ns1:Numerical-LineLineVoltage,
        sh:NodeShape ;
    rdfs:label "Dimensioned Line-Line Voltage" ;
    ns1:hasVoltage ns1:Numerical-Voltage ;
    ns2:hasQuantityKind <http://qudt.org/vocab/quantitykind/Voltage> ;
    ns2:hasUnit <http://qudt.org/vocab/unit/V> ;
    rdfs:comment """
: Line-Line Voltage Enumerations

| Enumeration |
|:-----------|
| `LineLineVoltage-10000V` |
| `LineLineVoltage-190V` |
| `LineLineVoltage-208V` |
| `LineLineVoltage-220V` |
| `LineLineVoltage-240V` |
| `LineLineVoltage-3000V` |
| `LineLineVoltage-3300V` |
| `LineLineVoltage-380V` |
| `LineLineVoltage-400V` |
| `LineLineVoltage-415V` |
| `LineLineVoltage-4160V` |
| `LineLineVoltage-480V` |
| `LineLineVoltage-6000V` |
| `LineLineVoltage-600V` |
| `LineLineVoltage-6600V` |
""",
        "This class has enumerated instances of common line-line voltages." ;
    rdfs:subClassOf ns1:EnumerationKind-Numerical ;
    sh:property [ rdfs:comment "An AC-Numerical-LineLineVoltage must have a voltage" ;
            sh:class ns1:Numerical-Voltage ;
            sh:minCount 1 ;
            sh:path ns1:hasVoltage ] .


        

Dimensioned Line-Neutral Voltage

URI: http://data.ashrae.org/standard223#Numerical-LineNeutralVoltage


@prefix ns1: <http://qudt.org/schema/qudt/> .
@prefix ns2: <http://data.ashrae.org/standard223#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns2:Numerical-LineNeutralVoltage a ns2:Class,
        ns2:Numerical-LineNeutralVoltage,
        sh:NodeShape ;
    rdfs:label "Dimensioned Line-Neutral Voltage" ;
    ns2:hasVoltage ns2:Numerical-Voltage ;
    ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/Voltage> ;
    ns1:hasUnit <http://qudt.org/vocab/unit/V> ;
    rdfs:comment """
: Line Neutral Voltage Enumerations

| Enumeration |
|:-----------|
| `LineNeutralVoltage-110V` |
| `LineNeutralVoltage-120V` |
| `LineNeutralVoltage-127V` |
| `LineNeutralVoltage-139V` |
| `LineNeutralVoltage-1730V` |
| `LineNeutralVoltage-1900V` |
| `LineNeutralVoltage-208V` |
| `LineNeutralVoltage-219V` |
| `LineNeutralVoltage-231V` |
| `LineNeutralVoltage-2400V` |
| `LineNeutralVoltage-240V` |
| `LineNeutralVoltage-24V` |
| `LineNeutralVoltage-277V` |
| `LineNeutralVoltage-3460V` |
| `LineNeutralVoltage-347V` |
| `LineNeutralVoltage-3810V` |
| LineNeutralVoltage-5770V |
""",
        "This class has enumerated instances of common line-neutral voltages." ;
    rdfs:subClassOf ns2:EnumerationKind-Numerical ;
    sh:property [ rdfs:comment "An AC-Numerical-LineNeutralVoltage must have a voltage" ;
            sh:class ns2:Numerical-Voltage ;
            sh:minCount 1 ;
            sh:path ns2:hasVoltage ] .


        

Dimensionless Number of Electrical Phases

URI: http://data.ashrae.org/standard223#Numerical-NumberOfElectricalPhases


@prefix ns1: <http://qudt.org/schema/qudt/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Numerical-NumberOfElectricalPhases> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Numerical-NumberOfElectricalPhases>,
        sh:NodeShape ;
    rdfs:label "Dimensionless Number of Electrical Phases" ;
    ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/Dimensionless> ;
    ns1:hasUnit <http://qudt.org/vocab/unit/NUM> ;
    rdfs:comment """
: Number Of Electrical Phases Enumerations

| Enumeration |
|:-----------|
| `NumberOfElectricalPhases-SinglePhase` |
| `NumberOfElectricalPhases-ThreePhase` |
""",
        "This class has enumerated instances of number of electrical phases. The s223:hasNumberOfElectricalPhases relation points to one of the values of this enumeration." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Numerical> .


        

Dimensioned Voltage

URI: http://data.ashrae.org/standard223#Numerical-Voltage


@prefix ns1: <http://qudt.org/schema/qudt/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Numerical-Voltage> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Numerical-Voltage>,
        sh:NodeShape ;
    rdfs:label "Dimensioned Voltage" ;
    ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/Voltage> ;
    ns1:hasUnit <http://qudt.org/vocab/unit/V> ;
    rdfs:comment """
: Voltage Enumerations

| Enumeration |
|:-----------|
| `Voltage-0V` |
| `Voltage-10000V` |
| `Voltage-110V` |
| `Voltage-120V` |
| `Voltage-127V` |
| `Voltage-12V` |
| `Voltage-139V` |
| `Voltage-1730V` |
| `Voltage-1900V` |
| `Voltage-190V` |
| `Voltage-208V` |
| `Voltage-219V` |
| `Voltage-220V` |
| `Voltage-231V` |
| `Voltage-2400V` |
| `Voltage-240V` |
| `Voltage-24V` |
| `Voltage-277V` |
| `Voltage-2V` |
| `Voltage-3000V` |
| `Voltage-3300V` |
| `Voltage-3460V` |
| `Voltage-347V` |
| `Voltage-380V` |
| `Voltage-3810V` |
| `Voltage-3V` |
| Voltage-400V |
| Voltage-415V |
| Voltage-4160V |
| Voltage-480V |
| Voltage-48V |
| Voltage-5770V |
| Voltage-5V |
| Voltage-6000V |
| Voltage-600V |
| Voltage-6600V |
| Voltage-6V |
""",
        "This class has enumerated instances of common voltages." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Numerical> ;
    sh:property [ rdfs:comment "A `Numerical-Voltage` must have a `Unit` of `Volts`" ;
            sh:hasValue <http://qudt.org/vocab/unit/V> ;
            sh:path ns1:hasUnit ],
        [ rdfs:comment "A `Numerical-Voltage` must have a `QuantityKind` of `Voltage`" ;
            sh:hasValue <http://qudt.org/vocab/quantitykind/Voltage> ;
            sh:path ns1:hasQuantityKind ] .


        

has frequency

URI: http://data.ashrae.org/standard223#hasFrequency


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasFrequency> a rdf:Property ;
    rdfs:label "has frequency" ;
    rdfs:comment "The relation `hasFrequency` is used to identify the frequency of an AC electricity enumeration kind. " .


        

hasVoltage

URI: http://data.ashrae.org/standard223#hasVoltage


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasVoltage> a rdf:Property ;
    rdfs:label "hasVoltage" ;
    rdfs:comment "The relation `hasVoltage` is used to identify the voltage of an electricity enumeration kind. " .


        

Occupancy status

URI: http://data.ashrae.org/standard223#EnumerationKind-Occupancy


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind-Occupancy> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-Occupancy>,
        sh:NodeShape ;
    rdfs:label "Occupancy status" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Occupancy-Motion> <http://data.ashrae.org/standard223#Occupancy-Presence> ) ;
    rdfs:comment """
: Occupancy Enumerations

| Enumeration |
|:-----------|
| Occupied |
| Unoccupied |
| Unknown |
""",
        "This class has enumerated subclasses of occupancy status, i.e. the state of being used or occupied. Some Occupancy enumerations have subclasses for more specific use." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> .


        

Occupancy Motion

URI: http://data.ashrae.org/standard223#Occupancy-Motion


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Occupancy-Motion> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Occupancy-Motion>,
        sh:NodeShape ;
    rdfs:label "Occupancy Motion" ;
    rdfs:comment """
: Motion Enumerations

| Enumeration |
|:-----------|
| `Motion-False` |
| `Motion-True` |
""",
        "This class has enumerated subclasses indicating whether motion is detected or not." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Occupancy> .


        

Occupancy Presence

URI: http://data.ashrae.org/standard223#Occupancy-Presence


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Occupancy-Presence> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Occupancy-Presence>,
        sh:NodeShape ;
    rdfs:label "Occupancy Presence" ;
    rdfs:comment """
: Presence Enumerations

| Enumeration |
|:-----------|
| `Presence-False` |
| `Presence-True` |
""",
        "This class has enumerated subclasses indicating whether physical presence is detected or not." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Occupancy> .


        

EnumerationKind ThermodynamicPhase

URI: http://data.ashrae.org/standard223#EnumerationKind-ThermodynamicPhase


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind-ThermodynamicPhase> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-ThermodynamicPhase>,
        sh:NodeShape ;
    rdfs:label "EnumerationKind ThermodynamicPhase" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#ThermodynamicPhase-Gas> <http://data.ashrae.org/standard223#ThermodynamicPhase-Liquid> <http://data.ashrae.org/standard223#hasThermodynamicPhase> ) ;
    rdfs:comment """
: Thermodynamic Phase Enumerations

| Enumeration |
|:-----------|
| Phase-Gas (see {s223:ThermodynamicPhase-Gas}) |
| Phase-Liquid (see {s223:ThermodynamicPhase-Liquid}) |
| Phase-Solid |
| Phase-Vapor |
""",
        "This class has enumerated subclasses of thermodynamic phase, i.e. states of matter." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> .


        

ThermodynamicPhase-Gas

URI: http://data.ashrae.org/standard223#ThermodynamicPhase-Gas


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#ThermodynamicPhase-Gas> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#ThermodynamicPhase-Gas>,
        sh:NodeShape ;
    rdfs:label "ThermodynamicPhase-Gas" ;
    rdfs:comment """
: Gas Enumerations

| Enumeration |
|:-----------|
| Gas-Superheated |
""",
        "This class has enumerated subclasses of gas in various thermodynamic states." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-ThermodynamicPhase> .


        

ThermodynamicPhase-Liquid

URI: http://data.ashrae.org/standard223#ThermodynamicPhase-Liquid


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#ThermodynamicPhase-Liquid> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#ThermodynamicPhase-Liquid>,
        sh:NodeShape ;
    rdfs:label "ThermodynamicPhase-Liquid" ;
    rdfs:comment """
: Liquid Enumerations

| Enumeration |
|:-----------|
| `Liquid-SubCooled` |
""",
        "This class has enumerated subclasses of liquid in various thermodynamic states." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-ThermodynamicPhase> .


        

has thermodynamic phase

URI: http://data.ashrae.org/standard223#hasThermodynamicPhase


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasThermodynamicPhase> a rdf:Property ;
    rdfs:label "has thermodynamic phase" ;
    rdfs:comment "The relation `hasThermodynamicPhase` is used to indicate the thermodynamic phase of the Medium inside a `Connection`." .


        

Role

URI: http://data.ashrae.org/standard223#EnumerationKind-Role


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind-Role> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-Role>,
        sh:NodeShape ;
    rdfs:label "Role" ;
    rdfs:comment """
: Role Enumerations

| Enumeration |
|:-----------|
| `Role-Condenser` |
| `Role-Cooling` |
| `Role-Dehumidifying` |
| `Role-Discharge` |
| `Role-Economizer` |
| `Role-Evaporator` |
| `Role-Exhaust` |
| `Role-Expansion` |
| `Role-Generator` |
| `Role-HeatRecovery` |
| `Role-Heating` |
| `Role-Load` |
| `Role-Primary` |
| `Role-Recirculating` |
| `Role-Relief` |
| `Role-Return` |
| `Role-Secondary` |
| `Role-Supply` |
| `Role-Ventilating` |
""",
        """This class has enumerated subclasses of roles played by entities, such as cooling, generator, 
  relief, return. The use of these enumeration kinds are to indicate the **capability** of an entity to play a given 
  role, rather than as an indication of the role or mode being active at any given point in time. In other words, 
  some reversible piece of equipment might play a role of `Role-Cooling` at one time, and `Role-Heating` at another. 
  Such an entity would be described by two triples to indicate these two allowable roles. To determine what role 
  is active at a particular time is not determinable within the scope of 223, but rather through a `Property` with 
  an ExternalReference to telemetry or control data.""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> .


        

ns2:EnumerationKind-RunStatus

URI: http://data.ashrae.org/standard223#EnumerationKind-RunStatus


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#EnumerationKind-RunStatus> rdfs:comment """
: Run Status Enumerations

| Enumeration |
|:-----------|
| RunStatus-Off |
| RunStatus-On |
| RunStatus-Unknown |
""" .


        

Substance

URI: http://data.ashrae.org/standard223#EnumerationKind-Substance


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumerationKind-Substance> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EnumerationKind-Substance>,
        sh:NodeShape ;
    rdfs:label "Substance" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Substance-Medium> <http://data.ashrae.org/standard223#Substance-Particulate> ) ;
    rdfs:comment """
:Substance Enumerations

| Enumeration |
|:-----------|
| `Substance-Medium` (see {s223:Substance-Medium}) |
| `Substance-Particulate` (see {s223:Substance-Particulate}) |
| `Substance-Soot` |
""",
        "This class has enumerated subclasses of the substances that are consumed, produced, transported, sensed, controlled or otherwise interacted with (e.g. water, air, etc.)." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind> ;
    sh:property [ rdfs:comment """If the relation `composedOf` is present, it must associate an `EnumerationKind-Substance` with one or more Properties that 
identify and characterize its constituents. The `Property` identifies the constituent using the relation `ofConstituent`. If appropriate, a 
`QuantifiableProperty` may be used to also specify the amount of the constituent using the relations `qudt:hasQuantityKind`, `qudt:hasUnit`, and `qudt:hasValue`.  
For example, see {s223:Water-GlycolSolution}.""" ;
            sh:class <http://data.ashrae.org/standard223#Property> ;
            sh:path <http://data.ashrae.org/standard223#composedOf> ],
        [ rdfs:comment "If a substance has a constituent, that constituent may not itself have constituents." ;
            sh:path <http://data.ashrae.org/standard223#composedOf> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "If a substance has a constituent, that constituent may not itself have constituents." ;
                    sh:message "s223: This substance {$this} has a constituent {?constituent} that itself composed ofs {?nextConstituent}. Create new substance with only atomic constituents." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?constituent ?nextConstituent
WHERE {
$this s223:composedOf ?constituent .
?constituent s223:ofConstituent/s223:composedOf ?nextConstituent .
}
""" ] ] .


        

Medium

URI: http://data.ashrae.org/standard223#Substance-Medium


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Substance-Medium> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Substance-Medium>,
        sh:NodeShape ;
    rdfs:label "Medium" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Medium-Constituent> <http://data.ashrae.org/standard223#Medium-Mix> ) ;
    rdfs:comment """
:Medium Enumerations

| Enumeration |
|:-----------|
| `Medium-Constituent` (see {s223:Medium-Constituent}) |
| `Medium-Mix` (see {s223:Medium-Mix}) |
| `Medium-ThermalContact` |
""",
        """This class has enumerated subclasses of a physical substance or anything that allows 
  for the transfer of energy or information. `Substance-Medium` is also the root of the medium hierarchy
  that is used to ensure compatibility of different medium designations. For example, `Fluid-Water` and 
  `Water-ChilledWater` are alternative but compatible ways of identifying the material flowing in a pipe, using different
  degrees of specificity. `Water-ChilledWater` and `Water-HotWater` are not compatible. Compatibility is determined 
  by testing if one medium is a subclass of the other. This gets a bit more complicated in the case of mixtures, 
  where at least one of the constituents of a mixture must be compatible with at least one of the constituents of the other medium. 

  Testing for medium compatibility is done in the context of entities that have a `hasMedium` relation, such as 

* `Connection` and its associated `ConnectionPoint`s. See {s223:Connection}.

* `Junction` and its associated `ConnectionPoint`s See {s223:Junction}.

* `Filter` and its associated `ConnectionPoint`s. See {s223:Filter}.

* Any `Concept` that has a `hasMedium` relation, compared with an associated `Property` with an `ofMedium` relation. See {s223:Concept}.

These tests are listed in the constraint tables for the respective classes listed above, identified as Case 1, Case 2, etc.
  

  
  
  """ ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Substance> .


        

Medium-Constituent

URI: http://data.ashrae.org/standard223#Medium-Constituent


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Medium-Constituent> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Medium-Constituent>,
        sh:NodeShape ;
    rdfs:label "Medium-Constituent" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Constituent-Electricity> <http://data.ashrae.org/standard223#Constituent-EM> ) ;
    rdfs:comment """
:Constituent Enumerations

| Enumeration |
|:-----------|
| `Constituent-CO` |
| `Constituent-CO2` |
| `Constituent-Glycol` |
| `Constituent-Electricity` (see {s223:Constituent-Electricity}) |
| `Constituent-EM` (see {s223:Constituent-EM}) |
| `Constituent-H2O` |
""",
        "`Medium-Constituent`" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Substance-Medium> .


        

Electricity

URI: http://data.ashrae.org/standard223#Constituent-Electricity


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Constituent-Electricity> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Constituent-Electricity>,
        sh:NodeShape ;
    rdfs:label "Electricity" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Electricity-AC> <http://data.ashrae.org/standard223#Electricity-DC> <http://data.ashrae.org/standard223#Electricity-Signal> ),
        ( <http://data.ashrae.org/standard223#Electricity-AC> <http://data.ashrae.org/standard223#Electricity-DC> <http://data.ashrae.org/standard223#Electricity-Signal> ) ;
    rdfs:comment """
:Electricity Enumerations

| Enumeration |
|:-----------|
| `Electricity-AC` (see {s223:Electricity-AC})|
| `Electricity-DC` (see {s223:Electricity-DC})|
| `Electricity-Earth`  |
| Constituent-Neutral |
| Constituent-Signal (see {s223:Electricity-Signal}) |
""",
        "This class has enumerated subclasses of all forms of electricity, including AC and DC." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Medium-Constituent> .


        

Electricity AC

URI: http://data.ashrae.org/standard223#Electricity-AC


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix ns2: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns1:Electricity-AC a ns1:Class,
        ns1:Electricity-AC,
        sh:NodeShape ;
    rdfs:label "Electricity AC" ;
    ns1:hasFrequency ns1:Numerical-Frequency ;
    ns1:hasNumberOfElectricalPhases ns1:Numerical-NumberOfElectricalPhases ;
    ns1:hasVoltage ns1:Numerical-Voltage ;
    ns2:subclauses ( ns1:hasNumberOfElectricalPhases ns2:electricalwiringv2-p1 ns2:electricalwiringv2-p2 ns2:electricalwiringv2-p3 ns2:electricalwiringv2-p4 ns2:electricalwiringv2-p5 ns2:electricalwiringv2-p6 ns2:electricalwiringv2-p7 ns2:electricalwiringv2-p8 ) ;
    rdfs:comment """
: AC Enumerations

| Enumeration |
|:-----------|
| `AC-10000VLL-1Ph-60Hz` |
| `AC-10000VLL-3Ph-60Hz` |
| `AC-10000VLL-5770VLN-1Ph-60Hz` |
| `AC-10000VLL-5770VLN-3Ph-60Hz` |
| `AC-110VLN-1Ph-50Hz` |
| `AC-120VLN-1Ph-60Hz` |
| `AC-127VLN-1Ph-50Hz` |
| `AC-139VLN-1Ph-50Hz` |
| `AC-1730VLN-1Ph-60Hz` |
| `AC-1900VLN-1Ph-60Hz` |
| `AC-190VLL-110VLN-1Ph-50Hz` |
| `AC-190VLL-110VLN-3Ph-50Hz` |
| `AC-190VLL-1Ph-50Hz` |
| `AC-190VLL-3Ph-50Hz` |
| `AC-208VLL-120VLN-1Ph-60Hz` |
| `AC-208VLL-120VLN-3Ph-60Hz` |
| `AC-208VLL-1Ph-60Hz` |
| AC-208VLL-3Ph-60Hz |
| AC-219VLN-1Ph-60Hz |
| AC-220VLL-127VLN-1Ph-50Hz |
| AC-220VLL-127VLN-3Ph-50Hz |
| AC-220VLL-1Ph-50Hz |
| AC-220VLL-3Ph-50Hz |
| AC-231VLN-1Ph-50Hz |
| AC-2400VLN-1Ph-60Hz |
| AC-240VLL-120VLN-1Ph-60Hz |
| AC-240VLL-139VLN-1Ph-50Hz |
| AC-240VLL-139VLN-3Ph-50Hz |
| AC-240VLL-1Ph-50Hz |
| AC-240VLL-1Ph-60Hz |
| AC-240VLL-208VLN-120VLN-1Ph-60Hz |
| AC-240VLL-208VLN-120VLN-3Ph-60Hz |
| AC-240VLL-3Ph-50Hz |
| AC-240VLL-3Ph-60Hz |
| AC-240VLN-1Ph-50Hz |
| AC-24VLN-1Ph-50Hz |
| AC-24VLN-1Ph-60Hz |
| AC-277VLN-1Ph-60Hz |
| AC-3000VLL-1730VLN-1Ph-60Hz |
| AC-3000VLL-1730VLN-3Ph-60Hz |
| AC-3000VLL-1Ph-60Hz |
| AC-3000VLL-3Ph-60Hz |
| AC-3300VLL-1900VLN-1Ph-60Hz |
| AC-3300VLL-1900VLN-3Ph-60Hz |
| AC-3300VLL-1Ph-60Hz |
| AC-3300VLL-3Ph-60Hz |
| AC-3460VLN-1Ph-60Hz |
| AC-347VLN-1Ph-60Hz |
| AC-380VLL-1Ph-60Hz |
| AC-380VLL-219VLN-1Ph-60Hz |
| AC-380VLL-219VLN-3Ph-60Hz |
| AC-380VLL-3Ph-60Hz |
| AC-3810VLN-1Ph-60Hz |
| AC-400VLL-1Ph-50Hz |
| AC-400VLL-231VLN-1Ph-50Hz |
| AC-400VLL-231VLN-3Ph-50Hz |
| AC-400VLL-3Ph-50Hz |
| AC-415VLL-1Ph-50Hz |
| AC-415VLL-240VLN-1Ph-50Hz |
| AC-415VLL-240VLN-3Ph-50Hz |
| AC-415VLL-3Ph-50Hz |
| AC-4160VLL-1Ph-60Hz |
| AC-4160VLL-2400VLN-1Ph-60Hz |
| AC-4160VLL-2400VLN-3Ph-60Hz |
| AC-4160VLL-3Ph-60Hz |
| AC-480VLL-1Ph-60Hz |
| AC-480VLL-277VLN-1Ph-60Hz |
| AC-480VLL-277VLN-3Ph-60Hz |
| AC-480VLL-3Ph-60Hz |
| AC-5770VLN-1Ph-60Hz |
| AC-6000VLL-1Ph-60Hz |
| AC-6000VLL-3460VLN-1Ph-60Hz |
| AC-6000VLL-3460VLN-3Ph-60Hz |
| AC-6000VLL-3Ph-60Hz |
| AC-600VLL-1Ph-60Hz |
| AC-600VLL-347VLN-1Ph-60Hz |
| AC-600VLL-347VLN-3Ph-60Hz |
| AC-600VLL-3Ph-60Hz |
| AC-6600VLL-1Ph-60Hz |
| AC-6600VLL-3810VLN-1Ph-60Hz |
| AC-6600VLL-3810VLN-3Ph-60Hz |
| AC-6600VLL-3Ph-60Hz |
""",
        "This class has enumerated instances of all AC forms of electricity." ;
    rdfs:subClassOf ns1:Constituent-Electricity ;
    sh:property [ rdfs:comment "An electricity AC medium must have a frequency" ;
            sh:class ns1:Numerical-Frequency ;
            sh:minCount 1 ;
            sh:path ns1:hasFrequency ],
        [ rdfs:comment "An electricity AC medium must have a voltage." ;
            sh:minCount 1 ;
            sh:or ( [ sh:class ns1:Numerical-LineLineVoltage ] [ sh:class ns1:Numerical-LineNeutralVoltage ] [ sh:class ns1:Numerical-Voltage ] ) ;
            sh:path ns1:hasVoltage ],
        [ rdfs:comment "An electricity AC medium must have a number of electrical phases." ;
            sh:class ns1:Numerical-NumberOfElectricalPhases ;
            sh:minCount 1 ;
            sh:path ns1:hasNumberOfElectricalPhases ] .


        

has number of electrical phases

URI: http://data.ashrae.org/standard223#hasNumberOfElectricalPhases


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasNumberOfElectricalPhases> a rdf:Property ;
    rdfs:label "has number of electrical phases" ;
    rdfs:comment "The relation `hasNumberOfElectricalPhases` is used to identify the number of electrical phases in an AC electricity enumeration kind. " .


        

ns3:electricalwiringv2-p1

URI: http://sample.org/doc#electricalwiringv2-p1


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:electricalwiringv2-p1 ns1:title "1-Phase 3-Wire (LLN) Delta 240V L-L" ;
    rdfs:comment """
This is an example Delta 240 V transformer.

![Caption](figures/electricalwiringv2-p1.jpg)

| Medium | # wires | L-L | L-N | Countries | Phase Possibilities |
|:------------------:|:-----:|:----:|:----:|:-------:|:-------------------:|
| AC-240VLL-120VLN-3PH-60Hz | 3 | 240 | 120 | US | AN, BN, AB, ABN |
| AC-240VLL-1PH-60Hz | 2 | 240 | - | US | AB |
| AC-120VLN-1PH-60Hz | 2 | - | 120 | US | AN, BN |
""" .


        

ns3:electricalwiringv2-p2

URI: http://sample.org/doc#electricalwiringv2-p2


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:electricalwiringv2-p2 ns1:title "3-Phase 3-Wire (LLL) Delta 480V L-L" ;
    rdfs:comment """
This is an example Delta 480 V transformer.

![Caption](figures/electricalwiringv2-p2.jpg)

| Medium | # wires | L-L | L-N | Countries | Phase Possibilities |
|:------------------:|:-----:|:----:|:----:|:-------:|:-------------------:|
| AC-480VLL-3PH-60Hz | 3 | 480 | - | US | ABC, AB, BC, AC |
| AC-480VLL-1PH-60Hz | 2 | 480 | - | US | AB, BC, AC |
""" .


        

ns3:electricalwiringv2-p3

URI: http://sample.org/doc#electricalwiringv2-p3


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:electricalwiringv2-p3 ns1:title "3-Phase 3-Wire (LLL) Delta 600V L-L" ;
    rdfs:comment """
This is an example Delta 600 V transformer.

![Caption](figures/electricalwiringv2-p3.jpg)

| Medium | # wires | L-L | L-N | Countries | Phase Possibilities |
|:------------------:|:-----:|:----:|:----:|:-------:|:-------------------:|
| AC-600VLL-3PH-60Hz | 3 | 600 | - | US | ABC, AB, BC, AC |
| AC-600VLL-1PH-60Hz | 2 | 600 | - | US | AB, BC, AC |
""" .


        

ns3:electricalwiringv2-p4

URI: http://sample.org/doc#electricalwiringv2-p4


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:electricalwiringv2-p4 ns1:title "3-Phase 4-Wire (LLLN) Delta 240V L-L" ;
    rdfs:comment """
This is an example 3-Phase 4-Wire Delta 240 V transformer.

![Caption](figures/electricalwiringv2-p4.jpg)

| Medium | # wires | L-L | L-N | Countries | Phase Possibilities |
|:------------------:|:-----:|:----:|:----:|:-------:|:-------------------:|
| AC-240VLL-208VLN-120VLN-3PH-60Hz | 4 | 240 | 208, 120 | US | AN, BN, CN, AB, BC, AC, ABN, BCN, ACN, ABC, ABCN |
| AC-240VLL-3PH-60Hz | 3 | 240 | - | US | ABC |
| AC-240VLL-120VLN-1PH-60Hz | 3 | 240 | 120 | US | ABN, BCN, AN, BN |
| AC-240VLL-1PH-60Hz | 2 | 240 | - | US | AB, BC, AC |
| AC-120VLN-1PH-60Hz | 2 | - | 120 | US | AN, BN |
""" .


        

ns3:electricalwiringv2-p5

URI: http://sample.org/doc#electricalwiringv2-p5


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:electricalwiringv2-p5 ns1:title "3-Phase 4-Wire (LLLN) Delta 480V L-L" ;
    rdfs:comment """
This is an example 3-Phase 4-Wire Delta 480 V transformer.

![Caption](figures/electricalwiringv2-p5.jpg)

| Medium | # wires | L-L | L-N | Countries | Phase Possibilities |
|:------------------:|:-----:|:----:|:----:|:-------:|:-------------------:|
| AC-480VLL-415VLN-240VLN-3PH-60Hz | 4 | 480 | 415, 240 | US | AN, BN, CN, AB, BC, AC, ABN, BCN, ACN, ABC, ABCN |
| AC-480VLL-3PH-60Hz | 3 | 480 | - | US | ABC |
| AC-480VLL-240VLN-1PH-60Hz | 3 | 480 | 240 | US | ABN, BCN, AN, BN |
| AC-480VLL-1PH-60Hz | 2 | 480 | - | US | AB, BC, AC |
| AC-240VLN-1PH-60Hz | 2 | - | 240 | US | AN, BN |
""" .


        

ns3:electricalwiringv2-p6

URI: http://sample.org/doc#electricalwiringv2-p6


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:electricalwiringv2-p6 ns1:title "3-Phase 4-Wire (LLLN) Wye 208V L-L" ;
    rdfs:comment """
This is an example 3-Phase 4-Wire  Wye 208 V transformer.

![Caption](figures/electricalwiringv2-p6.jpg)

| Medium | # wires | L-L | L-N | Countries | Phase Possibilities |
|:------------------:|:-----:|:----:|:----:|:-------:|:-------------------:|
| AC-208VLL-120VLN-3PH-60Hz | 4 | 208 | 120 | US | AN, BN, CN, AB, BC, AC, ABN, BCN, ACN, ABC, ABCN |
| AC-208VLL-3PH-60Hz | 3 | 208 | - | US | ABC |
| AC-208VLL-120VLN-1PH-60Hz | 3 | 208 | 120 | US | ABN, BCN, ACN |
| AC-208VLL-1PH-60Hz | 2 | 208 | - | US | AB, BC, AC |
| AC-120VLN-1PH-60Hz | 2 | - | 120 | US | AN, BN, CN |
""" .


        

ns3:electricalwiringv2-p7

URI: http://sample.org/doc#electricalwiringv2-p7


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:electricalwiringv2-p7 ns1:title "2-Phase 4-Wire (LLLN) Wye 415V L-L" ;
    rdfs:comment """
This is an example 2-Phase 4-Wire Wye 415 V transformer.

![Caption](figures/electricalwiringv2-p7.jpg)

| Medium | # wires | L-L | L-N | Countries | Phase Possibilities |
|:------------------:|:-----:|:----:|:----:|:-------:|:-------------------:|
| AC-415VLL-240VLN-3PH-60Hz| 4 | 415 | 240 | ASTL | AN, BN, CN, AB, BC, AC, ABN, BCN, ACN, ABC, ABCN |
| AC-415VLL-3PH-60Hz | 3 | 415 | - | ASTL | ABC |
| AC-415VLL-240VLN-1PH-60Hz | 3 | 415 | 240 | ASTL | ABN, BCN, ACN |
| AC-415VLL-1PH-60Hz | 2 | 415 | - | ASTL | AB, BC, AC |
| AC-240VLN-1PH-60Hz | 2 | - | 240 | ASTL | AN, BN, CN |
""" .


        

ns3:electricalwiringv2-p8

URI: http://sample.org/doc#electricalwiringv2-p8


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:electricalwiringv2-p8 ns1:title "2-Phase 4-Wire (LLLN) Wye 480V L-L" ;
    rdfs:comment """
This is an example 2-Phase 4-Wire Wye 480 V transformer.

![Caption](figures/electricalwiringv2-p8.jpg)

| Medium | # wires | L-L | L-N | Countries | Phase Possibilities |
|:------------------:|:-----:|:----:|:----:|:-------:|:-------------------:|
| AC-480VLL-277VLN-3PH-60Hz | 4 | 480 | 27 | US | AN, BN, CN, AB, BC, AC, ABN, BCN, ACN, ABC, ABCN |
| AC-480VLL-3PH-60Hz | 3 | 480 | - | US | ABC |
| AC-480VLL-277VLN-1PH-60Hz | 3 | 480 | 277 | US | ABN, BCN, ACN |
| AC-480VLL-1PH-60Hz | 2 | 480 | - | US | AB, BC, AC |
| AC-277VLN-1PH-60Hz | 2 | - | 277 | US | AN, BN, CN |
""" .


        

Electricity DC

URI: http://data.ashrae.org/standard223#Electricity-DC


@prefix ns1: <http://sample.org/doc#> .
@prefix ns2: <http://data.ashrae.org/standard223#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns2:Electricity-DC a ns2:Class,
        ns2:Electricity-DC,
        sh:NodeShape ;
    rdfs:label "Electricity DC" ;
    ns2:hasVoltage ns2:Numerical-Voltage ;
    ns1:subclauses ( ns2:DC-12V ns2:DC-24V ns2:DC-380V ns2:DC-48V ns2:DC-5V ns2:DC-6V ) ;
    rdfs:comment """
: DC Enumerations

| Enumeration |
|:-----------|
| `DC-12V` |
| `DC-24V` |
| `DC-380V` |
| `DC-48V` |
| `DC-5V` |
| `DC-6V` |""",
        "This class has enumerated instances of all DC forms of electricity." ;
    rdfs:subClassOf ns2:Constituent-Electricity ;
    sh:property [ rdfs:comment "An electricity DC medium must have two reference voltages." ;
            sh:minCount 1 ;
            sh:or ( [ sh:class ns2:Numerical-DCVoltage ] [ sh:class ns2:Numerical-Voltage ] ) ;
            sh:path ns2:hasVoltage ] .


        

12V

URI: http://data.ashrae.org/standard223#DC-12V


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ns1:DC-12V a ns1:Class,
        ns1:DC-12V,
        ns1:Electricity-DC,
        sh:NodeShape ;
    rdfs:label "12V" ;
    ns1:hasVoltage ns1:Voltage-12V ;
    rdfs:comment """
: DC-12V Enumerations

| Enumeration |
|:-----------|
| `12V-12V-Neg` |
| `12V-12V-Pos` |
| `12V-6V-Neg-6V-Pos` |
""",
        "This class has enumerated instances of all polarities of 12 volt electricity." ;
    rdfs:subClassOf ns1:Electricity-DC .


        

24V

URI: http://data.ashrae.org/standard223#DC-24V


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ns1:DC-24V a ns1:Class,
        ns1:DC-24V,
        ns1:Electricity-DC,
        sh:NodeShape ;
    rdfs:label "24V" ;
    ns1:hasVoltage ns1:Voltage-24V ;
    rdfs:comment """
: DC-24V Enumerations

| Enumeration |
|:-----------|
| `24V-12V-Neg-12V-Pos` |
| `24V-24V-Neg` |
| `24V-24V-Pos` |
""",
        "This class has enumerated instances of all polarities of 24 volt electricity." ;
    rdfs:subClassOf ns1:Electricity-DC .


        

380V

URI: http://data.ashrae.org/standard223#DC-380V


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ns1:DC-380V a ns1:Class,
        ns1:DC-380V,
        ns1:Electricity-DC,
        sh:NodeShape ;
    rdfs:label "380V" ;
    ns1:hasVoltage ns1:Voltage-380V ;
    rdfs:comment """
: DC-380V Enumerations

| Enumeration |
|:-----------|
| `380V-190V-Neg-190V-Pos` |
| `380V-380V-Neg` |
| `380V-380V-Pos` |
""",
        "This class has enumerated instances of all polarities of 380 volt electricity." ;
    rdfs:subClassOf ns1:Electricity-DC .


        

48V

URI: http://data.ashrae.org/standard223#DC-48V


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ns1:DC-48V a ns1:Class,
        ns1:DC-48V,
        ns1:Electricity-DC,
        sh:NodeShape ;
    rdfs:label "48V" ;
    ns1:hasVoltage ns1:Voltage-48V ;
    rdfs:comment """
: DC-48V Enumerations

| Enumeration |
|:-----------|
| `48V-24V-Neg-24V-Pos` |
| `48V-48V-Neg` |
| `48V-48V-Pos` |
""",
        "This class has enumerated instances of all polarities of 48 volt electricity." ;
    rdfs:subClassOf ns1:Electricity-DC .


        

5V

URI: http://data.ashrae.org/standard223#DC-5V


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ns1:DC-5V a ns1:Class,
        ns1:DC-5V,
        ns1:Electricity-DC,
        sh:NodeShape ;
    rdfs:label "5V" ;
    ns1:hasVoltage ns1:Voltage-5V ;
    rdfs:comment """
: DC-5V Enumerations

| Enumeration |
|:-----------|
| 5V-2.5V-Neg-2.5V-Pos |
| `5V-5V-Neg` |
| `5V-5V-Pos` |
""",
        "This class has enumerated instances of all polarities of 5 volt electricity." ;
    rdfs:subClassOf ns1:Electricity-DC .


        

6V

URI: http://data.ashrae.org/standard223#DC-6V


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ns1:DC-6V a ns1:Class,
        ns1:DC-6V,
        ns1:Electricity-DC,
        sh:NodeShape ;
    rdfs:label "6V" ;
    ns1:hasVoltage ns1:Voltage-6V ;
    rdfs:comment """
: DC-6V Enumerations

| Enumeration |
|:-----------|
| `6V-3V-Neg-3V-Pos` |
| `6V-6V-Neg` |
| `6V-6V-Pos` |
""",
        "This class has enumerated instances of all polarities of 6 volt electricity." ;
    rdfs:subClassOf ns1:Electricity-DC .


        

Electricity Signal

URI: http://data.ashrae.org/standard223#Electricity-Signal


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Electricity-Signal> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Electricity-Signal>,
        sh:NodeShape ;
    rdfs:label "Electricity Signal" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Signal-Modulated> ) ;
    rdfs:comment """
: Signal Enumerations

| Enumeration |
|:-----------|
| `Signal-EIA485` |
| `Signal-Ethernet` |
| `Signal-IEC14908` |
| `Signal-Modulated` (see {s223:Signal-Modulated}) |
| `Signal-USB` |""",
        "This class has enumerated subclasses of common communication protocols." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Constituent-Electricity> .


        

Signal-Modulated

URI: http://data.ashrae.org/standard223#Signal-Modulated


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Signal-Modulated> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Signal-Modulated>,
        sh:NodeShape ;
    rdfs:label "Signal-Modulated" ;
    rdfs:comment """
: Modulated Enumerations

| Enumeration |
|:-----------|
| `Modulated-0-10V` |
| `Modulated-4-20mA` |
""",
        "This class has enumerated subclasses of electric signals at various voltage ranges." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Electricity-Signal> .


        

Electromagnetic Wave

URI: http://data.ashrae.org/standard223#Constituent-EM


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Constituent-EM> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Constituent-EM>,
        sh:NodeShape ;
    rdfs:label "Electromagnetic Wave" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#EM-Light> ) ;
    rdfs:comment """
: EM Enumerations

| Enumeration |
|:-----------|
| `EM-Light` |
| `EM-Microwave` |
| `EM-RF` |
""",
        "This class has enumerated subclasses of electromagnetic energy at any frequency range." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Medium-Constituent> .


        

EM-Light

URI: http://data.ashrae.org/standard223#EM-Light


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EM-Light> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#EM-Light>,
        sh:NodeShape ;
    rdfs:label "EM-Light" ;
    rdfs:comment """
: Light Enumerations

| Enumeration |
|:-----------|
| `Light-Infrared` |
| `Light-Ultraviolet` |
| `Light-Visible` |
""",
        "The `EM-Light` class has enumerated subclasses of what are considered visible or near-visible light." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Constituent-EM> .


        

Medium-Mix

URI: http://data.ashrae.org/standard223#Medium-Mix


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Medium-Mix> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Medium-Mix>,
        sh:NodeShape ;
    rdfs:label "Medium-Mix" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Mix-Fluid> <http://data.ashrae.org/standard223#Mix-PowerAndSignal> ) ;
    rdfs:comment """
:Mix Enumerations

| Enumeration |
|:-----------|
| `Mix-Fluid` (see {s223:Mix-Fluid}) |
| `Mix-PowerAndSignal` (see {s223:Mix-PowerAndSignal}) |
""",
        "`Medium-Mix`" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Substance-Medium> .


        

Mix-Fluid

URI: http://data.ashrae.org/standard223#Mix-Fluid


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Mix-Fluid> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Mix-Fluid>,
        sh:NodeShape ;
    rdfs:label "Mix-Fluid" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#Fluid-Refrigerant> <http://data.ashrae.org/standard223#Fluid-Water> ) ;
    rdfs:comment """
:Fluid Enumerations

| Enumeration |
|:-----------|
| `Fluid-Air` |
| `Fluid-NaturalGas` |
| `Fluid-Oil`  |
| `Fluid-Refrigerant` (see {s223:Fluid-Refrigerant}) |
| `Fluid-Water` (see {s223:Fluid-Water}) |
""",
        "`Mix-Fluid`" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Medium-Mix> .


        

Fluid-Refrigerant

URI: http://data.ashrae.org/standard223#Fluid-Refrigerant


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Fluid-Refrigerant> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Fluid-Refrigerant>,
        sh:NodeShape ;
    rdfs:label "Fluid-Refrigerant" ;
    rdfs:comment """
: Refrigerant Enumerations

| Enumeration |
|:-----------|
| `Refrigerant-R-22` |
| `Refrigerant-R-410A` |
""",
        """
:Refrigerant Enumerations

| Enumeration |
|:-----------|
| `Refrigerant-R-22` |
| `Refrigerant-R-410A` |
""",
        "This class has enumerated subclasses of commonly used refrigerants." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Mix-Fluid> .


        

Fluid-Water

URI: http://data.ashrae.org/standard223#Fluid-Water


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix ns2: <http://sample.org/doc#> .
@prefix ns3: <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 sh: <http://www.w3.org/ns/shacl#> .

ns1:Fluid-Water a ns1:Class,
        ns1:Fluid-Water,
        sh:NodeShape ;
    rdfs:label "Fluid-Water" ;
    ns1:composedOf [ a ns1:QuantifiableProperty ;
            rdfs:label "Water conc" ;
            ns1:ofConstituent ns1:Constituent-H2O ;
            ns3:hasQuantityKind <http://qudt.org/vocab/quantitykind/VolumeFraction> ;
            ns3:hasUnit <http://qudt.org/vocab/unit/PERCENT> ] ;
    ns2:subclauses ( ns1:Water-GlycolSolution ),
        ( ns1:Water-GlycolSolution ) ;
    rdfs:comment """
:Water Enumerations

| Enumeration |
|:-----------|
| `Water-ChilledWater` |
| `Water-GlycolSolution` (see {s223:Water-GlycolSolution}) |
| `Water-HotWater` |
| `Water-Steam` |
""",
        "This class has enumerated subclasses of water and aqueous solutions in various states." ;
    rdfs:subClassOf ns1:Mix-Fluid .


        

Water-GlycolSolution

URI: http://data.ashrae.org/standard223#Water-GlycolSolution


@prefix ns1: <http://qudt.org/schema/qudt/> .
@prefix ns2: <http://data.ashrae.org/standard223#> .
@prefix ns3: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns2:Water-GlycolSolution a ns2:Class,
        ns2:Water-GlycolSolution,
        sh:NodeShape ;
    rdfs:label "Water-GlycolSolution" ;
    ns2:composedOf [ a ns2:QuantifiableProperty ;
            rdfs:label "Unspecified" ;
            ns2:ofConstituent ns2:Constituent-H2O ;
            ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/VolumeFraction> ;
            ns1:hasUnit <http://qudt.org/vocab/unit/PERCENT> ],
        [ a ns2:QuantifiableProperty ;
            rdfs:label "Unspecified" ;
            ns2:ofConstituent ns2:Constituent-Glycol ;
            ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/VolumeFraction> ;
            ns1:hasUnit <http://qudt.org/vocab/unit/PERCENT> ] ;
    ns2:hasFreezingPoint [ a ns2:QuantifiableProperty ;
            rdfs:label "Freezing point" ;
            ns1:hasQuantityKind <http://qudt.org/vocab/quantitykind/Temperature> ] ;
    ns3:subclauses ( ns2:hasFreezingPoint ) ;
    rdfs:comment """
: Glycol Solution Enumerations

| Enumeration |
|:-----------|
| `GlycolSolution-15Percent` |
| `GlycolSolution-30Percent` |
""",
        "This class has enumerated subclasses of water-glycol solutions in various concentrations." ;
    rdfs:subClassOf ns2:Fluid-Water ;
    sh:property [ rdfs:comment "One of the constituents of a `Water-GlycolSolution` must be `Constituent-H2O`." ;
            sh:path ns2:composedOf ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class ns2:QuantifiableProperty ;
                    sh:node [ sh:property [ rdfs:comment "One of the constituents of a `Water-GlycolSolution` must be `Constituent-H2O`." ;
                                    sh:hasValue ns2:Constituent-H2O ;
                                    sh:path ns2:ofConstituent ],
                                [ rdfs:comment "The `QuantityKind` of the constituent must be `VolumeFraction`." ;
                                    sh:hasValue <http://qudt.org/vocab/quantitykind/VolumeFraction> ;
                                    sh:path ns1:hasQuantityKind ] ] ] ],
        [ rdfs:comment "One of the constituents of a `Water-GlycolSolution` must be `Constituent-Glycol`." ;
            sh:path ns2:composedOf ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class ns2:QuantifiableProperty ;
                    sh:node [ sh:property [ rdfs:comment "One of the constituents of a `Water-GlycolSolution` must be `Constituent-Glycol`." ;
                                    sh:hasValue ns2:Constituent-Glycol ;
                                    sh:path ns2:ofConstituent ],
                                [ rdfs:comment "The `QuantityKind` of the constituent must be `VolumeFraction`." ;
                                    sh:hasValue <http://qudt.org/vocab/quantitykind/VolumeFraction> ;
                                    sh:path ns1:hasQuantityKind ] ] ] ],
        [ rdfs:comment "There must be at least two QuantifiableProperties that characterize the constituents of a `Water-GlycolSolution`." ;
            sh:class ns2:QuantifiableProperty ;
            sh:minCount 2 ;
            sh:path ns2:composedOf ],
        [ rdfs:comment "If the relation `hasFreezingPoint` is used, the object must be a `QuantifiableProperty` with a `QuantityKind` of `Temperature`." ;
            sh:class ns2:QuantifiableProperty ;
            sh:message "The object must be a `QuantifiableProperty` with a `QuantityKind` of `Temperature`." ;
            sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/quantitykind/Temperature> ;
                            sh:path ns1:hasQuantityKind ] ] ;
            sh:path ns2:hasFreezingPoint ] .


        

has freezing point

URI: http://data.ashrae.org/standard223#hasFreezingPoint


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasFreezingPoint> a rdf:Property ;
    rdfs:label "has freezing point" ;
    rdfs:comment "The relation `hasFreezingPoint` is used to associate a freezing point with a glycol solution, but could be used with other Mediums as appropriate. " .


        

Mix-Power and signal

URI: http://data.ashrae.org/standard223#Mix-PowerAndSignal


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Mix-PowerAndSignal> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Mix-PowerAndSignal>,
        sh:NodeShape ;
    rdfs:label "Mix-Power and signal" ;
    rdfs:comment """
:PowerAndSignal Enumerations

| Enumeration |
|:-----------|
| s223:PowerAndSignal-PoE |
""",
        "Mix-Power and signal" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Medium-Mix> .


        

Particulate

URI: http://data.ashrae.org/standard223#Substance-Particulate


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Substance-Particulate> a <http://data.ashrae.org/standard223#Class>,
        <http://data.ashrae.org/standard223#Substance-Particulate>,
        sh:NodeShape ;
    rdfs:label "Particulate" ;
    rdfs:comment """
: Particulate Enumerations

| Enumeration |
|:-----------|
| Particulate-PM1.0 |
| Particulate-PM10.0 |
| Particulate-PM2.5 |
""",
        "This class has enumerated subclasses of particulates in various size ranges." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerationKind-Substance> .


        

ns4:property_value

URI: pub:property_value


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:property_value> ns1:subclauses ( <http://data.ashrae.org/standard223#Property> <http://data.ashrae.org/standard223#ActuatableProperty> <http://data.ashrae.org/standard223#ObservableProperty> <http://data.ashrae.org/standard223#EnumerableProperty> <http://data.ashrae.org/standard223#QuantifiableProperty> <http://data.ashrae.org/standard223#QuantifiableActuatableProperty> <http://data.ashrae.org/standard223#QuantifiableObservableProperty> <http://data.ashrae.org/standard223#EnumeratedObservableProperty> <http://data.ashrae.org/standard223#EnumeratedActuatableProperty> <http://data.ashrae.org/standard223#hasValue> <http://qudt.org/schema/qudt/hasUnit> <http://qudt.org/schema/qudt/hasQuantityKind> <http://data.ashrae.org/standard223#hasAspect> <http://data.ashrae.org/standard223#ofSubstance> <http://data.ashrae.org/standard223#ofMedium> <http://data.ashrae.org/standard223#ofConstituent> <http://data.ashrae.org/standard223#composedOf> <http://data.ashrae.org/standard223#ExternalReference> <http://data.ashrae.org/standard223#hasExternalReference> <http://data.ashrae.org/standard223#hasInternalReference> ) ;
    ns1:title "PROPERTIES AND VALUES" ;
    rdfs:comment "Things have properties, and properties have values." .


        

Property

URI: http://data.ashrae.org/standard223#Property


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Property> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Property" ;
    rdfs:comment """An attribute, quality, or characteristic of a feature of interest.

The `Property` class is the parent of all variations of a `Property`, which are:
`ActuatableProperty` - subclass of `Property` that can be modified by user or machine outside of the model (typically command);
`ObservableProperty` - subclass of `Property` that are observed (typically measures);
`EnumerableProperty` - subclass of `Property` defined by `EnumerationKind`;
`QuantifiableProperty` - subclass of `Property` defined by numerical values.

And their subclass combinations :
`QuantifiableActuatableProperty`,
`QuantifiableObservableProperty`,
`EnumeratedObservableProperty`,
`EnumeratedActuatableProperty`.

A `QuantifiableProperty` (or subClass thereof) must always be associated with a `Unit` and a `QuantityKind`, either explicitly from the `Property`, 
or through the associated Value. If the `Unit` is defined, the SHACL reasoner (if invoked) will figure out and assert the most general `QuantityKind`.

Enumerable properties must be associated with an `EnumerationKind`. Different flavors of properties are shown in Figure 12-1.

![Different flavors of Properties](figures/Figure_12-1_Flavors_of_Properties.svg)

A `Property` instance that is not an instance of one of the subclasses is unconstrained
with respect to its value.
""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Concept> ;
    sh:property [ rdfs:comment "A `Property` must not have both a `hasInternalReference` and a `hasExternalReference` relation." ;
            sh:path <http://data.ashrae.org/standard223#hasInternalReference> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "A `Property` must not have both a `hasInternalReference` and a `hasExternalReference` relation." ;
                    sh:message "s223: {$this} cannot have both a `hasInternalReference` and a `hasExternalReference` relation." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this
WHERE {
$this s223:hasInternalReference ?int .
$this s223:hasExternalReference ?ext .
}
""" ] ],
        [ rdfs:comment "A `Property` must not have both a `hasExternalReference` and a `hasValue` relation." ;
            sh:path <http://data.ashrae.org/standard223#hasValue> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "A `Property` must not have both a `hasExternalReference` and a `hasValue` relation." ;
                    sh:message "s223: {$this} cannot have both a `hasExternalReference` and a `hasValue` relation." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this
WHERE {
$this s223:hasExternalReference ?ext .
$this s223:hasValue ?val .
}
""" ] ],
        [ rdfs:comment "If the relation `hasInternalReference` is present it must associate the `Property` with another `Property`." ;
            sh:class <http://data.ashrae.org/standard223#Property> ;
            sh:message "s223: If the relation `hasInternalReference` is present it must associate the `Property` with another `Property`." ;
            sh:path <http://data.ashrae.org/standard223#hasInternalReference> ],
        [ rdfs:comment "A `Property` must not have both a `hasInternalReference` and a `hasValue` relation." ;
            sh:path <http://data.ashrae.org/standard223#hasInternalReference> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "A `Property` must not have both a `hasInternalReference` and a `hasValue` relation." ;
                    sh:message "s223: {$this} cannot have both a `hasInternalReference` and a `hasValue` relation." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this
WHERE {
$this s223:hasInternalReference ?int .
$this s223:hasValue ?val .
}
""" ] ],
        [ rdfs:comment "A `Property` can use at most one relation `hasValue` if it is required to provide a static value in the model. It is not meant for real-time value (see {s223:hasExternalReference})." ;
            sh:maxCount 1 ;
            sh:message "s223: A `Property` can use at most one relation `hasValue` if it is required to provide a static value in the model. It is not meant for real-time value (see {s223:hasExternalReference})." ;
            sh:path <http://data.ashrae.org/standard223#hasValue> ],
        [ rdfs:comment "A `Property` must not be observed (set) by more than one entity." ;
            sh:maxCount 1 ;
            sh:message "s223: A `Property` must not be observed (set) by more than one entity." ;
            sh:path [ sh:inversePath <http://data.ashrae.org/standard223#observes> ] ],
        [ rdfs:comment "If the relation `hasExternalReference` is present it must associate the `Property` with an `ExternalReference`." ;
            sh:class <http://data.ashrae.org/standard223#ExternalReference> ;
            sh:message "s223: If the relation `hasExternalReference` is present it must associate the `Property` with an `ExternalReference`." ;
            sh:path <http://data.ashrae.org/standard223#hasExternalReference> ],
        [ rdfs:comment "" ;
            sh:path <http://data.ashrae.org/standard223#ofConstituent> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "If an incoming relation `composedOf` exists, then the `Property` must have a declared substance using the relation `ofConstituent`." ;
                    sh:message "s223: `Property` {$this} is referred to by {?something} with s223:composedOf, but the `Property` has no value for s223:ofConstituent." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?something
WHERE {
?something s223:composedOf $this .
FILTER NOT EXISTS {$this s223:ofConstituent ?someSubstance} .
}
""" ] ],
        [ rdfs:comment "If a `Property` has an `ofSubstance` relation, it should also have an `ofMedium` relation." ;
            sh:path <http://data.ashrae.org/standard223#ofSubstance> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "If a `Property` has an `ofSubstance` relation, it should also have an `ofMedium` relation." ;
                    sh:message "s223: Since Property {$this} has an `ofSubstance` relation, it should also have an `ofMedium` relation." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this
WHERE {
$this s223:ofSubstance ?substance .
FILTER NOT EXISTS {$this s223:ofMedium ?medium} .
}
""" ] ],
        [ rdfs:comment "A `Property` can be associated with at most one `Substance-Medium` using the relation `ofMedium`." ;
            sh:class <http://data.ashrae.org/standard223#Substance-Medium> ;
            sh:maxCount 1 ;
            sh:message "s223: A `Property` can be associated with at most one `Substance-Medium` using the relation `ofMedium`." ;
            sh:path <http://data.ashrae.org/standard223#ofMedium> ],
        [ rdfs:comment "If the relation `hasAspect` is present, it must associate the `Property` with an `EnumerationKind`." ;
            sh:class <http://data.ashrae.org/standard223#EnumerationKind> ;
            sh:message "s223: If the relation `hasAspect` is present, it must associate the `Property` with an `EnumerationKind`." ;
            sh:path <http://data.ashrae.org/standard223#hasAspect> ],
        [ rdfs:comment "A `Property` can be associated with at most one `Function` using the inverse relation `hasOutput`." ;
            sh:class <http://data.ashrae.org/standard223#Function> ;
            sh:maxCount 1 ;
            sh:message "s223: A `Property` can be associated with at most one `Function` using the inverse relation `hasOutput`." ;
            sh:path [ sh:inversePath <http://data.ashrae.org/standard223#hasOutput> ] ],
        [ rdfs:comment "A `Property` can be associated with at most one `EnumerationKind-Substance` using the relation `ofSubstance`." ;
            sh:class <http://data.ashrae.org/standard223#EnumerationKind-Substance> ;
            sh:maxCount 1 ;
            sh:message "s223: A `Property` can be associated with at most one `EnumerationKind-Substance` using the relation `ofSubstance`." ;
            sh:path <http://data.ashrae.org/standard223#ofSubstance> ] ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "A `Property` cannot be declared an instance of both an `ActuatableProperty` and an `ObservableProperty`." ;
            sh:message "s223: {$this} cannot be declared an instance of both an `ActuatableProperty` and an `ObservableProperty`." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this
WHERE {
$this a/rdfs:subClassOf* s223:ActuatableProperty .
$this a/rdfs:subClassOf* s223:ObservableProperty .
}
""" ] .


        

Actuatable Property

URI: http://data.ashrae.org/standard223#ActuatableProperty


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ActuatableProperty> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Actuatable Property" ;
    rdfs:comment """The term "actuatable" implies that writing to the `ActuatableProperty` value will directly trigger a physical actuation by either an `Actuator` or `Equipment`. 
  In contrast, the term "observable" (see {s223:ObservableProperty}) implies that reading the `ObservableProperty` value will return the result of a physical observation.""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Property> ;
    sh:property [ rdfs:comment "An `ActuatableProperty` normally is referred to by `Equipment` using the relation `actuatedByProperty`." ;
            sh:class <http://data.ashrae.org/standard223#Equipment> ;
            sh:message "s223: An `ActuatableProperty` normally is referred to by `Equipment` using the relation `actuatedByProperty`." ;
            sh:minCount 1 ;
            sh:path [ sh:inversePath <http://data.ashrae.org/standard223#actuatedByProperty> ] ;
            sh:severity sh:Warning ] .


        

Observable Property

URI: http://data.ashrae.org/standard223#ObservableProperty


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ObservableProperty> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Observable Property" ;
    rdfs:comment """The term "observable" implies that reading the `ObservableProperty` value will return the result of a physical observation, usually by a `Sensor`.  
  In contrast, the term "actuatable" (see {s223:ActuatableProperty}) implies that writing to the `ActuatableProperty` value will directly trigger a physical actuation.""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Property> ;
    sh:property [ rdfs:comment "An `ObservableProperty` normally is referred to by a `Sensor` using the relation `observes`." ;
            sh:class <http://data.ashrae.org/standard223#Sensor> ;
            sh:message "s223: An `ObservableProperty` normally is referred to by a `Sensor` using the relation `observes`." ;
            sh:minCount 1 ;
            sh:path [ sh:inversePath <http://data.ashrae.org/standard223#observes> ] ;
            sh:severity sh:Warning ] .


        

Enumerable Property

URI: http://data.ashrae.org/standard223#EnumerableProperty


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#EnumerableProperty> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Enumerable Property" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#hasEnumerationKind> ) ;
    rdfs:comment "An `EnumerableProperty` is a `Property` with an enumerated (fixed) set of possible values." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Property> ;
    sh:property [ rdfs:comment "Checks for valid enumeration value consistent with the stated `EnumerationKind`." ;
            sh:path <http://data.ashrae.org/standard223#hasValue> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Checks for valid enumeration value consistent with the stated `EnumerationKind`." ;
                    sh:message "s223: {$this} has an enumeration value of {?value} which is not a valid {?kind}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?value ?kind
WHERE {
$this s223:hasValue ?value .
$this s223:hasEnumerationKind ?kind .
FILTER (NOT EXISTS {?value a/rdfs:subClassOf* ?kind}) .
}
""" ] ],
        [ rdfs:comment "An `EnumerableProperty` must be associated with exactly one `EnumerationKind` using the relation `hasEnumerationKind`." ;
            sh:class <http://data.ashrae.org/standard223#EnumerationKind> ;
            sh:maxCount 1 ;
            sh:message "s223: An `EnumerableProperty` must be associated with exactly one `EnumerationKind` using the relation `hasEnumerationKind`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasEnumerationKind> ] .


        

has enumeration kind

URI: http://data.ashrae.org/standard223#hasEnumerationKind


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasEnumerationKind> a rdf:Property ;
    rdfs:label "has enumeration kind" ;
    rdfs:comment "The relation `hasEnumerationKind` is used to associate an `EnumerableProperty` with a class of enumeration values. This is used to, for example, identify what kind of substance is transported along a `Connection` or which day of the week a setpoint is active." .


        

Quantifiable Property

URI: http://data.ashrae.org/standard223#QuantifiableProperty


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#QuantifiableProperty> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Quantifiable Property" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#hasDeadband> <http://data.ashrae.org/standard223#hasSetpoint> <http://data.ashrae.org/standard223#hasThreshold> ) ;
    rdfs:comment "This class is for quantifiable values that describe an object (`System`, `Equipment`, etc.) that are typically static (`hasValue`). That is, they are neither measured nor specified in the course of operations." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Property> ;
    sh:property [ rdfs:comment "This `QuantifiableProperty` and the `Deadband` associated with it have non-commensurate `QuantityKind`s." ;
            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "This `QuantifiableProperty` and the `Deadband` associated with it have non-commensurate `QuantityKind`s." ;
                    sh:message "s223: {$this} uses `QuantityKind` {?pqk} with DimensionVector {?pdv}, while `Deadband` {?deadband} uses `QuantityKind` {?dqk} with DimensionVector {?ddv}. These are non-commensurate" ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?deadband ?pqk ?dqk ?pdv ?ddv
WHERE {
$this qudt:hasQuantityKind ?pqk .
$this s223:hasDeadband ?deadband .
?deadband qudt:hasQuantityKind ?dqk .
?pqk qudt:hasDimensionVector ?pdv .
?dqk qudt:hasDimensionVector ?ddv .
FILTER (?pqk != ?dqk) .
FILTER (?pdv != ?ddv) .
}
""" ] ],
        [ rdfs:comment "This `QuantifiableProperty` and the Setpoint associated with it have non-commensurate `QuantityKind`s." ;
            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "This `QuantifiableProperty` and the Setpoint associated with it have non-commensurate `QuantityKind`s." ;
                    sh:message "s223: {$this} uses `QuantityKind` {?pqk} with DimensionVector {?pdv}, while Setpoint {?setpoint} uses `QuantityKind` {?sqk} with DimensionVector {?sdv}. These are non-commensurate" ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?setpoint ?pqk ?sqk ?pdv ?sdv
WHERE {
$this qudt:hasQuantityKind ?pqk .
$this s223:hasSetpoint ?setpoint .
?setpoint qudt:hasQuantityKind ?sqk .
?pqk qudt:hasDimensionVector ?pdv .
?sqk qudt:hasDimensionVector ?sdv .
FILTER (?pqk != ?sqk) .
FILTER (?pdv != ?sdv) .
}
""" ] ],
        [ rdfs:comment "This `QuantifiableProperty` and the associated threshold use non-commensurate `Unit`s." ;
            sh:path <http://qudt.org/schema/qudt/hasUnit> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "This `QuantifiableProperty` and the associated threshold use non-commensurate `Unit`s." ;
                    sh:message "s223: {$this} uses `Unit` {?punit}, while threshold {?threshold} uses `Unit` {?tunit}. These are non-commensurate." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?threshold ?punit ?tunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasThreshold ?threshold .
?threshold qudt:hasUnit ?tunit .
?punit qudt:hasDimensionVector ?pdv .
?tunit qudt:hasDimensionVector ?tdv .
FILTER (?punit != ?tunit) .
FILTER (?pdv != ?tdv) .
}
""" ] ],
        [ rdfs:comment "This `QuantifiableProperty` cannot have a value without a `Unit`." ;
            sh:path <http://data.ashrae.org/standard223#hasValue> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "This `QuantifiableProperty` cannot have a value without a `Unit`." ;
                    sh:message "s223: {$this} referenced by {?subject} has a value of {?v} but does not specify a `Unit`." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?v ?subject
WHERE {
$this s223:hasValue ?v .
FILTER NOT EXISTS {$this qudt:hasUnit ?u} .
?subject ?p $this .
}
""" ] ],
        [ rdfs:comment "A `QuantifiableProperty` should use `s223:hasValue` instead of `qudt:value`." ;
            sh:maxCount 0 ;
            sh:message "s223: A `QuantifiableProperty` should use `s223:hasValue` instead of `qudt:value`." ;
            sh:path <http://qudt.org/schema/qudt/value> ],
        [ rdfs:comment "A `QuantifiableProperty` can be associated with a`QuantifiableProperty` using the relation `hasThreshold`." ;
            sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
            sh:message "s223: A `QuantifiableProperty` can be associated with a`QuantifiableProperty` using the relation `hasThreshold`." ;
            sh:path <http://data.ashrae.org/standard223#hasThreshold> ],
        [ rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the `Deadband` associated with it." ;
            sh:path <http://qudt.org/schema/qudt/hasUnit> ;
            sh:severity sh:Info ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the `Deadband` associated with it." ;
                    sh:message "s223: {$this} uses `Unit` {?punit}, while `Deadband` {?deadband} uses `Unit` {?dunit}. Be careful." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?deadband ?punit ?dunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasDeadband ?deadband .
?deadband qudt:hasUnit ?dunit .
?punit qudt:hasDimensionVector ?pdv .
?dunit qudt:hasDimensionVector ?ddv .
FILTER (?punit != ?dunit) .
FILTER (?pdv = ?ddv) .
}
""" ] ],
        [ rdfs:comment "A `QuantifiableProperty` should use `s223:hasValue` instead of `qudt:value`." ;
            sh:maxCount 0 ;
            sh:message "s223: A `QuantifiableProperty` should use `s223:hasValue` instead of `qudt:value`." ;
            sh:path <http://qudt.org/schema/qudt/value> ],
        [ rdfs:comment "A `QuantifiableProperty` can be associated with at most one `Unit` using the relation `hasUnit`." ;
            sh:class <http://qudt.org/schema/qudt/Unit> ;
            sh:maxCount 1 ;
            sh:message "s223: A `QuantifiableProperty` can be associated with at most one `Unit` using the relation `hasUnit`." ;
            sh:path <http://qudt.org/schema/qudt/hasUnit> ],
        [ rdfs:comment """A `QuantifiableProperty` can be associated with an optional Boolean flag using the relation isDeltaQuantity. 
If the relation isDeltaQuantity has a value of true, the associated value should be interpreted as a difference reading, such as a 
temperature difference. This is needed to distinguish between a temperature reading and a temperature difference reading, which
affects unit conversion calculations.""" ;
            sh:datatype xsd:boolean ;
            sh:maxCount 1 ;
            sh:message """A `QuantifiableProperty` can be associated with an optional Boolean flag using the relation isDeltaQuantity. 
If the relation isDeltaQuantity has a value of true, the associated value should be interpreted as a difference reading, such as a 
temperature difference. This is needed to distinguish between a temperature reading and a temperature difference reading, which
affects unit conversion calculations.""" ;
            sh:path <http://qudt.org/schema/qudt/isDeltaQuantity> ],
        [ rdfs:comment "This `QuantifiableProperty` and the threshold associated with it have non-commensurate `QuantityKind`s." ;
            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "This `QuantifiableProperty` and the threshold associated with it have non-commensurate `QuantityKind`s." ;
                    sh:message "s223: {$this} uses `QuantityKind` {?pqk} with DimensionVector {?pdv}, while threshold {?threshold} uses `QuantityKind` {?tqk} with DimensionVector {?tdv}. These are non-commensurate" ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?threshold ?pqk ?sqk ?pdv ?sdv
WHERE {
$this qudt:hasQuantityKind ?pqk .
$this s223:hasThreshold ?threshold .
?threshold qudt:hasQuantityKind ?tqk .
?pqk qudt:hasDimensionVector ?pdv .
?tqk qudt:hasDimensionVector ?tdv .
FILTER (?pqk != ?tqk) .
FILTER (?pdv != ?tdv) .
}
""" ] ],
        [ rdfs:comment """Normally, a `QuantifiableProperty` is associated with a static decimal value using `hasValue`, along with a single 
`Unit` and `QuantityKind`. However, in some cases, a `QuantifiableProperty` may instead be associated with a `QuantityValue` using the relation 
`quantityValue`. This allows the `QuantityValue` to express multiple equivalent combinations of `Unit` and value.""" ;
            sh:class <http://qudt.org/schema/qudt/QuantityValue> ;
            sh:message """Normally, a `QuantifiableProperty` is associated with a static decimal value using `hasValue`, along with a single 
`Unit` and `QuantityKind`. However, in some cases, a `QuantifiableProperty` may instead be associated with a `QuantityValue` using the relation 
`quantityValue`. This allows the `QuantityValue` to express multiple equivalent combinations of `Unit` and value.""" ;
            sh:path <http://qudt.org/schema/qudt/quantityValue> ],
        [ rdfs:comment "A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasSetpoint`." ;
            sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
            sh:message "s223: A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasSetpoint`." ;
            sh:path <http://data.ashrae.org/standard223#hasSetpoint> ],
        [ rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the setpoint associated with it." ;
            sh:path <http://qudt.org/schema/qudt/hasUnit> ;
            sh:severity sh:Info ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the setpoint associated with it." ;
                    sh:message "s223: {$this} uses `Unit` {?punit}, while setpoint {?setpoint} uses `Unit` {?sunit}. Be careful." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?setpoint ?punit ?sunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasSetpoint ?setpoint .
?setpoint qudt:hasUnit ?sunit .
?punit qudt:hasDimensionVector ?pdv .
?sunit qudt:hasDimensionVector ?sdv .
FILTER (?punit != ?sunit) .
FILTER (?pdv = ?sdv) .
}
""" ] ],
        [ rdfs:comment "A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasDeadband`." ;
            sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
            sh:message "s223: A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasDeadband`." ;
            sh:path <http://data.ashrae.org/standard223#hasDeadband> ],
        [ rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the threshold associated with it." ;
            sh:path <http://qudt.org/schema/qudt/hasUnit> ;
            sh:severity sh:Info ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the threshold associated with it." ;
                    sh:message "s223: {$this} uses `Unit` {?punit}, while threshold {?threshold} uses `Unit` {?tunit}. Be careful." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?threshold ?punit ?tunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasThreshold ?threshold .
?threshold qudt:hasUnit ?tunit .
?punit qudt:hasDimensionVector ?pdv .
?tunit qudt:hasDimensionVector ?tdv .
FILTER (?punit != ?tunit) .
FILTER (?pdv = ?tdv) .
}
""" ] ],
        [ rdfs:comment "A `QuantifiableProperty` must be associated with a `QuantityKind` using the relation `hasQuantityKind`." ;
            sh:class <http://qudt.org/schema/qudt/QuantityKind> ;
            sh:maxCount 1 ;
            sh:message "s223: A `QuantifiableProperty` must be associated with a `QuantityKind` using the relation `hasQuantityKind`." ;
            sh:minCount 1 ;
            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ],
        [ rdfs:comment "This `QuantifiableProperty` and the associated setpoint use non-commensurate `Unit`s." ;
            sh:path <http://qudt.org/schema/qudt/hasUnit> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "This `QuantifiableProperty` and the associated setpoint use non-commensurate `Unit`s." ;
                    sh:message "s223: {$this} uses `Unit` {?punit}, while setpoint {?setpoint} uses `Unit` {?sunit}. These are non-commensurate." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?setpoint ?punit ?sunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasSetpoint ?setpoint .
?setpoint qudt:hasUnit ?sunit .
?punit qudt:hasDimensionVector ?pdv .
?sunit qudt:hasDimensionVector ?sdv .
FILTER (?punit != ?sunit) .
FILTER (?pdv != ?sdv) .
}
""" ] ],
        [ rdfs:comment "This `QuantifiableProperty` and the associated `Deadband` use non-commensurate `Unit`s." ;
            sh:path <http://qudt.org/schema/qudt/hasUnit> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "This `QuantifiableProperty` and the associated `Deadband` use non-commensurate `Unit`s." ;
                    sh:message "s223: {$this} uses `Unit` {?punit}, while `Deadband` {?deadband} uses `Unit` {?dunit}. These are non-commensurate." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?deadband ?punit ?dunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasDeadband ?deadband .
?deadband qudt:hasUnit ?dunit .
?punit qudt:hasDimensionVector ?pdv .
?dunit qudt:hasDimensionVector ?ddv .
FILTER (?punit != ?dunit) .
FILTER (?pdv != ?ddv) .
}
""" ] ] ;
    sh:rule [ a sh:SPARQLRule ;
            rdfs:comment "Infer the `hasQuantityKind` relation if it is unambiguous." ;
            sh:construct """
CONSTRUCT {
$this qudt:hasQuantityKind ?uniqueqk
}
WHERE {
{
SELECT $this (COUNT (DISTINCT (?qk)) AS ?count)
WHERE {
FILTER (NOT EXISTS {$this qudt:hasQuantityKind ?something}) .
$this qudt:hasUnit/qudt:hasQuantityKind ?qk .
}
GROUP BY $this
}
FILTER (?count = 1)
$this qudt:hasUnit/qudt:hasQuantityKind ?uniqueqk .
}
""" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> ] ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Checks for consistent dimension vectors for a `QuantityKind` and the `Unit`" ;
            sh:message "s223: Inconsistent dimensionalities among the `Property`'s `Unit` and `Property`'s `QuantityKind`" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this
   WHERE 
{
      $this qudt:hasQuantityKind/qudt:hasDimensionVector ?qkdv1 .
      $this qudt:hasUnit/qudt:hasDimensionVector ?qkdv2 .
FILTER (?qkdv1 != ?qkdv2) .
}
""" ] .


        

has deadband

URI: http://data.ashrae.org/standard223#hasDeadband


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasDeadband> a rdf:Property ;
    rdfs:label "has deadband" ;
    rdfs:comment "This relation binds a control setpoint to the `QuantifiableProperty` indicating the range of values within which a sensed variable can vary without indictating a condition has changed." .


        

has setpoint

URI: http://data.ashrae.org/standard223#hasSetpoint


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasSetpoint> a rdf:Property ;
    rdfs:label "has setpoint" ;
    rdfs:comment "This relation binds a control setpoint to the `QuantifiableProperty` indicating the desired value which the control process is trying to maintain." .


        

has threshold

URI: http://data.ashrae.org/standard223#hasThreshold


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasThreshold> a rdf:Property ;
    rdfs:label "has threshold" ;
    rdfs:comment "This relation binds a threshold to the `QuantifiableProperty` indicating a specific value at which an action may be taken, distinguished from an offset or a range." .


        

Quantifiable Actuatable Property

URI: http://data.ashrae.org/standard223#QuantifiableActuatableProperty


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#QuantifiableActuatableProperty> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Quantifiable Actuatable Property" ;
    rdfs:comment "This class is for instances of `QuantifiableProperty` for which numerical values are specified to be modifiable by a user or a machine outside of the model, like a setpoint." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#ActuatableProperty>,
        <http://data.ashrae.org/standard223#QuantifiableProperty> .


        

Quantifiable Observable Property

URI: http://data.ashrae.org/standard223#QuantifiableObservableProperty


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#QuantifiableObservableProperty> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Quantifiable Observable Property" ;
    rdfs:comment "This class is for instances of `QuantifiableProperty` for which numerical values are observed, like a temperature reading or a voltage measure." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#ObservableProperty>,
        <http://data.ashrae.org/standard223#QuantifiableProperty> ;
    sh:property [ rdfs:comment "A `QuantifiableObservableProperty` can be associated with zero or more `QuantifiableProperty`(s) indicating the desired value(s) which the control process is trying to maintain using the relation `hasSetpoint`." ;
            sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
            sh:message "s223: A `QuantifiableObservableProperty` can be associated with zero or more `QuantifiableProperty`(s) indicating the desired value(s) which the control process is trying to maintain using the relation `hasSetpoint`." ;
            sh:path <http://data.ashrae.org/standard223#hasSetpoint> ] .


        

Enumerated observable property

URI: http://data.ashrae.org/standard223#EnumeratedObservableProperty


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumeratedObservableProperty> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Enumerated observable property" ;
    rdfs:comment "An `EnumeratedObservableProperty` is a `Property` with an enumerated (fixed) set of possible values that cannot be changed (can only be observed)." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EnumerableProperty>,
        <http://data.ashrae.org/standard223#ObservableProperty> .


        

Enumerated actuatable property

URI: http://data.ashrae.org/standard223#EnumeratedActuatableProperty


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#EnumeratedActuatableProperty> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Enumerated actuatable property" ;
    rdfs:comment "An `EnumeratedActuatableProperty` is a `Property` with an enumerated (fixed) set of possible values that can be changed (actuated)." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#ActuatableProperty>,
        <http://data.ashrae.org/standard223#EnumerableProperty> .


        

hasValue

URI: http://data.ashrae.org/standard223#hasValue


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasValue> a rdf:Property ;
    rdfs:label "hasValue" ;
    rdfs:comment "`hasValue` is used to contain a fixed value that is part of a 223 model, rather than a computed, measured, or externally derived variable." .


        

ns1:hasUnit

URI: http://qudt.org/schema/qudt/hasUnit


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://qudt.org/schema/qudt/hasUnit> rdfs:comment "A reference to the unit of measure of a `QuantifiableProperty` of interest." .


        

ns1:hasQuantityKind

URI: http://qudt.org/schema/qudt/hasQuantityKind


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://qudt.org/schema/qudt/hasQuantityKind> rdfs:comment "A reference to the `QuantityKind` of a `QuantifiableProperty` of interest, e.g. quantitykind:Temperature." .


        

has aspect

URI: http://data.ashrae.org/standard223#hasAspect


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasAspect> a rdf:Property ;
    rdfs:label "has aspect" ;
    rdfs:comment "`hasAspect` is used to establish the context of a `Property`. The value must be an instance of `EnumerationKind`. For example, if a `Property` has a Temperature value of 45.3, the `hasAspect` relation is used to state what that represents, such as a Temperature limit during working hours, etc. A `Property` can have any number of `hasAspect` relations, as needed to establish the context." .


        

of substance

URI: http://data.ashrae.org/standard223#ofSubstance


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#ofSubstance> a rdf:Property ;
    rdfs:label "of substance" ;
    rdfs:comment "The `ofSubstance` relation is used on a `Property` being observed by a sensor. It links the `Property` to a Substance it characterizes within a specific Medium. For instance, to denote the concentration of a Substance in a Medium, `ofSubstance` is used. Typically, there's also an `ofMedium` relation between the observed `Property` and the Medium. For example, to represent the concentration of CO2 in air, we use `ofSubstance` to relate to CO2 and `ofMedium` to relate to air. The term `ofSubstance` is broad enough to include situations where a sensor is used to detect constituents that should not be present in a medium, such as ammonia in air. Therefore, `ofSubstance` is used to indicate the substance of interest, while `ofConstituent` would indicate a constituent that is normally present in the composition of the mix." .


        

of medium

URI: http://data.ashrae.org/standard223#ofMedium


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#ofMedium> a rdf:Property ;
    rdfs:label "of medium" ;
    rdfs:comment "The relation `ofMedium` is used to associate a `Property` with the specific Medium it describes. A `Property` corresponding to the temperature of a medium would be associated with this medium using the relation `ofMedium`." .


        

of constituent

URI: http://data.ashrae.org/standard223#ofConstituent


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#ofConstituent> a rdf:Property ;
    rdfs:label "of constituent" ;
    rdfs:comment "The relation `ofConstituent` is used to associate a `Property` that characterizes a medium mix with one of the constituents of that mix. (ex. `Fluid-Water` `composedOf` `Property` `ofConstituent` `Constituent-H2O`." .


        

composed of

URI: http://data.ashrae.org/standard223#composedOf


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#composedOf> a rdf:Property ;
    rdfs:label "composed of" ;
    rdfs:comment "The relation `composedOf` is used to indicate what substances constitute a material. Allowable values are instances of `Property` that in turn identify constituents defined in `Medium-Constituent` (see {s223:Medium-Constituent}) via the relation `ofConstituent`." .


        

ExternalReference

URI: http://data.ashrae.org/standard223#ExternalReference


@prefix ns1: <http://data.ashrae.org/standard223#> .
@prefix ns2: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns1:ExternalReference a ns1:Class,
        sh:NodeShape ;
    rdfs:label "ExternalReference" ;
    ns1:abstract true ;
    ns2:subclauses ( ns1:BACnetExternalReference ) ;
    rdfs:comment "`ExternalReference` is an abstract class that represents a thing that contains API or protocol parameter values necessary to associate a `Property` with a value." ;
    rdfs:subClassOf ns1:Concept .


        

BACnetExternalReference

URI: http://data.ashrae.org/standard223#BACnetExternalReference


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#BACnetExternalReference> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "BACnetExternalReference" ;
    ns1:subclauses ( <http://data.ashrae.org/bacnet/2020#device-name> <http://data.ashrae.org/bacnet/2020#device-identifier> <http://data.ashrae.org/bacnet/2020#object-name> <http://data.ashrae.org/bacnet/2020#object-identifier> <http://data.ashrae.org/bacnet/2020#property-identifier> <http://data.ashrae.org/bacnet/2020#property-array-index> <http://data.ashrae.org/bacnet/2020#priority-for-writing> ) ;
    rdfs:comment "`BACnetExternalReference` is a subclass of `ExternalReference` that contains BACnet protocol parameter values necessary to associate a `Property` with a value." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#ExternalReference> ;
    sh:property [ a sh:PropertyShape ;
            rdfs:comment "If the relation `object-name` is present it associates the external reference with the BACnet object having the specific object name." ;
            sh:datatype xsd:string ;
            sh:maxCount 1 ;
            sh:minCount 0 ;
            sh:path <http://data.ashrae.org/bacnet/2020#object-name> ],
        [ a sh:PropertyShape ;
            rdfs:comment "If the relation `priority-for-writing` is present it provides the priority for writing values to the object." ;
            sh:datatype xsd:nonNegativeInteger ;
            sh:maxCount 1 ;
            sh:minCount 0 ;
            sh:path <http://data.ashrae.org/bacnet/2020#priority-for-writing> ],
        [ a sh:PropertyShape ;
            rdfs:comment "If the relation `property-array-index` is present it provides the index for reading items from a property that is an array." ;
            sh:datatype xsd:nonNegativeInteger ;
            sh:maxCount 1 ;
            sh:minCount 0 ;
            sh:path <http://data.ashrae.org/bacnet/2020#property-array-index> ],
        [ a sh:PropertyShape ;
            rdfs:comment "If the relation `object-identifier` is present it associates the external reference with the BACnet object having the specific object identifier." ;
            sh:datatype xsd:string ;
            sh:maxCount 1 ;
            sh:minCount 0 ;
            sh:path <http://data.ashrae.org/bacnet/2020#object-identifier> ;
            sh:pattern "^[A-Za-z0-9-]+,[1-9][0-9]*$" ],
        [ a sh:PropertyShape ;
            rdfs:comment "If the relation `device-name` is present it associates the external reference with a BACnet device having the specific device name." ;
            sh:datatype xsd:string ;
            sh:maxCount 1 ;
            sh:minCount 0 ;
            sh:path <http://data.ashrae.org/bacnet/2020#device-name> ],
        [ a sh:PropertyShape ;
            rdfs:comment "If the relation `property-identifier` is present it is either a decimal number or exactly equal to the ASHRAE 135-2020 Clause 21 identifier text of BACnetPropertyIdentifier. If it is omitted, it defaults to \"present-value\" except for BACnet File objects, where absence of `property-identifier` refers to the entire content of the file accessed with Stream Access." ;
            sh:datatype xsd:string ;
            sh:maxCount 1 ;
            sh:minCount 0 ;
            sh:path <http://data.ashrae.org/bacnet/2020#property-identifier> ],
        [ a sh:PropertyShape ;
            rdfs:comment "If the relation `device-identifier` is present it associates the external reference with a BACnet device having the specific device identifier." ;
            sh:datatype xsd:string ;
            sh:maxCount 1 ;
            sh:minCount 0 ;
            sh:path <http://data.ashrae.org/bacnet/2020#device-identifier> ;
            sh:pattern "^[A-Za-z0-9-]+,[1-9][0-9]*$" ] .


        

Device Name

URI: http://data.ashrae.org/bacnet/2020#device-name


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/bacnet/2020#device-name> a rdf:Property ;
    rdfs:label "Device Name" ;
    rdfs:comment "The name of the BACnet device being referenced, more formally the Object_Name property of the device object within the BACnet device.  See ASHRAE 135-2020 Clause 12.11.2." .


        

Device Identifier

URI: http://data.ashrae.org/bacnet/2020#device-identifier


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/bacnet/2020#device-identifier> a rdf:Property ;
    rdfs:label "Device Identifier" ;
    rdfs:comment "The Object_Identifier property of the device object within the BACnet device.  See ASHRAE 135-2020 Clause 12.11.1." .


        

Object Name

URI: http://data.ashrae.org/bacnet/2020#object-name


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/bacnet/2020#object-name> a rdf:Property ;
    rdfs:label "Object Name" ;
    rdfs:comment "The Object_Name property of the object being referenced.  For example, for the object name of an Analog Value Object, see ASHRAE 135-2020 Clause 12.4.2." .


        

object-identifier

URI: http://data.ashrae.org/bacnet/2020#object-identifier


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/bacnet/2020#object-identifier> a rdf:Property ;
    rdfs:label "object-identifier" ;
    rdfs:comment "The Object_Identifier property of the object being referenced.  For example, for the object identifier of an Analog Value Object, see ASHRAE 135-2020 Clause 12.4.1." .


        

Property Identifier

URI: http://data.ashrae.org/bacnet/2020#property-identifier


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/bacnet/2020#property-identifier> a rdf:Property ;
    rdfs:label "Property Identifier" ;
    rdfs:comment "The Object_Identifier property of the object being referenced.  For example, for the object identifier of an Analog Value Object, see ASHRAE 135-2020 Clause 12.4.1." .


        

Property Array Index

URI: http://data.ashrae.org/bacnet/2020#property-array-index


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/bacnet/2020#property-array-index> a rdf:Property ;
    rdfs:label "Property Array Index" ;
    rdfs:comment """If the property identified is of datatype array, this optional property of type Unsigned shall indicate the array index of
the element of the property referenced by the ReadProperty service or the Read Access Specification of the ReadPropertyMultiple service. If the bacnet:property-array-index is omitted, this shall mean that the entire
array shall be referenced.  See ASHRAE 135-2020 Clause 15.5.1.1.3 and Clause 15.7.1.1.1.""" .


        

Priority for Writing

URI: http://data.ashrae.org/bacnet/2020#priority-for-writing


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/bacnet/2020#priority-for-writing> a rdf:Property ;
    rdfs:label "Priority for Writing" ;
    rdfs:comment """This parameter shall be an integer in the range 1..16, which indicates the priority assigned to the WriteProperty service. If an attempt
is made to write to a commandable property without specifying the bacnet:priority-for-writing, a default priority of 16 (the lowest priority) shall
be assumed. If an attempt is made to write to a property that is not commandable with a specified priority, the priority shall be
ignored.  See ASHRAE 135-2020 Clause 15.9.1.1.5.""" .


        

has external reference

URI: http://data.ashrae.org/standard223#hasExternalReference


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasExternalReference> a rdf:Property ;
    rdfs:label "has external reference" ;
    rdfs:comment "The relation `hasExternalReference` is used to relate a `Property` to an external telemetry source." .


        

has internal reference

URI: http://data.ashrae.org/standard223#hasInternalReference


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://data.ashrae.org/standard223#hasInternalReference> a rdf:Property ;
    rdfs:label "has internal reference" ;
    rdfs:comment """The relation `hasInternalReference` is used to relate a `Property` to another candidate equivalent `Property`. For example, 
a `Property` that represents a `Zone` temperature could have one or more `hasInternalReference` relations to Properties that are measurements by 
different sensors.""" .


        

ns4:reference-equipment-models

URI: pub:reference-equipment-models


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:reference-equipment-models> ns1:subclauses ( <http://data.ashrae.org/standard223#AirHandlingUnit> <http://data.ashrae.org/standard223#AirHeatExchanger> <http://data.ashrae.org/standard223#Battery> <http://data.ashrae.org/standard223#Boiler> <http://data.ashrae.org/standard223#ChilledBeam> <http://data.ashrae.org/standard223#Chiller> <http://data.ashrae.org/standard223#Coil> <http://data.ashrae.org/standard223#Compressor> <http://data.ashrae.org/standard223#CoolingTower> <http://data.ashrae.org/standard223#Damper> <http://data.ashrae.org/standard223#Door> <http://data.ashrae.org/standard223#ElectricBreaker> <http://data.ashrae.org/standard223#ElectricMeter> <http://data.ashrae.org/standard223#ElectricOutlet> <http://data.ashrae.org/standard223#ElectricResistanceElement> <http://data.ashrae.org/standard223#ElectricTransformer> <http://data.ashrae.org/standard223#EthernetSwitch> <http://data.ashrae.org/standard223#Fan> <http://data.ashrae.org/standard223#FanCoilUnit> <http://data.ashrae.org/standard223#Filter> <http://data.ashrae.org/standard223#FumeHood> <http://data.ashrae.org/standard223#Furnace> <http://data.ashrae.org/standard223#Generator> <http://data.ashrae.org/standard223#HeatPump> <http://data.ashrae.org/standard223#Humidifier> <http://data.ashrae.org/standard223#Humidistat> <http://data.ashrae.org/standard223#HydronicHeatExchanger> <http://data.ashrae.org/standard223#Inverter> <http://data.ashrae.org/standard223#Motor> <http://data.ashrae.org/standard223#Luminaire> <http://data.ashrae.org/standard223#PhotovoltaicModule> <http://data.ashrae.org/standard223#Pump> <http://data.ashrae.org/standard223#RadiantHeater> <http://data.ashrae.org/standard223#Radiator> <http://data.ashrae.org/standard223#SolarThermalCollector> <http://data.ashrae.org/standard223#TerminalUnit> <http://data.ashrae.org/standard223#ThermalEnergyStorageUnit> <http://data.ashrae.org/standard223#Thermostat> <http://data.ashrae.org/standard223#Turbine> <http://data.ashrae.org/standard223#Valve> <http://data.ashrae.org/standard223#VariableFrequencyDrive> <http://data.ashrae.org/standard223#Window> <http://data.ashrae.org/standard223#WindowShade> ) ;
    ns1:title "REFERENCE FOR EQUIPMENT AND SYSTEMS" ;
    rdfs:comment " This clause contains component model templates for commonly found equipment in building." .


        

Air handling unit

URI: http://data.ashrae.org/standard223#AirHandlingUnit


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#AirHandlingUnit> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Air handling unit" ;
    rdfs:comment "An assembly consisting of a fan or fans and other necessary equipment to perform one or more of the following functions: circulating, filtration, heating, cooling, heat recovery, humidifying, dehumidifying, and mixing of air." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "An `AirHandlingUnit` shall have at least one inlet using the medium Air." ;
            sh:message "s223: An `AirHandlingUnit` shall have at least one inlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "An `AirHandlingUnit` shall have at least one outlet using the medium Air." ;
            sh:message "s223: An `AirHandlingUnit` shall have at least one outlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Air heat exchanger

URI: http://data.ashrae.org/standard223#AirHeatExchanger


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#AirHeatExchanger> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Air heat exchanger" ;
    rdfs:comment """A component intended to transfer heat from one air stream to another while keeping the two media separate. The
  `AirHeatExchanger` class does not represent the physical characteristics of a heat exchanger design. It represents only the heat
  transfer functionality.""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "An `AirHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
            sh:message "s223: An `AirHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                    sh:message "s223: An `AirHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
                    sh:qualifiedMaxCount 0 ] ],
        [ rdfs:comment "An `AirHeatExchanger` shall have at least two air inlets, each paired with an outlet." ;
            sh:message "s223: An `AirHeatExchanger` shall have at least two air inlets, each paired with an outlet." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 2 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                                    sh:minCount 1 ;
                                    sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> ],
                                [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "An `AirHeatExchanger` shall have at least two air outlets, each paired with an inlet." ;
            sh:message "s223: An `AirHeatExchanger` shall have at least two air outlets, each paired with an inlet." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 2 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                                    sh:minCount 1 ;
                                    sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> ],
                                [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Battery

URI: http://data.ashrae.org/standard223#Battery


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Battery> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Battery" ;
    rdfs:comment "A container consisting of one or more cells, in which chemical energy is converted into electricity and used as a source of power." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> .


        

Boiler

URI: http://data.ashrae.org/standard223#Boiler


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Boiler> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Boiler" ;
    rdfs:comment "A closed, pressure vessel that uses fuel or electricity for heating water or other fluids to supply steam or hot water for heating, humidification, or other applications." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Boiler` shall have at least one outlet using the medium Water." ;
            sh:message "s223: A `Boiler` shall have at least one outlet using the medium Water." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `Boiler` shall have at least one inlet using the medium Water." ;
            sh:message "s223: A `Boiler` shall have at least one inlet using the medium Water." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Chilled beam

URI: http://data.ashrae.org/standard223#ChilledBeam


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ChilledBeam> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Chilled beam" ;
    rdfs:comment "A structure with a colder surface temperature where air passes through, and air movement is induced in the room to achieve cooling. Cooling medium is generally water." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `ChilledBeam` shall have at least one inlet using the medium Water." ;
            sh:message "s223: A `ChilledBeam` shall have at least one inlet using the medium Water." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `ChilledBeam` shall have at least one outlet using the medium Water." ;
            sh:message "s223: A `ChilledBeam` shall have at least one outlet using the medium Water." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `ChilledBeam` shall have at least one bidirectional connection point using the medium Air." ;
            sh:message "s223: A `ChilledBeam` shall have at least one bidirectional connection point using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `ChilledBeam` must be associated with the `Role-Cooling` using the relation `hasRole`" ;
            sh:message "s223: A `ChilledBeam` must be associated with the `Role-Cooling` using the relation `hasRole`" ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasRole> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Role-Cooling> ] ] ;
    sh:rule [ a sh:TripleRule ;
            rdfs:comment "A Chilled Beam must always have the role `Role-Cooling`" ;
            sh:object <http://data.ashrae.org/standard223#Role-Cooling> ;
            sh:predicate <http://data.ashrae.org/standard223#hasRole> ;
            sh:subject sh:this ] .


        

Chiller

URI: http://data.ashrae.org/standard223#Chiller


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Chiller> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Chiller" ;
    rdfs:comment "A refrigerating machine used to transfer heat from fluids." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Chiller` shall have at least one outlet using the medium Water." ;
            sh:message "s223: A `Chiller` shall have at least one outlet using the medium Water." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `Chiller` shall have at least one inlet using the medium Water." ;
            sh:message "s223: A `Chiller` shall have at least one inlet using the medium Water." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Coil

URI: http://data.ashrae.org/standard223#Coil


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Coil> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Coil" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#CoolingCoil> <http://data.ashrae.org/standard223#HeatingCoil> ) ;
    rdfs:comment """
    A `Coil` is a component that represents a cooling or heating element made of a pipe or tube 
    that may or may not be finned and formed into a helical or serpentine shape. The physical 
    characteristics of the coil are not captured in the model.

    A `Coil` must conform to exactly one of the following patterns:

    **Pattern 1:**
    - The `Coil` has exactly two inlet connection points using the medium `Mix-Fluid`, with exactly one being `Fluid-Air`.
    - The `Coil` has exactly two outlet connection points using the medium `Mix-Fluid`, with exactly one being `Fluid-Air`.

    **Pattern 2:**
    - The Coil has exactly one inlet connection point using the medium `Mix-Fluid`.
    - The Coil has exactly one outlet connection point using the medium `Mix-Fluid`.
    - The Coil has one or two bidirectional connection points using the medium `Mix-Fluid` or `Medium-ThermalContact`.

    **Pattern 3:**
    - The Coil has exactly three bidirectional connection points using the medium `Mix-Fluid` or `Medium-ThermalContact`.
  """ ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:message "s223: A `Coil` shall fit one of the following patterns of `ConnectionPoint`s: 1: Two inlets and two outlets using the medium `Mix-Fluid`. 2: One inlet and one outlet using the medium `Mix-Fluid`, and one or two bidirectionals using the medium `Mix-Fluid` or `Medium-ThermalContact`. 3: Three bidirectionals using the medium `Mix-Fluid` or `Medium-ThermalContact`." ;
    sh:xone ( [ sh:property [ rdfs:comment "Pattern 1: For one of the two inlets the Fluid is Air." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 1 ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
                    [ rdfs:comment "Pattern 1: For one of the two outlets the Fluid is Air." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 1 ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
                    [ rdfs:comment "Pattern 1: A `Coil` shall have two inlets using the medium Fluid." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 2 ;
                        sh:qualifiedMinCount 2 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
                    [ rdfs:comment "Pattern 1: A `Coil` shall have two outlets using the medium Fluid." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 2 ;
                        sh:qualifiedMinCount 2 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] ] [ sh:property [ rdfs:comment "Pattern 2: A `Coil` shall have one inlet using the medium Fluid." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 1 ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
                    [ rdfs:comment "Pattern 2: A `Coil` shall have one outlet using the medium Fluid." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 1 ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
                    [ rdfs:comment "Pattern 2: A `Coil` shall have one or two bidirectionals using the medium Fluid or ThermalContact." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 2 ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                                sh:node [ sh:property [ sh:or ( [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ] [ sh:class <http://data.ashrae.org/standard223#Medium-ThermalContact> ] ) ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
                        sh:qualifiedValueShapesDisjoint true ] ] [ sh:property [ rdfs:comment "Pattern 3: A `Coil` shall have three bidirectionals using the medium Fluid or ThermalContact." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 3 ;
                        sh:qualifiedMinCount 3 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                                sh:node [ sh:property [ sh:or ( [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ] [ sh:class <http://data.ashrae.org/standard223#Medium-ThermalContact> ] ) ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
                        sh:qualifiedValueShapesDisjoint true ] ] ) .


        

Cooling coil

URI: http://data.ashrae.org/standard223#CoolingCoil


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#CoolingCoil> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Cooling coil" ;
    rdfs:comment "A subclass of `Coil` that is specifically used for coolinig air. " ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Coil> ;
    sh:property [ rdfs:comment "A cooling coil must be related to the role '`Role-Cooling`' using the relation '`hasRole`'." ;
            sh:hasValue <http://data.ashrae.org/standard223#Role-Cooling> ;
            sh:message "s223: A cooling coil must be related to the role '`Role-Cooling`' using the relation '`hasRole`'." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasRole> ] ;
    sh:rule [ a sh:TripleRule ;
            rdfs:comment "Cooling coils must always have the role `Role-Cooling`" ;
            sh:object <http://data.ashrae.org/standard223#Role-Cooling> ;
            sh:predicate <http://data.ashrae.org/standard223#hasRole> ;
            sh:subject sh:this ] .


        

Heating coil

URI: http://data.ashrae.org/standard223#HeatingCoil


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#HeatingCoil> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Heating coil" ;
    rdfs:comment "A subclass of `Coil` that is used specifically for heating air. " ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Coil> ;
    sh:property [ rdfs:comment "A heating coil must be related to the role '`Role-Heating`' using the relation '`hasRole`'." ;
            sh:hasValue <http://data.ashrae.org/standard223#Role-Heating> ;
            sh:message "s223: A heating coil must be related to the role '`Role-Heating`' using the relation '`hasRole`'." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasRole> ] ;
    sh:rule [ a sh:TripleRule ;
            rdfs:comment "Heating coils must always have the role `Role-Heating`" ;
            sh:object <http://data.ashrae.org/standard223#Role-Heating> ;
            sh:predicate <http://data.ashrae.org/standard223#hasRole> ;
            sh:subject sh:this ] .


        

Compressor

URI: http://data.ashrae.org/standard223#Compressor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Compressor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Compressor" ;
    rdfs:comment "A device for mechanically increasing the pressure of a gas." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Compressor` shall have at least one inlet." ;
            sh:message "s223: A `Compressor` shall have at least one inlet." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ] ],
        [ rdfs:comment "A `Compressor` shall have at least one outlet." ;
            sh:message "s223: A `Compressor` shall have at least one outlet." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ] ] .


        

Cooling tower

URI: http://data.ashrae.org/standard223#CoolingTower


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#CoolingTower> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Cooling tower" ;
    rdfs:comment "A heat transfer device in which atmospheric air cools warm water, generally by direct contact via evaporation." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `CoolingTower` shall have at least one outlet using the medium Water." ;
            sh:message "s223: A `CoolingTower` shall have at least one outlet using the medium Water." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `CoolingTower` shall have at least one inlet using the medium Water." ;
            sh:message "s223: A `CoolingTower` shall have at least one inlet using the medium Water." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Damper

URI: http://data.ashrae.org/standard223#Damper


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Damper> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Damper" ;
    rdfs:comment "An element inserted into an air-distribution system or element of an air-distribution system permitting modification of the air resistance of the system and consequently changing the airflow rate or shutting off the airflow." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Damper` shall have at least one inlet using the medium Air." ;
            sh:message "s223: A `Damper` shall have at least one inlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `Damper` shall have at least one outlet using the medium Air." ;
            sh:message "s223: A `Damper` shall have at least one outlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Door

URI: http://data.ashrae.org/standard223#Door


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Door> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Door" ;
    rdfs:comment "A hinged, sliding, or revolving barrier at the entrance to a building or room." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Door` shall have at least two bidirectional connection points using the medium Air." ;
            sh:message "s223: A `Door` shall have at least two bidirectional connection points using the medium Air." ;
            sh:minCount 2 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 2 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Electric breaker

URI: http://data.ashrae.org/standard223#ElectricBreaker


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ElectricBreaker> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Electric breaker" ;
    rdfs:comment "A piece of equipment designed to open the circuit automatically at a predetermined overcurrent without damage to itself (when properly applied within its rating)." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "An `ElectricBreaker` shall have at least one outlet using the medium Electricity." ;
            sh:message "s223: An `ElectricBreaker` shall have at least one outlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Electric meter

URI: http://data.ashrae.org/standard223#ElectricMeter


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#ElectricMeter> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Electric meter" ;
    rdfs:comment "A device that measures the properties of electric energy." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> .


        

Electric outlet

URI: http://data.ashrae.org/standard223#ElectricOutlet


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ElectricOutlet> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Electric outlet" ;
    rdfs:comment "A device to which a piece of electrical equipment can be connected in order to provide it with electricity" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "An `ElectricOutlet` shall have exactly one inlet using the medium Electricity." ;
            sh:message "s223: An `ElectricOutlet` shall have exactly one inlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMaxCount 1 ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "An `ElectricOutlet` shall have at least one outlet using the medium Electricity." ;
            sh:message "s223: An `ElectricOutlet` shall have at least one outlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Electric Resistance Element

URI: http://data.ashrae.org/standard223#ElectricResistanceElement


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ElectricResistanceElement> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Electric Resistance Element" ;
    rdfs:comment "Electric resistance elements provide electrical resistance heating, for example an electric heating coil within a Fan Coil Unit. It shall have one electricity `InletConnectionPoint`, plus fit one of the following two patterns: Pattern 1: An `ElectricResistanceElement` shall have exactly one Bidirectional `ConnectionPoint` using the medium Fluid. Pattern 2: An `ElectricResistanceElement` shall have one inlet and one outlet using the medium Fluid." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:message "s223: An `ElectricResistanceElement` shall have one electricity `InletConnectionPoint`, plus fit one of the following two patterns: Pattern 1: An `ElectricResistanceElement` shall have exactly one Bidirectional `ConnectionPoint` using the medium Fluid. Pattern 2: An `ElectricResistanceElement` shall have one inlet and one outlet using the medium Fluid." ;
    sh:property [ rdfs:comment "An `ElectricResistanceElement` shall have the role `Role-Heating`." ;
            sh:message "s223: An `ElectricResistanceElement` shall have the role `Role-Heating`." ;
            sh:path <http://data.ashrae.org/standard223#hasRole> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Role-Heating> ] ],
        [ rdfs:comment "An `ElectricResistanceElement` shall have at least one inlet using the medium Electricity." ;
            sh:message "s223: An `ElectricResistanceElement` shall have at least one inlet using the medium Electricity." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] ;
    sh:xone ( [ sh:property [ rdfs:comment "Pattern 1: An `ElectricResistanceElement` shall have exactly one Bidirectional `ConnectionPoint` using the medium Fluid." ;
                        sh:message "s223: Pattern 1: An `ElectricResistanceElement` requires exactly one `BidirectionalConnectionPoint` using the medium Fluid." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 1 ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
                        sh:qualifiedValueShapesDisjoint true ] ] [ sh:property [ rdfs:comment "Pattern 2: An `ElectricResistanceElement` shall have one outlet using the medium Fluid." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 1 ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
                        sh:qualifiedValueShapesDisjoint true ],
                    [ rdfs:comment "Pattern 2: An `ElectricResistanceElement` shall have one inlet using the medium Fluid." ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMaxCount 1 ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
                        sh:qualifiedValueShapesDisjoint true ] ] ) .


        

Electric transformer

URI: http://data.ashrae.org/standard223#ElectricTransformer


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ElectricTransformer> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Electric transformer" ;
    rdfs:comment "A piece of electrical equipment used to convert alternative current (AC) electric power from one voltage to another voltage." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "An `ElectricTransformer` shall have at least one inlet using the medium Electricity." ;
            sh:message "s223: An `ElectricTransformer` shall have at least one inlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "An `ElectricTransformer` shall have at least one outlet using the medium Electricity." ;
            sh:message "s223: An `ElectricTransformer` shall have at least one outlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Ethernet switch

URI: http://data.ashrae.org/standard223#EthernetSwitch


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#EthernetSwitch> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Ethernet switch" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#PowerOverEthernetSwitch> ) ;
    rdfs:comment "A type of network hardware that connects cabled devices, such as computers and Wi-Fi access points, in an Ethernet LAN so they can communicate with each other and to the internet." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "An `EthernetSwitch` shall have at least two `BidirectionalConnectionPoint`s using the medium `Signal-Ethernet`." ;
            sh:message "s223: An `EthernetSwitch` shall have at least two `BidirectionalConnectionPoint`s using the medium `Signal-Ethernet`." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 2 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Signal-Ethernet> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "An `EthernetSwitch` shall have at least one inlet using the medium Electricity." ;
            sh:message "s223: An `EthernetSwitch` shall have at least one inlet using the medium Electricity." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Power Over Ethernet Switch

URI: http://data.ashrae.org/standard223#PowerOverEthernetSwitch


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#PowerOverEthernetSwitch> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Power Over Ethernet Switch" ;
    rdfs:comment "A type of network hardware that connects and is capable of powering cabled devices, such as computers and Wi-Fi access points, in an Ethernet LAN so they can communicate with each other and to the internet." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#EthernetSwitch> ;
    sh:property [ rdfs:comment "A `PowerOverEthernetSwitch` shall have at least one inlet using the medium Electricity." ;
            sh:message "s223: A `PowerOverEthernetSwitch` shall have at least one inlet using the medium Electricity." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `PowerOverEthernetSwitch` shall have at least one `BidirectionalConnectionPoint` using the medium `PowerAndSignal-PoE`." ;
            sh:message "s223: A `PowerOverEthernetSwitch` shall have at least one `BidirectionalConnectionPoint` using the medium `PowerAndSignal-PoE`." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#PowerAndSignal-PoE> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Fan

URI: http://data.ashrae.org/standard223#Fan


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Fan> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Fan" ;
    rdfs:comment "A machine used to create flow within a gas such as air. " ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Fan` shall have at least one inlet using the medium Air." ;
            sh:message "s223: A `Fan` shall have at least one inlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `Fan` shall have at least one outlet using the medium Air." ;
            sh:message "s223: A `Fan` shall have at least one outlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Fan coil unit

URI: http://data.ashrae.org/standard223#FanCoilUnit


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#FanCoilUnit> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Fan coil unit" ;
    rdfs:comment "A device consisting of a heat exchanger (coil) and a fan to regulate the temperature of one or more spaces." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `FanCoilUnit` shall have at least one outlet using the medium Air." ;
            sh:message "s223: A `FanCoilUnit` shall have at least one outlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `FanCoilUnit` must be associated with at least 1 `Fan` using the relation `contains`." ;
            sh:message "s223: A `FanCoilUnit` must be associated with at least 1 `Fan` using the relation `contains`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#contains> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Fan> ] ],
        [ rdfs:comment "A `FanCoilUnit` must at least have the role `Role-Heating` or `Role-Cooling`." ;
            sh:message "s223: A `FanCoilUnit` must at least have the role `Role-Heating` or `Role-Cooling`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasRole> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:in ( <http://data.ashrae.org/standard223#Role-Heating> <http://data.ashrae.org/standard223#Role-Cooling> ) ] ],
        [ rdfs:comment "A `FanCoilUnit` must be associated with at least 1 `Coil` using the relation `contains`." ;
            sh:message "s223: A `FanCoilUnit` must be associated with at least 1 `Coil` using the relation `contains`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#contains> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Coil> ] ],
        [ rdfs:comment "A `FanCoilUnit` shall have at least one inlet using the medium Air." ;
            sh:message "s223: A `FanCoilUnit` shall have at least one inlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Filter

URI: http://data.ashrae.org/standard223#Filter


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Filter> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Filter" ;
    rdfs:comment """A device that removes contaminants from gases or liquids. See {s223:Substance-Medium} for
more details on validating compatible mediums upstream and downstream of a `Filter`.""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "Incompatible Medium. Case 1: Associated `ConnectionPoint`s with two pure mediums." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 1: Two pure mediums." ;
                    sh:message "s223: {$this} with inlet medium {?m2} is incompatible with outlet medium {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m2 ?m1
WHERE {
$this s223:cnx ?cp1, ?cp2 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
FILTER (?cp1 != ?cp2) .
?cp1 s223:hasMedium ?m1 .
?cp2 s223:hasMedium ?m2 . 
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case 3: Associated `ConnectionPoint`s with mediums having constituents." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 3: Two mediums with constituents." ;
                    sh:message "s223: For `Filter` {$this} there is no compatible substance between medium {?m2} and medium {?m1}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT ?this ?m2 ?m1
WHERE {
  ?this s223:cnx ?cp1, ?cp2 .
  ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
  ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
  FILTER (?cp1 != ?cp2) .
  ?cp1 s223:hasMedium ?m1 .
  ?cp2 s223:hasMedium ?m2 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] ],
        [ rdfs:comment "Incompatible Medium. Case 2: Associated `ConnectionPoint`s, one with a pure medium and one with a medium having constituents.." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "Incompatible Medium. Case 2: A medium with constituents and a pure medium." ;
                    sh:message "s223: {$this} has an incompatible medium {?m1} with any constituent of {?m2}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?m2 ?m1
WHERE {
$this s223:cnx ?cp1, ?cp2 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
FILTER (?cp1 != ?cp2) .
?cp1 s223:hasMedium ?m1 .
?cp2 s223:hasMedium ?m2 . 
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] ],
        [ rdfs:comment "A `Filter` shall have at least one outlet." ;
            sh:message "s223: A `Filter` shall have at least one outlet." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ] ],
        [ rdfs:comment "A `Filter` shall have at least one inlet `ConnectionPoint`." ;
            sh:message "s223: A `Filter` shall have at least one inlet `ConnectionPoint`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ] ] .


        

Fume hood

URI: http://data.ashrae.org/standard223#FumeHood


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#FumeHood> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Fume hood" ;
    rdfs:comment "A fume-collection device mounted over a work space, table, or shelf and serving to conduct unwanted gases away from an area." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `FumeHood` shall have at least one inlet using the medium Air." ;
            sh:message "s223: A `FumeHood` shall have at least one inlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `FumeHood` shall have at least one outlet using the medium Air." ;
            sh:message "s223: A `FumeHood` shall have at least one outlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Furnace

URI: http://data.ashrae.org/standard223#Furnace


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Furnace> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Furnace" ;
    rdfs:comment "An enclosed chamber or structure in which heat is produced, as by burning fuel or by converting electrical energy. " ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Furnace` shall have at least one inlet using the medium Air." ;
            sh:message "s223: A `Furnace` shall have at least one inlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `Furnace` shall have at least one outlet using the medium Air." ;
            sh:message "s223: A `Furnace` shall have at least one outlet using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Generator

URI: http://data.ashrae.org/standard223#Generator


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Generator> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Generator" ;
    rdfs:comment "An energy transducer that transforms non-electric energy into electric energy." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Generator` must be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`." ;
            sh:message "s223: A `Generator` must be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ],
        [ rdfs:comment "A `Generator` shall have at least one outlet using the medium Electricity." ;
            sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:message "s223: A `Generator` shall have at least one outlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ] .


        

Heat pump

URI: http://data.ashrae.org/standard223#HeatPump


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#HeatPump> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Heat pump" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#AirSourceHeatPump> <http://data.ashrae.org/standard223#GroundSourceHeatPump> <http://data.ashrae.org/standard223#WaterSourceHeatPump> ) ;
    rdfs:comment "A device that can heat or cool by transferring thermal energy using a reversible refrigeration cycle." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> .


        

ns2:AirSourceHeatPump

URI: http://data.ashrae.org/standard223#AirSourceHeatPump




        

ns2:GroundSourceHeatPump

URI: http://data.ashrae.org/standard223#GroundSourceHeatPump




        

ns2:WaterSourceHeatPump

URI: http://data.ashrae.org/standard223#WaterSourceHeatPump




        

Humidifier

URI: http://data.ashrae.org/standard223#Humidifier


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Humidifier> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Humidifier" ;
    rdfs:comment "A piece of equipment to add moisture to a gas such as air." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> .


        

Humidistat

URI: http://data.ashrae.org/standard223#Humidistat


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Humidistat> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Humidistat" ;
    rdfs:comment "An automatic control device used to maintain humidity at a fixed or adjustable setpoint." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> .


        

Hydronic heat exchanger

URI: http://data.ashrae.org/standard223#HydronicHeatExchanger


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#HydronicHeatExchanger> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Hydronic heat exchanger" ;
    rdfs:comment """A component intended to transfer heat from one liquid stream to another while keeping the two media separate. The
  `HydronicHeatExchanger` class does not represent the physical characteristics of a hydronic heat exchanger design. It represents only the heat
  transfer functionality.""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `HydronicHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
            sh:message "s223: A `HydronicHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                    sh:message "s223: A `HydronicHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
                    sh:qualifiedMaxCount 0 ] ],
        [ rdfs:comment "A `HydronicHeatExchanger` shall have at least two liquid inlets, each paired with an outlet." ;
            sh:message "s223: A `HydronicHeatExchanger` shall have at least two liquid inlets, each paired with an outlet." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 2 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ],
                                [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                                    sh:minCount 1 ;
                                    sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> ] ] ] ],
        [ rdfs:comment "A `HydronicHeatExchanger` shall have at least two liquid outlets, each paired with an inlet." ;
            sh:message "s223: A `HydronicHeatExchanger` shall have at least two liquid outlets, each paired with an inlet." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 2 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                                    sh:minCount 1 ;
                                    sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> ],
                                [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `HydronicHeatExchanger` shall have no `ConnectionPoint`s using the medium Air." ;
            sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
            sh:message "s223: A `HydronicHeatExchanger` shall have no `ConnectionPoint`s using the medium Air." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMaxCount 0 ;
            sh:qualifiedValueShape [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

Inverter

URI: http://data.ashrae.org/standard223#Inverter


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Inverter> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Inverter" ;
    rdfs:comment "An electric energy converter that changes direct electric current to alternating current." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "An `Inverter` shall have at least one inlet using the medium `Electricity-DC`." ;
            sh:message "s223: An `Inverter` shall have at least one inlet using the medium `Electricity-DC`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Electricity-DC> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "An `Inverter` shall have at least one outlet using the medium `Electricity-AC`." ;
            sh:message "s223: An `Inverter` shall have at least one outlet using the medium `Electricity-AC`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Electricity-AC> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Motor

URI: http://data.ashrae.org/standard223#Motor


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Motor> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Motor" ;
    rdfs:comment "A machine in which power is applied to do work by the conversion of various forms of energy into mechanical force and motion." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Motor` shall have at least one inlet using the medium Electricity." ;
            sh:message "s223: A `Motor` shall have at least one inlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Luminaire

URI: http://data.ashrae.org/standard223#Luminaire


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Luminaire> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Luminaire" ;
    rdfs:comment "A complete lighting unit consisting of a light source(s) and ballast(s) or driver(s) (when applicable), together with the parts designed to distribute the light, to position and protect the light source(s), and to connect the light source(s) to the power supply. Also known as a light fixture." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Luminaire` shall have at least one outlet using the medium `EM-Light`." ;
            sh:message "s223: A `Luminaire` shall have at least one outlet using the medium `EM-Light`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#EM-Light> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `Luminaire` shall have at least one inlet using the medium Electricity." ;
            sh:message "s223: A `Luminaire` shall have at least one inlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Photovoltaic module

URI: http://data.ashrae.org/standard223#PhotovoltaicModule


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#PhotovoltaicModule> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Photovoltaic module" ;
    rdfs:comment "A piece of equipment that converts sunlight into electricity." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "An `PhotovoltaicModule` shall have at least one outlet using the medium Electricity." ;
            sh:message "s223: An `PhotovoltaicModule` shall have at least one outlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "An `PhotovoltaicModule` must have at least one inlet using the medium `EM-Light`." ;
            sh:message "s223: An `PhotovoltaicModule` must have at least one inlet using the medium `EM-Light`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#EM-Light> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Pump

URI: http://data.ashrae.org/standard223#Pump


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Pump> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Pump" ;
    rdfs:comment "A machine for imparting energy to a fluid, drawing a fluid into itself through an entrance port, and forcing the fluid out through an exhaust port." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "The non-electrical `ConnectionPoint`s of a `Pump` must have compatible Media." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:sparql [ a sh:SPARQLConstraint ;
                    rdfs:comment "The non-electrical `ConnectionPoint`s of a `Pump` must have compatible Media." ;
                    sh:message "s223: {?cpa} and {?cpb} on the `Pump` {$this} have incompatible Media {$mediuma} and {$mediumb}." ;
                    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
                    sh:select """
SELECT $this ?cpa ?cpb ?mediuma ?mediumb
WHERE {
  $this s223:hasConnectionPoint ?cpa .
  $this s223:hasConnectionPoint ?cpb .
  FILTER (?cpa != ?cpb) .
  ?cpa s223:hasMedium ?mediuma .
  FILTER (NOT EXISTS {?mediuma a/rdfs:subClassOf* s223:Constituent-Electricity}) .
  ?cpb s223:hasMedium ?mediumb .
  FILTER (NOT EXISTS {?mediumb a/rdfs:subClassOf* s223:Constituent-Electricity}) .
  FILTER (?mediuma != ?mediumb) .
  FILTER (NOT EXISTS {?mediumb a/rdfs:subClassOf* ?mediuma}) .
  FILTER (NOT EXISTS {?mediuma a/rdfs:subClassOf* ?mediumb}) .
}
""" ] ],
        [ rdfs:comment "A `Pump` shall have at least one inlet using the medium Water, Oil or Refrigerant." ;
            sh:message "s223: A `Pump` shall have at least one inlet using the medium Water, Oil or Refrigerant." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ rdfs:comment "A `Pump` shall have at least one inlet using the medium Water, Oil or Refrigerant." ;
                            sh:message "s223: A `Pump` shall have at least one inlet using the medium Water, Oil or Refrigerant." ;
                            sh:or ( [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Refrigerant> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Oil> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ) ;
                            sh:severity sh:Warning ] ] ],
        [ rdfs:comment "A `Pump` shall have at least one outlet using the medium Water, Oil or Refrigerant." ;
            sh:message "s223: A `Pump` shall have at least one outlet using the medium Water, Oil or Refrigerant." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ rdfs:comment "A `Pump` shall have at least one outlet using the medium Water, Oil or Refrigerant." ;
                            sh:message "s223: A `Pump` shall have at least one outlet using the medium Water, Oil or Refrigerant." ;
                            sh:or ( [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Refrigerant> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Oil> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ) ;
                            sh:severity sh:Warning ] ] ] .


        

Radiant heater

URI: http://data.ashrae.org/standard223#RadiantHeater


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#RadiantHeater> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Radiant heater" ;
    rdfs:comment """A heating or cooling surface that delivers 50% or more of its heat transfer by radiation.
  A `RadiantHeater` must:
- Have the role `Role-Heating`.
- Have at least one outlet connection point using the medium `Light-Infrared`.
- Conform to exactly one of the following patterns:
  **Pattern 1:**
  - Exactly one inlet connection point using the medium `Constituent-Electricity` or `Fluid-NaturalGas`.
  **Pattern 2:**
  - Exactly one inlet connection point using the medium `Fluid-Water`.
  - Exactly one outlet connection point using the medium Fluid-Water.
  """ ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `RadiantHeater` shall have at least one outlet connection point using the medium Infrared." ;
            sh:message "s223: A `RadiantHeater` shall have at least one outlet connection point using the medium Infrared." ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Light-Infrared> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A radiant heater must `hasRole` `Role-Heating`." ;
            sh:message "s223: A radiant heater must `hasRole` `Role-Heating`." ;
            sh:path <http://data.ashrae.org/standard223#hasRole> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Role-Heating> ] ] ;
    sh:xone ( [ sh:property [ rdfs:comment "Pattern 1: A radiant heater shall have at least one inlet using the medium Electricity or NaturalGas." ;
                        sh:message "s223: Pattern 1: A radiant heater shall have at least one inlet using the medium Electricity or NaturalGas." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                                sh:node [ sh:property [ sh:or ( [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ] [ sh:class <http://data.ashrae.org/standard223#Fluid-NaturalGas> ] ) ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] ] [ sh:property [ rdfs:comment "Pattern 2: A radiant heater shall have an outlet of Water." ;
                        sh:message "s223: Pattern 2: A radiant heater shall have an outlet of Water." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
                    [ rdfs:comment "Pattern 2: A radiant heater shall have an inlet of Water." ;
                        sh:message "s223: Pattern 2: A radiant heater shall have an inlet of Water." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] ] ) .


        

Radiator

URI: http://data.ashrae.org/standard223#Radiator


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Radiator> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Radiator" ;
    rdfs:comment """A radiator provides primarily convective heating to a room using electricity, steam or water 
  (e.g., electric baseboard heaters, heated floors, or traditional radiators).""" ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Radiator` shall have at least one bidirectional connection point using the medium Air." ;
            sh:message "s223: A `Radiator` shall have at least one bidirectional connection point using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "Radiators must have the role `Role-Heating`." ;
            sh:message "s223: Radiators must have the role `Role-Heating`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasRole> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Role-Heating> ] ] .


        

Solar thermal collector

URI: http://data.ashrae.org/standard223#SolarThermalCollector


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#SolarThermalCollector> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Solar thermal collector" ;
    rdfs:comment "A device that converts sunlight into thermal energy." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `SolarThermalCollector` shall have at least one inlet using the medium `EM-Light`." ;
            sh:message "s223: A `SolarThermalCollector` shall have at least one inlet using the medium `EM-Light`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#EM-Light> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `SolarThermalCollector` shall have at least one outlet using the medium Water." ;
            sh:message "s223: A `SolarThermalCollector` shall have at least one outlet using the medium Water." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Terminal Unit

URI: http://data.ashrae.org/standard223#TerminalUnit


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#TerminalUnit> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Terminal Unit" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#DualDuctTerminal> <http://data.ashrae.org/standard223#FanPoweredTerminal> <http://data.ashrae.org/standard223#SingleDuctTerminal> ) ;
    rdfs:comment "An air terminal that modulates the volume of air delivered to a space." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `TerminalUnit` shall have at least one inlet `ConnectionPoint` using the medium Air." ;
            sh:message "s223: A `TerminalUnit` shall have at least one inlet `ConnectionPoint` using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `TerminalUnit` shall have at least one outlet `ConnectionPoint` using the medium Air." ;
            sh:message "s223: A `TerminalUnit` shall have at least one outlet `ConnectionPoint` using the medium Air." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Dual duct air terminal.

URI: http://data.ashrae.org/standard223#DualDuctTerminal


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#DualDuctTerminal> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Dual duct air terminal." ;
    rdfs:comment "A dual duct air terminal mixes two independent sources of primary air." ;
    rdfs:seeAlso <http://data.ashrae.org/standard223#TerminalUnit> ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#TerminalUnit> ;
    sh:property [ rdfs:comment "A `DualDuctTerminal` shall have at least two inlets using the medium Air." ;
            sh:message "s223: A `DualDuctTerminal` shall have at least two inlets using the medium Air." ;
            sh:minCount 2 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 2 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Fan Powered Air Terminal

URI: http://data.ashrae.org/standard223#FanPoweredTerminal


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#FanPoweredTerminal> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Fan Powered Air Terminal" ;
    rdfs:comment "An air terminal containing a fan. Airflow may pass through or be parallel to the fan. These units may also have supplemental heating or cooling." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#TerminalUnit> ;
    sh:property [ rdfs:comment "A `FanPoweredTerminal` must be associated with at least one `Fan` by using the relation `contains`." ;
            sh:message "s223: A `FanPoweredTerminal` must be associated with at least one `Fan` by using the relation `contains`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#contains> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Fan> ] ] .


        

Single Duct Terminal.

URI: http://data.ashrae.org/standard223#SingleDuctTerminal


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#SingleDuctTerminal> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Single Duct Terminal." ;
    rdfs:comment "An air-terminal unit assembly having one ducted air inlet and a damper for regulating the airflow rate." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#TerminalUnit> ;
    sh:property [ rdfs:comment "A `SingleDuctTerminal` must be associated with at least one `Damper` using the relation `contains`." ;
            sh:message "s223: A `SingleDuctTerminal` must be associated with at least one `Damper` using the relation `contains`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#contains> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Damper> ] ] .


        

A Thermal Energy Storage System

URI: http://data.ashrae.org/standard223#ThermalEnergyStorageUnit


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ThermalEnergyStorageUnit> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "A Thermal Energy Storage System" ;
    rdfs:comment "A device that stores thermal energy." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A Thermal Energy Storage Unit must have at least two connection points." ;
            sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
            sh:message "s223: A Thermal Energy Storage Unit must have at least two connection points." ;
            sh:minCount 2 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ] .


        

Thermostat

URI: http://data.ashrae.org/standard223#Thermostat


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Thermostat> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Thermostat" ;
    rdfs:comment "An automatic control device used to maintain temperature at a fixed or adjustable setpoint." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> .


        

Turbine

URI: http://data.ashrae.org/standard223#Turbine


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Turbine> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Turbine" ;
    rdfs:comment "An energy transducer that converts mechanical energy into electric energy." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Turbine` must be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`." ;
            sh:message "s223: A `Turbine` must be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ],
        [ rdfs:comment "A `Turbine` shall have at least one outlet using the medium Electricity." ;
            sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:message "s223: A `Turbine` shall have at least one outlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ] .


        

Valve

URI: http://data.ashrae.org/standard223#Valve


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#Valve> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Valve" ;
    ns1:subclauses ( <http://data.ashrae.org/standard223#ThreeWayValve> <http://data.ashrae.org/standard223#TwoWayValve> ) ;
    rdfs:comment "A device to regulate or stop the flow of fluid in a pipe or a duct by throttling." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> .


        

Three way valve

URI: http://data.ashrae.org/standard223#ThreeWayValve


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ThreeWayValve> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Three way valve" ;
    rdfs:comment "A `Valve` that can divert a fluid in one of three directions." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Valve> ;
    sh:property [ rdfs:comment "A `ThreeWayValve` must have at least three `ConnectionPoint`s using the relation `hasConnectionPoint`." ;
            sh:message "s223: A `ThreeWayValve` must have at least three `ConnectionPoint`s using the relation `hasConnectionPoint`." ;
            sh:minCount 3 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ] .


        

Two way valve

URI: http://data.ashrae.org/standard223#TwoWayValve


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#TwoWayValve> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Two way valve" ;
    rdfs:comment "A `Valve` that can divert a fluid in one of two directions." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Valve> ;
    sh:property [ rdfs:comment "A `TwoWayValve` shall have at least one inlet." ;
            sh:message "s223: A `TwoWayValve` shall have at least one inlet." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ] ],
        [ rdfs:comment "A `TwoWayValve` shall have at least one outlet." ;
            sh:message "s223: A `TwoWayValve` shall have at least one outlet." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ] ] .


        

VariableFrequencyDrive

URI: http://data.ashrae.org/standard223#VariableFrequencyDrive


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#VariableFrequencyDrive> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "VariableFrequencyDrive" ;
    rdfs:comment "An electronic device that varies its output frequency to vary the rotating speed of a motor, given a fixed input frequency. Used with fans or pumps to vary the flow in the system as a function of a maintained pressure." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "If the relation `connectedTo` is present it must associate the `VariableFrequencyDrive` with a `Equipment`." ;
            sh:class <http://data.ashrae.org/standard223#Equipment> ;
            sh:message "s223: If the relation `connectedTo` is present it must associate the `VariableFrequencyDrive` with a `Equipment`." ;
            sh:path <http://data.ashrae.org/standard223#connectedTo> ],
        [ rdfs:comment "A `VariableFrequencyDrive` shall have at least one outlet using the medium Electricity." ;
            sh:message "s223: A `VariableFrequencyDrive` shall have at least one outlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `VariableFrequencyDrive` shall have at least one inlet using the medium Electricity." ;
            sh:message "s223: A `VariableFrequencyDrive` shall have at least one inlet using the medium Electricity." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
            sh:severity sh:Warning ] .


        

Window

URI: http://data.ashrae.org/standard223#Window


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#Window> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Window" ;
    rdfs:comment "A daylight opening on a vertical or nearly vertical area of a room envelope." ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> ;
    sh:property [ rdfs:comment "A `Window` shall have at least one inlet using the medium Light." ;
            sh:message "s223: A `Window` shall have at least one inlet using the medium Light." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#EM-Light> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
        [ rdfs:comment "A `Window` shall have at least one outlet using the medium Light." ;
            sh:message "s223: A `Window` shall have at least one outlet using the medium Light." ;
            sh:minCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
            sh:qualifiedMinCount 1 ;
            sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#EM-Light> ;
                                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] .


        

Window shade

URI: http://data.ashrae.org/standard223#WindowShade


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#WindowShade> a <http://data.ashrae.org/standard223#Class>,
        sh:NodeShape ;
    rdfs:label "Window shade" ;
    rdfs:comment "A window covering that can be moved to block out or allow in light. " ;
    rdfs:subClassOf <http://data.ashrae.org/standard223#Equipment> .


        

ns4:AnnexA

URI: pub:AnnexA


@prefix ns1: <http://sample.org/doc#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:AnnexA> ns1:title "RDF REPRESENTATION OF THIS STANDARD (NORMATIVE)" ;
    rdfs:comment """This text of this standard was generated from and RDF Model. An electronic repository containing a normative Turtle representation of the can be found at (URL needed). A user may wish to use electronic tools to browse and study the details of the standard, use the equipment types defined in the standard to build a building-specific information model, apply the SHACL constraints to test a building specific model for conformance to the standard, or other uses.

""" .


        

ns4:AnnexB

URI: pub:AnnexB


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<pub:AnnexB> ns1:subclauses ( ns1:VAV_4-1 ns1:VAV_4-2 ns1:FPTU_4-3 ns1:DDTU_4-4 ns1:DDTU_4-5 ns1:MZ-VAV-AHU_4-6 ns1:DD-AHU_4-7 ns1:SZ-VAV-AHU_4-8 ns1:g36components ) ;
    ns1:title "INFORMATIVE ANNEX: G36 EXTENSION" ;
    rdfs:comment """This extension uses the concepts defined in the 223 standard to model the ASHRAE Guideline 36 air-side equipment (ASHRAE, 2018),
including classes representing the point lists in Section 4 and example model snippets of the control diagrams shown in Appendix A. 
The classes represent the point lists in Section 4 using validation rules that can ensure that a model has the metadata necessary to support Guideline 36 sequences.
These classes can be used to create models of Guideline 36 compliant stystems or validate existing models.
Additionally, this section includes example model snippets of the control diagrams shown in Informative Appendix A of Guideline 36. (Will that be here?)
These example models serve as references for use of the standard and this extension.

""" .


        

ns3:VAV_4-1

URI: http://sample.org/doc#VAV_4-1


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:VAV_4-1 ns1:subclauses ( <http://data.ashrae.org/standard223/1.0/extensions/g36#VAVTerminalCoolingOnly> <http://data.ashrae.org/standard223/1.0/extensions/g36#VAVTerminalCoolingOnlyAnnotation> ) ;
    ns1:title "VAV Terminal Unit - Cooling Only" ;
    rdfs:comment "This section describes the classes and example model of the VAV Terminal Unit - Cooling Only described in Section 4.1 and Appendix A, Figure A-1 (cite)" .


        

ns6:VAVTerminalCoolingOnly

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#VAVTerminalCoolingOnly




        

ns6:VAVTerminalCoolingOnlyAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#VAVTerminalCoolingOnlyAnnotation




        

ns3:VAV_4-2

URI: http://sample.org/doc#VAV_4-2


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:VAV_4-2 ns1:subclauses ( <http://data.ashrae.org/standard223/1.0/extensions/g36#VAVTerminalWithReheat> <http://data.ashrae.org/standard223/1.0/extensions/g36#VAVTerminalWithReheatAnnotation> ) ;
    ns1:title "VAV Terminal Unit with Reheat" ;
    rdfs:comment "This section describes the classes and example model of the VAV Terminal Unit with Reheat described in Section 4.2 and Appendix A, Figure A-2 (cite)" .


        

ns6:VAVTerminalWithReheat

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#VAVTerminalWithReheat




        

ns6:VAVTerminalWithReheatAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#VAVTerminalWithReheatAnnotation




        

ns3:FPTU_4-3

URI: http://sample.org/doc#FPTU_4-3


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:FPTU_4-3 ns1:subclass ( <http://data.ashrae.org/standard223/1.0/extensions/g36#FanPoweredTerminal> <http://data.ashrae.org/standard223/1.0/extensions/g36#FanPoweredTerminalAnnotation> ) ;
    ns1:title "Fan Powered Terminal Unit" ;
    rdfs:comment "This section describes the classes and example model of the Fan Powered Terminal Unit (Series or Parallel, Constant or Variable Speed Fan) described in Section 4.3 and Appendix A, Figures A-3 and A-4 (cite)" .


        

ns3:DDTU_4-4

URI: http://sample.org/doc#DDTU_4-4


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:DDTU_4-4 ns1:subclass ( <http://data.ashrae.org/standard223/1.0/extensions/g36#DualDuctTerminalWithInletSensors> <http://data.ashrae.org/standard223/1.0/extensions/g36#DualDuctTerminalWithInletSensorsAnnotation> ) ;
    ns1:title "Dual Duct Terminal Unit with Inlet Sensors" ;
    rdfs:comment "This section describes the classes and example model of the Dual Duct Terminal Unit with Inlet Sensors described in Section 4.4 and Appendix A, Figure A-7(cite)" .


        

ns3:DDTU_4-5

URI: http://sample.org/doc#DDTU_4-5


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:DDTU_4-5 ns1:subclass ( <http://data.ashrae.org/standard223/1.0/extensions/g36#DualDuctTerminalWithDischargeSensor> <http://data.ashrae.org/standard223/1.0/extensions/g36#DualDuctTerminalWithDischargeSensorAnnotation> ) ;
    ns1:title "Dual Duct Terminal Unit with Discharge Sensor" ;
    rdfs:comment "This section describes the classes and example model of the Dual Duct Terminal Unit with Discharge Sensor described in Section 4.5 and Appendix A, Figure A-8(cite)" .


        

ns3:MZ-VAV-AHU_4-6

URI: http://sample.org/doc#MZ-VAV-AHU_4-6


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:MZ-VAV-AHU_4-6 ns1:subclauses ( <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnitAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-CommonDamper> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-CommonDamperAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-OADandDP> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-OADandDPAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-OADandAFMS> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-OADandAFMSAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-WithReliefDamper> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-WithReliefDamperAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-OADandAFMS> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-OADandAFMSAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-WithReliefDamper> <http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-WithReliefDamperAnnotation> ) ;
    ns1:title "Multiple Zone VAV Air Handling Unit" ;
    rdfs:comment "This section describes the classes and example model of the Multiple Zone VAV Air Handling Unit described in Section 4.6 and Appendix A, Figures A-9 and A-10 (cite)" .


        

ns6:MultipleZoneVAVAirHandlingUnit

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit




        

ns6:MultipleZoneVAVAirHandlingUnitAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnitAnnotation




        

ns6:MultipleZoneVAVAirHandlingUnit-CommonDamper

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-CommonDamper




        

ns6:MultipleZoneVAVAirHandlingUnit-CommonDamperAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-CommonDamperAnnotation




        

ns6:MultipleZoneVAVAirHandlingUnit-OADandDP

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-OADandDP




        

ns6:MultipleZoneVAVAirHandlingUnit-OADandDPAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-OADandDPAnnotation




        

ns6:MultipleZoneVAVAirHandlingUnit-OADandAFMS

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-OADandAFMS




        

ns6:MultipleZoneVAVAirHandlingUnit-OADandAFMSAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-OADandAFMSAnnotation




        

ns6:MultipleZoneVAVAirHandlingUnit-WithReliefDamper

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-WithReliefDamper




        

ns6:MultipleZoneVAVAirHandlingUnit-WithReliefDamperAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#MultipleZoneVAVAirHandlingUnit-WithReliefDamperAnnotation




        

ns3:DD-AHU_4-7

URI: http://sample.org/doc#DD-AHU_4-7


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:DD-AHU_4-7 ns1:subclauses ( <http://data.ashrae.org/standard223/1.0/extensions/g36#DualFanDualDuctAirHandlingUnit> <http://data.ashrae.org/standard223/1.0/extensions/g36#DualFanDualDuctAirHandlingUnitAnnotation> ) ;
    ns1:title "Dual Fan Dual Duct Air Handling Unit" ;
    rdfs:comment "This section describes the classes and example model of the Dual Fan Dual Duct Air Handling Unit described in Section 4.7 and Appendix A, Figure A-11 (cite)" .


        

ns6:DualFanDualDuctAirHandlingUnit

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#DualFanDualDuctAirHandlingUnit




        

ns6:DualFanDualDuctAirHandlingUnitAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#DualFanDualDuctAirHandlingUnitAnnotation




        

ns3:SZ-VAV-AHU_4-8

URI: http://sample.org/doc#SZ-VAV-AHU_4-8


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:SZ-VAV-AHU_4-8 ns1:subclauses ( <http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit> <http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnitAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-NoReliefFan> <http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-NoReliefFanAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-WithReliefFan> <http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-WithReliefFanAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-WithReturnFan> <http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-WithReturnFanAnnotation> ) ;
    ns1:title "Single Zone VAV Air Handling Unit" ;
    rdfs:comment "This section describes the classes and example model of the Single Zone VAV Air Handling Unit described in Section 4.8 and Appendix A, Figure A-12 (cite)" .


        

ns6:SingleZoneVAVAirHandlingUnit

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit




        

ns6:SingleZoneVAVAirHandlingUnitAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnitAnnotation




        

ns6:SingleZoneVAVAirHandlingUnit-NoReliefFan

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-NoReliefFan




        

ns6:SingleZoneVAVAirHandlingUnit-NoReliefFanAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-NoReliefFanAnnotation




        

ns6:SingleZoneVAVAirHandlingUnit-WithReliefFan

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-WithReliefFan




        

ns6:SingleZoneVAVAirHandlingUnit-WithReliefFanAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-WithReliefFanAnnotation




        

ns6:SingleZoneVAVAirHandlingUnit-WithReturnFan

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-WithReturnFan




        

ns6:SingleZoneVAVAirHandlingUnit-WithReturnFanAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#SingleZoneVAVAirHandlingUnit-WithReturnFanAnnotation




        

ns3:g36components

URI: http://sample.org/doc#g36components


@prefix ns1: <http://sample.org/doc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ns1:g36components ns1:subclauses ( <http://data.ashrae.org/standard223/1.0/extensions/g36#Damper> <http://data.ashrae.org/standard223/1.0/extensions/g36#DamperAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#TwoPositionDamper> <http://data.ashrae.org/standard223/1.0/extensions/g36#TwoPositionDamperAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#HotWaterCoil> <http://data.ashrae.org/standard223/1.0/extensions/g36#HotWaterCoilAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#ElectricHeatingCoil> <http://data.ashrae.org/standard223/1.0/extensions/g36#ElectricHeatingCoilAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#HotWaterValve> <http://data.ashrae.org/standard223/1.0/extensions/g36#HotWaterValveAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#ChilledWaterCoil> <http://data.ashrae.org/standard223/1.0/extensions/g36#ChilledWaterCoilAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#ChilledWaterValve> <http://data.ashrae.org/standard223/1.0/extensions/g36#ChilledWaterValveAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#Zone> <http://data.ashrae.org/standard223/1.0/extensions/g36#ZoneAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#ZoneGroup> <http://data.ashrae.org/standard223/1.0/extensions/g36#ZoneGroupAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#Fan> <http://data.ashrae.org/standard223/1.0/extensions/g36#FanAnnotation> <http://data.ashrae.org/standard223/1.0/extensions/g36#FanWithVFD> <http://data.ashrae.org/standard223/1.0/extensions/g36#FanWithVFDAnnotation> ) ;
    ns1:title "Model Components" ;
    rdfs:comment "This section describes the classes representing common components used in each of the Guildine 36 example models and classes." .


        

ns6:Damper

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#Damper




        

ns6:DamperAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#DamperAnnotation




        

ns6:TwoPositionDamper

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#TwoPositionDamper




        

ns6:TwoPositionDamperAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#TwoPositionDamperAnnotation




        

ns6:HotWaterCoil

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#HotWaterCoil




        

ns6:HotWaterCoilAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#HotWaterCoilAnnotation




        

ns6:ElectricHeatingCoil

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#ElectricHeatingCoil




        

ns6:ElectricHeatingCoilAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#ElectricHeatingCoilAnnotation




        

ns6:HotWaterValve

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#HotWaterValve




        

ns6:HotWaterValveAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#HotWaterValveAnnotation




        

ns6:ChilledWaterCoil

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#ChilledWaterCoil




        

ns6:ChilledWaterCoilAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#ChilledWaterCoilAnnotation




        

ns6:ChilledWaterValve

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#ChilledWaterValve




        

ns6:ChilledWaterValveAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#ChilledWaterValveAnnotation




        

ns6:Zone

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#Zone




        

ns6:ZoneAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#ZoneAnnotation




        

ns6:ZoneGroup

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#ZoneGroup




        

ns6:ZoneGroupAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#ZoneGroupAnnotation




        

ns6:Fan

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#Fan




        

ns6:FanAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#FanAnnotation




        

ns6:FanWithVFD

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#FanWithVFD




        

ns6:FanWithVFDAnnotation

URI: http://data.ashrae.org/standard223/1.0/extensions/g36#FanWithVFDAnnotation




        

nce78f551a2fd48efa369b55f628b837fb84

URI: nce78f551a2fd48efa369b55f628b837fb84


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "Every class of the 223 standard must be a direct or indirect subclass of s223:Concept. " ;
    sh:message "s223: Class {$this} must be within the rdfs:subClassOf hierarchy under s223:Concept." ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/schema> ;
    sh:select """
SELECT $this
WHERE {
FILTER NOT EXISTS {$this rdfs:subClassOf* rdf:Property} .
FILTER NOT EXISTS {$this rdfs:subClassOf* s223:Concept} .
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb80

URI: nce78f551a2fd48efa369b55f628b837fb80


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "Ensure that any property shape must have an rdfs:comment. " ;
    sh:message "s223: The property shape with path {?path} for Class {$this} must have an rdfs:comment." ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/schema> ;
    sh:select """
SELECT $this ?path
WHERE {
$this sh:property ?propshape .
?propshape sh:path ?path .
FILTER NOT EXISTS {?propshape rdfs:comment ?comment} .
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb81

URI: nce78f551a2fd48efa369b55f628b837fb81


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "Ensure that every SPARQLRule must have an rdfs:comment. " ;
    sh:message "s223: Every SPARQLRule for Class {$this} must have an rdfs:comment." ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/schema> ;
    sh:select """
SELECT $this
WHERE {
$this sh:rule ?rule .
?rule a sh:SPARQLRule .
FILTER NOT EXISTS {?rule rdfs:comment ?comment} .
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb82

URI: nce78f551a2fd48efa369b55f628b837fb82


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "Ensure that every TripleRule must have an rdfs:comment. " ;
    sh:message "s223: The TripleRule inferring {?pred} for Class {$this} must have an rdfs:comment." ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/schema> ;
    sh:select """
SELECT $this ?pred
WHERE {
$this sh:rule ?rule .
?rule a sh:TripleRule .
?rule sh:predicate ?pred .
FILTER NOT EXISTS {?rule rdfs:comment ?comment} .
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb85

URI: nce78f551a2fd48efa369b55f628b837fb85


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "Every class of the 223 standard must have an rdfs:comment. " ;
    sh:message "s223: Class {$this} must have an rdfs:comment." ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/schema> ;
    sh:select """
SELECT $this
WHERE {
FILTER NOT EXISTS {$this rdfs:comment ?comment} .
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb83

URI: nce78f551a2fd48efa369b55f628b837fb83


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "Every class of the 223 standard must also be an instance of sh:NodeShape. " ;
    sh:message "s223: Class {$this} must be declared as an instance of sh:NodeShape." ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/schema> ;
    sh:select """
SELECT $this
WHERE {
FILTER NOT EXISTS {$this a sh:NodeShape} .
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb79

URI: nce78f551a2fd48efa369b55f628b837fb79


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "Ensure that any property shape must have an rdfs:comment. " ;
    sh:message "s223: The SPARQLConstraint for path {?path} for Class {$this} must have an rdfs:comment." ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/schema> ;
    sh:select """
SELECT $this ?path
WHERE {
$this sh:property ?propshape .
?propshape sh:sparql ?sparqlconstraint .
?propshape sh:path ?path .
FILTER NOT EXISTS {?sparqlconstraint rdfs:comment ?comment} .
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb1091

URI: nce78f551a2fd48efa369b55f628b837fb1091


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case1: An entity with a pure medium and an associated property with a pure medium." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 1: Two pure mediums." ;
            sh:message "s223: {$this} `hasMedium` of {?m1}, but is associated with property {?prop} that has `ofMedium` of {?m2}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m1 ?prop ?m2
WHERE {
$this s223:hasMedium ?m1 .
$this ?p ?prop .
?prop a/rdfs:subClassOf* s223:Property .
?prop s223:ofMedium ?m2 .
FILTER (?m1 != ?m2 ) .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1099

URI: nce78f551a2fd48efa369b55f628b837fb1099


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case3: An entity with constituents and an associated property with a pure medium." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 3: A medium with constituents and an associated property with a pure medium." ;
            sh:message "s223: {$this} `hasMedium` of {?m2}, but is associated with property {?prop} that has `ofMedium` of {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m1 ?prop ?m2
WHERE {
$this s223:hasMedium ?m2 .
$this ?p ?prop .
?prop a/rdfs:subClassOf* s223:Property .
?prop s223:ofMedium ?m1 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1095

URI: nce78f551a2fd48efa369b55f628b837fb1095


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Ensure that any instance that is declared to be an instance of an abstract class must also be declared an instance of at least one subClass of that abstract class." ;
    sh:path <http://data.ashrae.org/standard223#abstract> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Ensure that any instance that is declared to be an instance of an abstract class must also be declared an instance of at least one subClass of that abstract class" ;
            sh:message "s223: {$this} cannot be declared an instance of only abstract class {?class}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT DISTINCT $this ?class
WHERE {
?class s223:abstract true .
$this a ?class .
OPTIONAL {
?otherClass rdfs:subClassOf+ ?class .
$this a ?otherClass .
FILTER (?class != ?otherClass) .
}
FILTER (!bound (?otherClass)) .
}
""" ] .


        

Closed World Shape

URI: http://data.ashrae.org/standard223#ClosedWorldShape


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#ClosedWorldShape> a sh:NodeShape ;
    rdfs:label "Closed World Shape" ;
    rdfs:comment "Ensure that all instances of an s223 class use only the relations defined for that class. Note that this only applies to s223 and QUDT relations." ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment """Ensure that all instances of an s223 class use only the relations defined for that class. Note that
relations from other namespaces are not checked by this validation.""" ;
            sh:message "s223: Predicate {?p} is not defined for instance {$this}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?p ?o
WHERE {
$this ?p ?o .
FILTER(STRSTARTS (str(?p), "http://data.ashrae.org/standard223#") || STRSTARTS (str(?p), "http://qudt.org/schema/qudt"))
FILTER NOT EXISTS {$this a sh:NodeShape}
FILTER NOT EXISTS {$this a/rdfs:subClassOf* ?class .
			?class sh:property/sh:path ?p .
}
FILTER NOT EXISTS {$this a/rdfs:subClassOf* ?class .
?class sh:xone/rdf:rest*/rdf:first/sh:property/sh:path ?p .
}
FILTER NOT EXISTS {$this a/rdfs:subClassOf* ?class .
?class sh:or/rdf:rest*/rdf:first/sh:property/sh:path ?p .
}
}
""" ] ;
    sh:targetClass <http://data.ashrae.org/standard223#Concept> .


        

nce78f551a2fd48efa369b55f628b837fb1098

URI: nce78f551a2fd48efa369b55f628b837fb1098


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Concept` must be associated with at least one label using the relation label." ;
    sh:message "s223: A `Concept` must be associated with at least one label using the relation label." ;
    sh:minCount 1 ;
    sh:path rdfs:label ;
    sh:severity sh:Warning .


        

nce78f551a2fd48efa369b55f628b837fb1093

URI: nce78f551a2fd48efa369b55f628b837fb1093


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case2: An entity with a pure medium and an associated property with constituents." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 2: A pure medium and an associated property with constituents." ;
            sh:message "s223: {$this} `hasMedium` of {?m1}, but is associated with property {?prop} that has `ofMedium` of {?m2}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m1 ?prop ?m2
WHERE {
$this s223:hasMedium ?m1 .
$this ?p ?prop .
?prop a/rdfs:subClassOf* s223:Property .
?prop s223:ofMedium ?m2 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1097

URI: nce78f551a2fd48efa369b55f628b837fb1097


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasProperty` is present, it must associate the concept with a `Property`." ;
    sh:class <http://data.ashrae.org/standard223#Property> ;
    sh:message "s223: If the relation `hasProperty` is present, it must associate the concept with a `Property`." ;
    sh:path <http://data.ashrae.org/standard223#hasProperty> .


        

nce78f551a2fd48efa369b55f628b837fb1089

URI: nce78f551a2fd48efa369b55f628b837fb1089


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case4: An entity with constituents and an associated property with constituents." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 4: A medium with constituents and an associated property with constituents." ;
            sh:message "s223: {$this} `hasMedium` of {?m1}, but is associated with property {?prop} that has `ofMedium` of {?m2}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m1 ?prop ?m2
WHERE {
$this s223:hasMedium ?m1 .
$this ?p ?prop .
?prop a/rdfs:subClassOf* s223:Property .
?prop s223:ofMedium ?m2 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1101

URI: nce78f551a2fd48efa369b55f628b837fb1101


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "Add an rdfs:label if it is missing." ;
    sh:construct """
CONSTRUCT {$this rdfs:label ?newLabel .}
WHERE {
FILTER (NOT EXISTS {$this rdfs:label ?something}) .
BIND(REPLACE(STR($this), "^.*/([^/]*)$", "$1") AS ?localNameWithoutHash)
BIND(REPLACE(?localNameWithoutHash, "^.*#(.*)$", "$1") AS ?localName)
BIND(REPLACE(?localName, "-", " ", "i") AS ?newLabel)
}
""" ;
    sh:name "AddLabelFromLocalName" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> .


        

nce78f551a2fd48efa369b55f628b837fb51

URI: nce78f551a2fd48efa369b55f628b837fb51


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "Declare the inverse triples for relations that have defined inverse relations" ;
    sh:construct """
CONSTRUCT {
?o ?invP $this .
}
WHERE {
  $this ?p ?o .
  ?p s223:inverseOf ?invP .
}
			""" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/owl-subset> .


        

nce78f551a2fd48efa369b55f628b837fb111

URI: nce78f551a2fd48efa369b55f628b837fb111


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "Declare the inverse triples for symmetric relations" ;
    sh:construct """
CONSTRUCT {
?o ?p $this .
}
WHERE {
  $this ?p ?o .
  ?p a s223:SymmetricRelation .
}
			""" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/owl-subset> .


        

nce78f551a2fd48efa369b55f628b837fb1235

URI: nce78f551a2fd48efa369b55f628b837fb1235


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasRole` is present it must associate the `Equipment` with a `EnumerationKind-Role`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind-Role> ;
    sh:message "s223: If the relation `hasRole` is present it must associate the `Equipment` with a `EnumerationKind-Role`." ;
    sh:path <http://data.ashrae.org/standard223#hasRole> .


        

nce78f551a2fd48efa369b55f628b837fb1229

URI: nce78f551a2fd48efa369b55f628b837fb1229


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Disallow contained equipment from having external incoming connections." ;
    sh:path <http://data.ashrae.org/standard223#connectedFrom> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Disallow contained equipment from having external incoming connections." ;
            sh:message "s223: {$this} should not have a connection from external equipment {?otherDev} because {?container} contains {$this}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?container ?otherDev
WHERE {
$this s223:connectedFrom ?otherDev .
$this ^s223:contains ?container .
?container a/rdfs:subClassOf* s223:Equipment .
FILTER NOT EXISTS {?container s223:contains ?otherDev .}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1236

URI: nce78f551a2fd48efa369b55f628b837fb1236


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `executes` is present it must associate the `Equipment` with a `Function`." ;
    sh:class <http://data.ashrae.org/standard223#Function> ;
    sh:message "s223: If the relation `executes` is present it must associate the `Equipment` with a `Function`." ;
    sh:path <http://data.ashrae.org/standard223#executes> .


        

nce78f551a2fd48efa369b55f628b837fb1231

URI: nce78f551a2fd48efa369b55f628b837fb1231


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Disallow contained equipment from having external outgoing connections." ;
    sh:path <http://data.ashrae.org/standard223#connectedTo> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Disallow contained equipment from having external outgoing connections." ;
            sh:message "s223: {$this} should not have a connection to external equipment {?otherDev} because {?container} contains {$this}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?container ?otherDev
WHERE {
$this s223:connectedTo ?otherDev .
$this ^s223:contains ?container .
?container a/rdfs:subClassOf* s223:Equipment .
FILTER NOT EXISTS {?container s223:contains ?otherDev .}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1237

URI: nce78f551a2fd48efa369b55f628b837fb1237


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasPhysicalLocation` is present it must associate the `Equipment` with a `PhysicalSpace`." ;
    sh:class <http://data.ashrae.org/standard223#PhysicalSpace> ;
    sh:message "s223: If the relation `hasPhysicalLocation` is present it must associate the `Equipment` with a `PhysicalSpace`." ;
    sh:path <http://data.ashrae.org/standard223#hasPhysicalLocation> .


        

nce78f551a2fd48efa369b55f628b837fb1238

URI: nce78f551a2fd48efa369b55f628b837fb1238


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment """If the relation `actuatedByProperty` is present it must associate the `Equipment` with a `ActuatableProperty`.
Note that any `Equipment` may use this relation, not just `Actuator`.""" ;
    sh:class <http://data.ashrae.org/standard223#ActuatableProperty> ;
    sh:message """If the relation `actuatedByProperty` is present it must associate the `Equipment` with a `ActuatableProperty`.
Note that any `Equipment` may use this relation, not just `Actuator`.""" ;
    sh:path <http://data.ashrae.org/standard223#actuatedByProperty> .


        

nce78f551a2fd48efa369b55f628b837fb1239

URI: nce78f551a2fd48efa369b55f628b837fb1239


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:PropertyShape ;
    rdfs:comment "If the relation `contains` is present it must associate the `Equipment` with either `Equipment` or `Junction`." ;
    sh:message "s223: If the relation `contains` is present it must associate the `Equipment` with either `Equipment` or `Junction`." ;
    sh:name "device contains shape" ;
    sh:or ( [ sh:class <http://data.ashrae.org/standard223#Equipment> ] [ sh:class <http://data.ashrae.org/standard223#Junction> ] ) ;
    sh:path <http://data.ashrae.org/standard223#contains> .


        

nce78f551a2fd48efa369b55f628b837fb1233

URI: nce78f551a2fd48efa369b55f628b837fb1233


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Warning about a subClass of `Equipment` of type A containing something that is in the same subClass branch." ;
    sh:path <http://data.ashrae.org/standard223#contains> ;
    sh:severity sh:Warning ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Warning about a subClass of `Equipment` of type A containing something that is in the same subClass branch." ;
            sh:message "s223: {$this}, of type {?type1}, contains {?subEquip} of type {?type2}, that could result in double-counting items in the class hierarchy of {?type1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?subEquip ?type1 ?type2
WHERE {
  FILTER NOT EXISTS {$this a s223:Equipment} .
$this s223:contains+ ?subEquip .
  FILTER NOT EXISTS {?subEquip a s223:Equipment} .
$this a ?type1 .
?subEquip a ?type2 .
{
?type2 rdfs:subClassOf* ?type1 .
}
UNION
{
?type1 rdfs:subClassOf* ?type2 .
}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1244

URI: nce78f551a2fd48efa369b55f628b837fb1244


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "For equipment contained within another piece of equipment use the `mapsTo` relation to infer a Medium from the containing equipment." ;
    sh:construct """
CONSTRUCT {
    ?childCp s223:hasMedium ?medium .
}
WHERE {
  $this s223:hasConnectionPoint ?cp .
  ?childCp s223:mapsTo ?cp .
  ?cp s223:connectsThrough ?connection .
  ?cp s223:hasMedium ?medium .
  FILTER NOT EXISTS {?childCp s223:hasMedium ?something} .
}
""" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> .


        

nce78f551a2fd48efa369b55f628b837fb1245

URI: nce78f551a2fd48efa369b55f628b837fb1245


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "For equipment containing another piece of equipment, use the `mapsTo` relation to infer a Medium from the contained equipment." ;
    sh:construct """
CONSTRUCT {
    ?parentCp s223:hasMedium ?medium .
}
WHERE {
  $this s223:hasConnectionPoint ?cp .
  ?cp s223:mapsTo ?parentCp .
  ?cp s223:connectsThrough ?connection .
  ?cp s223:hasMedium ?medium .
  FILTER NOT EXISTS {?parentCp s223:hasMedium ?something} .
}
""" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> .


        

nce78f551a2fd48efa369b55f628b837fb1086

URI: nce78f551a2fd48efa369b55f628b837fb1086


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Sensor` must be associated with exactly one `ObservableProperty` using the relation `observes`." ;
    sh:class <http://data.ashrae.org/standard223#ObservableProperty> ;
    sh:maxCount 1 ;
    sh:message "s223: A `Sensor` must be associated with exactly one `ObservableProperty` using the relation `observes`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#observes> .


        

nce78f551a2fd48efa369b55f628b837fb1082

URI: nce78f551a2fd48efa369b55f628b837fb1082


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "s223: If the `hasReferenceLocation` relation exists, the observed `Property` must have isDeltaQuantity true." ;
    sh:path <http://data.ashrae.org/standard223#observes> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "s223: If the `hasReferenceLocation` relation exists, the observed `Property` must have isDeltaQuantity true." ;
            sh:message "s223: `Sensor` {$this} has a reference location, but its `Property` lacks isDeltaQuantity true." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
          SELECT $this
          WHERE {
$this s223:hasReferenceLocation ?y .
$this s223:observes ?x .
?x a/rdfs:subClassOf* s223:QuantifiableProperty .
FILTER NOT EXISTS {$this s223:observes/qudt:isDeltaQuantity true}
}
""" ] .


        

Valve

URI: http://data.ashrae.org/standard223#SensorObservesShape


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#SensorObservesShape> a sh:NodeShape ;
    rdfs:label "Valve" ;
    rdfs:comment "A `Sensor` must be associated with exactly 1 of `QuantifiableObservableProperty` or `EnumeratedObservableProperty` using the relation `observes`." ;
    sh:message "s223: A `Sensor` must be associated with exactly 1 of `QuantifiableObservableProperty` or `EnumeratedObservableProperty` using the relation `observes`." ;
    sh:targetClass <http://data.ashrae.org/standard223#Sensor> ;
    sh:xone ( [ sh:property [ rdfs:comment "A `Sensor` must be associated with exactly 1 of `QuantifiableObservableProperty` or `EnumeratedObservableProperty` using the relation `observes`." ;
                        sh:class <http://data.ashrae.org/standard223#QuantifiableObservableProperty> ;
                        sh:maxCount 1 ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#observes> ] ] [ sh:property [ rdfs:comment "A `Sensor` must be associated with exactly 1 of `QuantifiableObservableProperty` or `EnumeratedObservableProperty` using the relation `observes`." ;
                        sh:class <http://data.ashrae.org/standard223#EnumeratedObservableProperty> ;
                        sh:maxCount 1 ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#observes> ] ] ) .


        

Valve

URI: http://data.ashrae.org/standard223#SensorReferenceLocationShape


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#SensorReferenceLocationShape> a sh:NodeShape ;
    rdfs:label "Valve" ;
    rdfs:comment "A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`." ;
    sh:message "s223: A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`." ;
    sh:or ( [ sh:property [ rdfs:comment "A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`." ;
                        sh:class <http://data.ashrae.org/standard223#Connectable> ;
                        sh:path <http://data.ashrae.org/standard223#hasReferenceLocation> ] ] [ sh:property [ rdfs:comment "A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`." ;
                        sh:class <http://data.ashrae.org/standard223#Connection> ;
                        sh:path <http://data.ashrae.org/standard223#hasReferenceLocation> ] ] [ sh:property [ rdfs:comment "A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`." ;
                        sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
                        sh:path <http://data.ashrae.org/standard223#hasReferenceLocation> ] ] ) ;
    sh:property [ rdfs:comment "A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`." ;
            sh:maxCount 1 ;
            sh:path <http://data.ashrae.org/standard223#hasReferenceLocation> ] ;
    sh:targetClass <http://data.ashrae.org/standard223#Sensor> .


        

nce78f551a2fd48efa369b55f628b837fb1081

URI: nce78f551a2fd48efa369b55f628b837fb1081


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "If a `Sensor` measures a differential property, it must be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`." ;
    sh:maxCount 1 ;
    sh:message "s223: If a `Sensor` measures a differential property, it must be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`." ;
    sh:path <http://data.ashrae.org/standard223#hasReferenceLocation> .


        

Valve

URI: http://data.ashrae.org/standard223#SensorObservationLocationShape


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#SensorObservationLocationShape> a sh:NodeShape ;
    rdfs:label "Valve" ;
    rdfs:comment "A `Sensor` must be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasObservationLocation`." ;
    sh:message "s223: A `Sensor` must be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasObservationLocation`." ;
    sh:targetClass <http://data.ashrae.org/standard223#Sensor> ;
    sh:xone ( [ sh:property [ rdfs:comment "A `Sensor` must be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasObservationLocation`." ;
                        sh:class <http://data.ashrae.org/standard223#Connectable> ;
                        sh:maxCount 1 ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasObservationLocation> ] ] [ sh:property [ rdfs:comment "A `Sensor` must be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasObservationLocation`." ;
                        sh:class <http://data.ashrae.org/standard223#Connection> ;
                        sh:maxCount 1 ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasObservationLocation> ] ] [ sh:property [ rdfs:comment "A `Sensor` must be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasObservationLocation`." ;
                        sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
                        sh:maxCount 1 ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasObservationLocation> ] ] ) .


        

nce78f551a2fd48efa369b55f628b837fb1079

URI: nce78f551a2fd48efa369b55f628b837fb1079


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "s223: If the observed `Property` has isDeltaQuantity true, the `Sensor` must have a `hasReferenceLocation` relation." ;
    sh:path <http://data.ashrae.org/standard223#observes> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "s223: If the observed `Property` has isDeltaQuantity true, the `Sensor` must have a `hasReferenceLocation` relation." ;
            sh:message "s223: `Sensor` {$this} has `Property` {?x} with isDeltaQuantity true, but the `Sensor` lacks a reference location." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
          SELECT $this ?x
          WHERE {
$this s223:observes/qudt:isDeltaQuantity true .
$this s223:observes ?x .
?x a/rdfs:subClassOf* s223:QuantifiableProperty .
FILTER NOT EXISTS {$this s223:hasReferenceLocation ?y}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1085

URI: nce78f551a2fd48efa369b55f628b837fb1085


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasMeasurementResolution` is present it must associate a `Sensor` with a `QuantifiableProperty`." ;
    sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
    sh:message "s223: If the relation `hasMeasurementResolution` is present it must associate a `Sensor` with a `QuantifiableProperty`." ;
    sh:path <http://data.ashrae.org/standard223#hasMeasurementResolution> .


        

nce78f551a2fd48efa369b55f628b837fb1084

URI: nce78f551a2fd48efa369b55f628b837fb1084


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Sensor` must be associated with exactly one location using the relation `hasObservationLocation`." ;
    sh:maxCount 1 ;
    sh:message "s223: A `Sensor` must be associated with exactly one location using the relation `hasObservationLocation`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasObservationLocation> .


        

nce78f551a2fd48efa369b55f628b837fb1087

URI: nce78f551a2fd48efa369b55f628b837fb1087


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "Infer the `hasObservationLocation` relation for a `Sensor` from the `Property` that it is observing, only if that `Property` is associated with a single entity." ;
    sh:construct """
CONSTRUCT {$this s223:hasObservationLocation ?something .}
WHERE {
{
SELECT ?prop (COUNT (DISTINCT ?measurementLocation) AS ?count) $this
WHERE {
FILTER (NOT EXISTS {$this s223:hasObservationLocation ?anything}) .
$this s223:observes ?prop .
?measurementLocation s223:hasProperty ?prop .
}
GROUP BY ?prop $this
}
FILTER (?count = 1) .
?something s223:hasProperty ?prop .
{?something a/rdfs:subClassOf* s223:Connectable}
UNION
{?something a/rdfs:subClassOf* s223:Connection}
UNION
{?something a/rdfs:subClassOf* s223:ConnectionPoint}
}
""" ;
    sh:name "InferredMeasurementLocation" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> .


        

nce78f551a2fd48efa369b55f628b837fb335

URI: nce78f551a2fd48efa369b55f628b837fb335


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `HumiditySensor` must be defined in terms of the `QuantityKind` that is being measured, which must be either RelativeHumidity or AbsoluteHumidity." ;
    sh:class <http://data.ashrae.org/standard223#QuantifiableObservableProperty> ;
    sh:message "s223: A `HumiditySensor` must observe a `QuantifiableObservableProperty` that `hasQuantityKind` of either RelativeHumidity or AbsoluteHumidity." ;
    sh:node [ sh:property [ sh:or ( [ sh:hasValue <http://qudt.org/vocab/quantitykind/RelativeHumidity> ] [ sh:hasValue <http://qudt.org/vocab/quantitykind/AbsoluteHumidity> ] ) ;
                    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ;
    sh:path <http://data.ashrae.org/standard223#observes> .


        

nce78f551a2fd48efa369b55f628b837fb320

URI: nce78f551a2fd48efa369b55f628b837fb320


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `GaugePressureSensor` must always observe a `Property` that has a `QuantityKind` of GaugePressure." ;
    sh:message "s223: A `GaugePressureSensor` must always observe a `Property` that has a `QuantityKind` of GaugePressure." ;
    sh:path ( <http://data.ashrae.org/standard223#observes> <http://qudt.org/schema/qudt/hasQuantityKind> ) ;
    sh:value <http://qudt.org/vocab/quantitykind/GaugePressure> .


        

nce78f551a2fd48efa369b55f628b837fb317

URI: nce78f551a2fd48efa369b55f628b837fb317


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `GaugePressureSensor` must always observe a `Property` that has a value of true for qudt:isDeltaQuantity." ;
    sh:maxCount 1 ;
    sh:message "s223: A `GaugePressureSensor` must always observe a `Property` that has a value of true for qudt:isDeltaQuantity." ;
    sh:minCount 1 ;
    sh:path ( <http://data.ashrae.org/standard223#observes> <http://qudt.org/schema/qudt/isDeltaQuantity> ) ;
    sh:value true .


        

nce78f551a2fd48efa369b55f628b837fb431

URI: nce78f551a2fd48efa369b55f628b837fb431


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `TemperatureSensor` must always observe a `Property` that has a `QuantityKind` of `Temperature`." ;
    sh:message "s223: A `TemperatureSensor` must always observe a `Property` that has a `QuantityKind` of `Temperature`." ;
    sh:path <http://data.ashrae.org/standard223#observes> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Property> ;
            sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/quantitykind/Temperature> ;
                            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb237

URI: nce78f551a2fd48efa369b55f628b837fb237


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `CorrelatedColorTemperatureSensor` must always observe a `Property` that has a `QuantityKind` of `ThermodynamicTemperature`." ;
    sh:message "s223: A `CorrelatedColorTemperatureSensor` must always observe a `Property` that has a `QuantityKind` of `ThermodynamicTemperature`." ;
    sh:path <http://data.ashrae.org/standard223#observes> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Property> ;
            sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/quantitykind/ThermodynamicTemperature> ;
                            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb249

URI: nce78f551a2fd48efa369b55f628b837fb249


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `DuvSensor` must always observe a `Property` that has a `QuantityKind` of `Duv`." ;
    sh:message "s223: A `DuvSensor` must always observe a `Property` that has a `QuantityKind` of `Duv`." ;
    sh:path <http://data.ashrae.org/standard223#observes> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Property> ;
            sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/quantitykind/Duv> ;
                            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb342

URI: nce78f551a2fd48efa369b55f628b837fb342


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `IlluminanceSensor` must observe a `Property` that has a `QuantityKind` of Illuminance." ;
    sh:message "s223: An `IlluminanceSensor` must observe a `Property` that has a `QuantityKind` of Illuminance." ;
    sh:path <http://data.ashrae.org/standard223#observes> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Property> ;
            sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/quantitykind/Illuminance> ;
                            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb376

URI: nce78f551a2fd48efa369b55f628b837fb376


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `ofSubstance` is present it must associate the `ParticulateSensor` with a `Substance-Particulate`." ;
    sh:class <http://data.ashrae.org/standard223#Substance-Particulate> ;
    sh:message "s223: If the relation `ofSubstance` is present it must associate the `ParticulateSensor` with a `Substance-Particulate`." ;
    sh:path <http://data.ashrae.org/standard223#ofSubstance> .


        

nce78f551a2fd48efa369b55f628b837fb366

URI: nce78f551a2fd48efa369b55f628b837fb366


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `OccupantCounter` must always observe a `QuantifiableObservableProperty` that has a `QuantityKind` of `Population` and a `Unit` of `NUM`." ;
    sh:class <http://data.ashrae.org/standard223#QuantifiableObservableProperty> ;
    sh:message "s223: An `OccupantCounter` must always observe a `QuantifiableObservableProperty` that has a `QuantityKind` of `Population` and a `Unit` of `NUM`." ;
    sh:minCount 1 ;
    sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/unit/NUM> ;
                    sh:maxCount 1 ;
                    sh:path <http://qudt.org/schema/qudt/hasUnit> ],
                [ sh:hasValue <http://qudt.org/vocab/quantitykind/Population> ;
                    sh:maxCount 1 ;
                    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ;
    sh:path <http://data.ashrae.org/standard223#observes> .


        

nce78f551a2fd48efa369b55f628b837fb370

URI: nce78f551a2fd48efa369b55f628b837fb370


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `OccupantMotionSensor` must always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Motion`." ;
    sh:class <http://data.ashrae.org/standard223#EnumeratedObservableProperty> ;
    sh:message "s223: An `OccupantMotionSensor` must always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Motion`." ;
    sh:minCount 1 ;
    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Occupancy-Motion> ;
                    sh:maxCount 1 ;
                    sh:path <http://data.ashrae.org/standard223#hasEnumerationKind> ] ] ;
    sh:path <http://data.ashrae.org/standard223#observes> .


        

nce78f551a2fd48efa369b55f628b837fb373

URI: nce78f551a2fd48efa369b55f628b837fb373


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `OccupantPresenceSensor` must always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Presence`." ;
    sh:class <http://data.ashrae.org/standard223#EnumeratedObservableProperty> ;
    sh:message "s223: An `OccupantPresenceSensor` must always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Presence`." ;
    sh:minCount 1 ;
    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Occupancy-Presence> ;
                    sh:maxCount 1 ;
                    sh:path <http://data.ashrae.org/standard223#hasEnumerationKind> ] ] ;
    sh:path <http://data.ashrae.org/standard223#observes> .


        

nce78f551a2fd48efa369b55f628b837fb168

URI: nce78f551a2fd48efa369b55f628b837fb168


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `actuates` is present it must associate the `Actuator` with a `Equipment`." ;
    sh:class <http://data.ashrae.org/standard223#Equipment> ;
    sh:message "s223: If the relation `actuates` is present it must associate the `Actuator` with a `Equipment`." ;
    sh:path <http://data.ashrae.org/standard223#actuates> .


        

nce78f551a2fd48efa369b55f628b837fb169

URI: nce78f551a2fd48efa369b55f628b837fb169


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `Actuator` must be associated with at least one `ActuatableProperty` using the relation `actuatedByProperty`." ;
    sh:class <http://data.ashrae.org/standard223#ActuatableProperty> ;
    sh:message "s223: An `Actuator` must be associated with at least one `ActuatableProperty` using the relation `actuatedByProperty`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#actuatedByProperty> .


        

nce78f551a2fd48efa369b55f628b837fb226

URI: nce78f551a2fd48efa369b55f628b837fb226


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `executes` is present it must associate the `Controller` with a `Function`." ;
    sh:class <http://data.ashrae.org/standard223#Function> ;
    sh:message "s223: If the relation `executes` is present it must associate the `Controller` with a `Function`." ;
    sh:path <http://data.ashrae.org/standard223#executes> .


        

Function Property Shape

URI: http://data.ashrae.org/standard223#FunctionPropertyShape


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#FunctionPropertyShape> a sh:NodeShape ;
    rdfs:label "Function Property Shape" ;
    rdfs:comment "A `Function` must be associated with at least one `Property` using either the relation `hasInput` or `hasOutput`." ;
    sh:message "s223: A `Function` must be associated with at least one `Property` using either the relation `hasInput` or `hasOutput`." ;
    sh:or ( [ sh:property [ rdfs:comment "A `Function` must be associated with at least one `Property` using either the relation `hasInput` or `hasOutput`." ;
                        sh:class <http://data.ashrae.org/standard223#Property> ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasInput> ] ] [ sh:property [ rdfs:comment "A `Function` must be associated with at least one `Property` using either the relation `hasInput` or `hasOutput`." ;
                        sh:class <http://data.ashrae.org/standard223#Property> ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasOutput> ] ] ) ;
    sh:severity sh:Warning ;
    sh:targetClass <http://data.ashrae.org/standard223#Function> .


        

nce78f551a2fd48efa369b55f628b837fb930

URI: nce78f551a2fd48efa369b55f628b837fb930


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasInput` is present it must associate a `Function` with a `Property`." ;
    sh:class <http://data.ashrae.org/standard223#Property> ;
    sh:message "s223: If the relation `hasInput` is present it must associate a `Function` with a `Property`." ;
    sh:path <http://data.ashrae.org/standard223#hasInput> .


        

nce78f551a2fd48efa369b55f628b837fb931

URI: nce78f551a2fd48efa369b55f628b837fb931


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasOutput` is present it must associate a `Function` with a `Property`." ;
    sh:class <http://data.ashrae.org/standard223#Property> ;
    sh:message "s223: If the relation `hasOutput` is present it must associate a `Function` with a `Property`." ;
    sh:path <http://data.ashrae.org/standard223#hasOutput> .


        

nce78f551a2fd48efa369b55f628b837fb1046

URI: nce78f551a2fd48efa369b55f628b837fb1046


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasConnectionPoint` is present it must associate the `Connectable` with a `ConnectionPoint`." ;
    sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:message "s223: If the relation `hasConnectionPoint` is present it must associate the `Connectable` with a `ConnectionPoint`." ;
    sh:name "EquipmentToConnectionPointShape" ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> .


        

nce78f551a2fd48efa369b55f628b837fb1041

URI: nce78f551a2fd48efa369b55f628b837fb1041


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `cnx` is present it must associate the `Connectable` with a `ConnectionPoint`." ;
    sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:message "s223: If the relation `cnx` is present it must associate the `Connectable` with a `ConnectionPoint`." ;
    sh:path <http://data.ashrae.org/standard223#cnx> .


        

nce78f551a2fd48efa369b55f628b837fb1045

URI: nce78f551a2fd48efa369b55f628b837fb1045


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `connectedTo` is present it must associate the `Connectable` with a `Connectable`." ;
    sh:class <http://data.ashrae.org/standard223#Connectable> ;
    sh:message "s223: If the relation `connectedTo` is present it must associate the `Connectable` with a `Connectable`." ;
    sh:name "ConnectableToConnectableShape" ;
    sh:path <http://data.ashrae.org/standard223#connectedTo> .


        

nce78f551a2fd48efa369b55f628b837fb1047

URI: nce78f551a2fd48efa369b55f628b837fb1047


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `connected` is present it must associate the `Connectable` with a `Connectable`." ;
    sh:class <http://data.ashrae.org/standard223#Connectable> ;
    sh:message "s223: If the relation `connected` is present it must associate the `Connectable` with a `Connectable`." ;
    sh:name "SymmetricConnectableToConnectableShape" ;
    sh:path <http://data.ashrae.org/standard223#connected> .


        

nce78f551a2fd48efa369b55f628b837fb1048

URI: nce78f551a2fd48efa369b55f628b837fb1048


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `connectedThrough` is present it must associate the `Connectable` with a `Connection`." ;
    sh:class <http://data.ashrae.org/standard223#Connection> ;
    sh:message "s223: If the relation `connectedThrough` is present it must associate the `Connectable` with a `Connection`." ;
    sh:name "EquipmentToConnectionShape" ;
    sh:path <http://data.ashrae.org/standard223#connectedThrough> .


        

nce78f551a2fd48efa369b55f628b837fb1042

URI: nce78f551a2fd48efa369b55f628b837fb1042


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `connectedFrom` is present it must associate the `Connectable` with a `Connectable`." ;
    sh:class <http://data.ashrae.org/standard223#Connectable> ;
    sh:message "s223: If the relation `connectedFrom` is present it must associate the `Connectable` with a `Connectable`." ;
    sh:path <http://data.ashrae.org/standard223#connectedFrom> .


        

nce78f551a2fd48efa369b55f628b837fb1043

URI: nce78f551a2fd48efa369b55f628b837fb1043


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If a `Connectable` has s223:connected or s223:connectedTo (i.e. high-level connection specification), it must also have the supporting `cnx` relations (low-level connection specification)." ;
    sh:path <http://data.ashrae.org/standard223#cnx> ;
    sh:severity sh:Warning ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "If a `Connectable` has s223:connected or s223:connectedTo (i.e. high-level connection specification), it must also have the supporting `cnx` relations (low-level connection specification)." ;
            sh:message "s223: {$this} is s223:connected (high-level) to {?otherC} but not connected at the cnx-level." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?otherC
WHERE {
$this s223:connected ?otherC .
FILTER NOT EXISTS {$this s223:cnx+ ?otherC}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1063

URI: nce78f551a2fd48efa369b55f628b837fb1063


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `connected` relation using `connectedTo`" ;
    sh:name "InferredEquipmentToEquipmentPropertyfromconnectedTo" ;
    sh:object [ sh:path <http://data.ashrae.org/standard223#connectedTo> ] ;
    sh:predicate <http://data.ashrae.org/standard223#connected> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb1049

URI: nce78f551a2fd48efa369b55f628b837fb1049


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "Infer the `connected` relation for BiDirectional connections" ;
    sh:construct """
CONSTRUCT {$this s223:connected ?d2 .}
WHERE {
$this s223:connectedThrough/^s223:connectedThrough ?d2 .
FILTER ($this != ?d2) .
FILTER NOT EXISTS {$this s223:contains* ?d2} .
FILTER NOT EXISTS {?d2 s223:contains* $this} .
}
""" ;
    sh:name "InferredEquipmentToDownstreamEquipmentProperty" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> .


        

nce78f551a2fd48efa369b55f628b837fb1050

URI: nce78f551a2fd48efa369b55f628b837fb1050


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `cnx` relation using `isConnectionPointOf`." ;
    sh:name "InferredEquipmentToConnectionPointCnxPropertyFromInverse" ;
    sh:object [ sh:path [ sh:inversePath <http://data.ashrae.org/standard223#isConnectionPointOf> ] ] ;
    sh:predicate <http://data.ashrae.org/standard223#cnx> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb1060

URI: nce78f551a2fd48efa369b55f628b837fb1060


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `hasConnectionPoint` relation using `cnx`" ;
    sh:name "InferredEquipmentToConnectionPointProperty" ;
    sh:object [ sh:path <http://data.ashrae.org/standard223#cnx> ] ;
    sh:predicate <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb1062

URI: nce78f551a2fd48efa369b55f628b837fb1062


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "Infer the `connectedTo` relation using `connectsThrough` and `connectsTo`." ;
    sh:construct """
CONSTRUCT {$this s223:connectedTo ?equipment .}
WHERE {
$this s223:hasConnectionPoint ?cp .
?cp a s223:OutletConnectionPoint .
?cp s223:connectsThrough/s223:connectsTo ?equipment .
}
""" ;
    sh:name "InferredEquipmentToDownstreamEquipmentProperty" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> .


        

nce78f551a2fd48efa369b55f628b837fb1065

URI: nce78f551a2fd48efa369b55f628b837fb1065


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `cnx` relationship using `hasConnectionPoint`." ;
    sh:name "InferredEquipmentToConnectionPointCnxProperty" ;
    sh:object [ sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ] ;
    sh:predicate <http://data.ashrae.org/standard223#cnx> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb1053

URI: nce78f551a2fd48efa369b55f628b837fb1053


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `connectedThrough` relation using `hasConnectionPoint` and `connectsThrough`" ;
    sh:name "InferredEquipmentToConnectionProperty" ;
    sh:object [ sh:path ( <http://data.ashrae.org/standard223#hasConnectionPoint> <http://data.ashrae.org/standard223#connectsThrough> ) ] ;
    sh:predicate <http://data.ashrae.org/standard223#connectedThrough> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb1057

URI: nce78f551a2fd48efa369b55f628b837fb1057


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `connected` relation using `connectedFrom`" ;
    sh:name "InferredEquipmentToEquipmentPropertyfromconnectedFrom" ;
    sh:object [ sh:path <http://data.ashrae.org/standard223#connectedFrom> ] ;
    sh:predicate <http://data.ashrae.org/standard223#connected> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb1059

URI: nce78f551a2fd48efa369b55f628b837fb1059


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "Infer the `connectedFrom` relations using `connectsThrough` and `connectsFrom`." ;
    sh:construct """
CONSTRUCT {$this s223:connectedFrom ?equipment .}
WHERE {
$this s223:hasConnectionPoint ?cp .
?cp a s223:InletConnectionPoint .
?cp s223:connectsThrough/s223:connectsFrom ?equipment .
}
""" ;
    sh:name "InferredEquipmentToUpstreamEquipmentProperty" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> .


        

nce78f551a2fd48efa369b55f628b837fb1126

URI: nce78f551a2fd48efa369b55f628b837fb1126


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ConnectionPoint` must be associated with at most one `Connectable` using the `cnx` relation." ;
    sh:message "s223: A `ConnectionPoint` must be associated with at most one `Connectable` using the `cnx` relation." ;
    sh:path <http://data.ashrae.org/standard223#cnx> ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Connectable> ] ;
    sh:qualifiedValueShapesDisjoint true .


        

nce78f551a2fd48efa369b55f628b837fb1113

URI: nce78f551a2fd48efa369b55f628b837fb1113


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `ConnectionPoint` must not have both a `mapsTo` and a `connectsThrough` relation." ;
    sh:path <http://data.ashrae.org/standard223#mapsTo> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "A `ConnectionPoint` must not have both a `mapsTo` and a `connectsThrough` relation." ;
            sh:message "s223: {$this} cannot have both a `mapsTo` {?uppercp} and a `connectsThrough` {?connection}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?uppercp ?connection
WHERE {
$this s223:mapsTo ?uppercp .
$this s223:connectsThrough ?connection .
?connection a/rdfs:subClassOf* s223:Connection .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1128

URI: nce78f551a2fd48efa369b55f628b837fb1128


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasRole` is present it must associate the `ConnectionPoint` with an `EnumerationKind-Role`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind-Role> ;
    sh:message "s223: If the relation `hasRole` is present it must associate the `ConnectionPoint` with an `EnumerationKind-Role`." ;
    sh:path <http://data.ashrae.org/standard223#hasRole> .


        

nce78f551a2fd48efa369b55f628b837fb1120

URI: nce78f551a2fd48efa369b55f628b837fb1120


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ConnectionPoint` must be associated with at most one `Connection` using the `cnx` relation" ;
    sh:message "s223: A `ConnectionPoint` must be associated with at most one `Connection` using the `cnx` relation" ;
    sh:path <http://data.ashrae.org/standard223#cnx> ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Connection> ] ;
    sh:qualifiedValueShapesDisjoint true .


        

nce78f551a2fd48efa369b55f628b837fb1132

URI: nce78f551a2fd48efa369b55f628b837fb1132


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ConnectionPoint` must be associated with at most one `Connection` using the relation `connectsThrough`." ;
    sh:class <http://data.ashrae.org/standard223#Connection> ;
    sh:maxCount 1 ;
    sh:message "s223: This `ConnectionPoint` must be associated with at most one `Connection`." ;
    sh:name "ConnectionPointToConnectionShape" ;
    sh:path <http://data.ashrae.org/standard223#connectsThrough> ;
    sh:severity sh:Info .


        

nce78f551a2fd48efa369b55f628b837fb1124

URI: nce78f551a2fd48efa369b55f628b837fb1124


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, but is associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` might need a `mapsTo` relation to a `ConnectionPoint` of the containing `Equipment`." ;
    sh:path <http://data.ashrae.org/standard223#mapsTo> ;
    sh:severity sh:Info ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, but is associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` might need a `mapsTo` relation to a `ConnectionPoint` of the containing `Equipment`." ;
            sh:message "s223: `ConnectionPoint` {$this} could be missing a `mapsTo` relation to a `ConnectionPoint` of {?containerEquipment} because it is associated with a `Junction` or `Equipment` that is contained by {?containerEquipment}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
    SELECT $this ?containerEquipment
    WHERE {
        FILTER NOT EXISTS {$this s223:connectsThrough ?anything1} .
        FILTER NOT EXISTS {$this s223:mapsTo ?anything2} .
        FILTER NOT EXISTS {?anything3 s223:hasBoundaryConnectionPoint $this} .
        $this s223:isConnectionPointOf ?equipment .
        ?containerEquipment s223:contains ?equipment .
        }
        """ ] .


        

nce78f551a2fd48efa369b55f628b837fb1129

URI: nce78f551a2fd48efa369b55f628b837fb1129


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, and is not associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` probably needs an association with a `Connection`." ;
    sh:path <http://data.ashrae.org/standard223#connectsThrough> ;
    sh:severity sh:Info ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, and is not associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` probably needs an association with a `Connection`." ;
            sh:message "s223: `ConnectionPoint` {$this} probably needs an association with a `Connection`, or use of `hasOptionalConnectionPoint` or `hasBoundaryConnectionPoint` qualifiers." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
    SELECT $this 
    WHERE {
        FILTER NOT EXISTS {?sys1 s223:hasBoundaryConnectionPoint $this} .
        FILTER NOT EXISTS {?sys2 s223:hasOptionalConnectionPoint $this} .
        FILTER NOT EXISTS {$this s223:connectsThrough ?anything1} .
        FILTER NOT EXISTS {$this s223:mapsTo ?anything2} .
        $this s223:isConnectionPointOf ?equipment .
        FILTER NOT EXISTS {?containerEquipment s223:contains ?equipment} .
        }
        """ ] .


        

nce78f551a2fd48efa369b55f628b837fb1108

URI: nce78f551a2fd48efa369b55f628b837fb1108


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If a `ConnectionPoint` `mapsTo` another `ConnectionPoint`, the respective `Equipment` should have a `contains` relation." ;
    sh:path <http://data.ashrae.org/standard223#mapsTo> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "If a `ConnectionPoint` `mapsTo` another `ConnectionPoint`, the respective `Equipment` should have a `contains` relation." ;
            sh:message "s223: {?otherEquipment} should contain {?equipment} because `ConnectionPoint` {$this} has a `mapsTo` relation." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?equipment ?otherEquipment
WHERE {
$this s223:mapsTo ?otherCP .
?equipment s223:hasConnectionPoint $this .
?otherEquipment s223:hasConnectionPoint ?otherCP .
FILTER NOT EXISTS {?otherEquipment s223:contains ?equipment}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1115

URI: nce78f551a2fd48efa369b55f628b837fb1115


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasElectricalPhase` is present it must associate the `ConnectionPoint` with an ElectricalPhaseIdentifier or ElectricalVoltagePhases." ;
    sh:message "s223: If the relation `hasElectricalPhase` is present it must associate the `ConnectionPoint` with an ElectricalPhaseIdentifier or ElectricalVoltagePhases." ;
    sh:or ( [ sh:class <http://data.ashrae.org/standard223#EnumerationKind-ElectricalPhaseIdentifier> ] [ sh:class <http://data.ashrae.org/standard223#EnumerationKind-ElectricalVoltagePhases> ] ) ;
    sh:path <http://data.ashrae.org/standard223#hasElectricalPhase> .


        

nce78f551a2fd48efa369b55f628b837fb1133

URI: nce78f551a2fd48efa369b55f628b837fb1133


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ConnectionPoint` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
    sh:class <http://data.ashrae.org/standard223#Substance-Medium> ;
    sh:maxCount 1 ;
    sh:message "s223: A `ConnectionPoint` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
    sh:minCount 1 ;
    sh:name "ConnectionPoint medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> .


        

nce78f551a2fd48efa369b55f628b837fb1111

URI: nce78f551a2fd48efa369b55f628b837fb1111


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Ensure that the Medium identified by a `ConnectionPoint` via the s223:hasMedium relation is compatible with the Medium identified by the entity identified by the `mapsTo`+ relation." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Ensure that the Medium identified by a `ConnectionPoint` via the s223:hasMedium relation is compatible with the Medium identified by the entity identified by the `mapsTo`+ relation." ;
            sh:message "s223: {$this} declares a medium of {?a}, but the medium of {?b} is declared by {?target} pointed to by the `mapsTo`+ relation." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT DISTINCT $this ?a ?b ?target
WHERE {
$this s223:hasMedium ?a .
$this s223:mapsTo+ ?target .
?target s223:hasMedium ?b .
?a a/rdfs:subClassOf* s223:Substance-Medium .
?b a/rdfs:subClassOf* s223:Substance-Medium .
FILTER (?a != ?b ) .
FILTER (NOT EXISTS {?b a/rdfs:subClassOf* ?a}) .
FILTER (NOT EXISTS {?a a/rdfs:subClassOf* ?b}) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1110

URI: nce78f551a2fd48efa369b55f628b837fb1110


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the relation `mapsTo`" ;
    sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:maxCount 1 ;
    sh:message "s223: A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the relation `mapsTo`" ;
    sh:path <http://data.ashrae.org/standard223#mapsTo> .


        

nce78f551a2fd48efa369b55f628b837fb1122

URI: nce78f551a2fd48efa369b55f628b837fb1122


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the inverse of relation `mapsTo`" ;
    sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:maxCount 1 ;
    sh:message "s223: A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the inverse of relation `mapsTo`" ;
    sh:path [ sh:inversePath <http://data.ashrae.org/standard223#mapsTo> ] .


        

nce78f551a2fd48efa369b55f628b837fb1131

URI: nce78f551a2fd48efa369b55f628b837fb1131


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ConnectionPoint` must be associated with exactly one `Connectable` using the relation `isConnectionPointOf`." ;
    sh:class <http://data.ashrae.org/standard223#Connectable> ;
    sh:maxCount 1 ;
    sh:message "s223: A `ConnectionPoint` must be associated with exactly one `Connectable` using the relation `isConnectionPointOf`." ;
    sh:minCount 1 ;
    sh:name "ConnectionPointToEquipmentShape" ;
    sh:path <http://data.ashrae.org/standard223#isConnectionPointOf> .


        

nce78f551a2fd48efa369b55f628b837fb1134

URI: nce78f551a2fd48efa369b55f628b837fb1134


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `hasElectricalPhase` value from any connected `Conductor`." ;
    sh:object [ sh:path ( <http://data.ashrae.org/standard223#connectsThrough> <http://data.ashrae.org/standard223#hasElectricalPhase> ) ] ;
    sh:predicate <http://data.ashrae.org/standard223#hasElectricalPhase> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb1138

URI: nce78f551a2fd48efa369b55f628b837fb1138


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `mapsTo` is present it must associate the `BidirectionalConnectionPoint` with a `BidirectionalConnectionPoint`." ;
    sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
    sh:message "s223: If the relation `mapsTo` is present it must associate the `BidirectionalConnectionPoint` with a `BidirectionalConnectionPoint`." ;
    sh:path <http://data.ashrae.org/standard223#mapsTo> .


        

nce78f551a2fd48efa369b55f628b837fb1224

URI: nce78f551a2fd48efa369b55f628b837fb1224


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `pairedConnectionPoint` is present it must associate the `InletConnectionPoint` with an `OutletConnectionPoint`." ;
    sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
    sh:message "s223: If the relation `pairedConnectionPoint` is present it must associate the `InletConnectionPoint` with an `OutletConnectionPoint`." ;
    sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> .


        

nce78f551a2fd48efa369b55f628b837fb1223

URI: nce78f551a2fd48efa369b55f628b837fb1223


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `mapsTo` is present it must associate the `InletConnectionPoint` with an `InletConnectionPoint`." ;
    sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
    sh:message "s223: If the relation `mapsTo` is present it must associate the `InletConnectionPoint` with an `InletConnectionPoint`." ;
    sh:path <http://data.ashrae.org/standard223#mapsTo> .


        

nce78f551a2fd48efa369b55f628b837fb1225

URI: nce78f551a2fd48efa369b55f628b837fb1225


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Ensure an `InletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`" ;
    sh:path <http://data.ashrae.org/standard223#mapsTo> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Ensure an `InletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`" ;
            sh:message "s223: {$this} must have a `mapsTo` an `InletConnectionPoint` of {?parentEquipment} and not an external `Connection` from {?sourceEquipment}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?parentEquipment ?sourceEquipment
WHERE {
?equipment s223:hasConnectionPoint $this .
?parentEquipment s223:contains ?equipment .
$this s223:connectsThrough/s223:connectsFrom ?sourceEquipment .
FILTER NOT EXISTS {?parentEquipment s223:contains ?sourceEquipment} .
FILTER NOT EXISTS {$this s223:mapsTo ?anything} .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1221

URI: nce78f551a2fd48efa369b55f628b837fb1221


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `mapsTo` is present it must associate the `OutletConnectionPoint` with an `OutletConnectionPoint`." ;
    sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
    sh:message "s223: If the relation `mapsTo` is present it must associate the `OutletConnectionPoint` with an `OutletConnectionPoint`." ;
    sh:path <http://data.ashrae.org/standard223#mapsTo> .


        

nce78f551a2fd48efa369b55f628b837fb1219

URI: nce78f551a2fd48efa369b55f628b837fb1219


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Ensure an `OutletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`" ;
    sh:path <http://data.ashrae.org/standard223#mapsTo> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Ensure an `OutletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`" ;
            sh:message "s223: {$this} must have a `mapsTo` an `OutletConnectionPoint` of {?parentEquipment} and not an external `Connection` to {?destinationEquipment}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?parentEquipment ?destinationEquipment
WHERE {
?equipment s223:hasConnectionPoint $this .
?parentEquipment s223:contains ?equipment .
$this s223:connectsThrough/s223:connectsTo ?destinationEquipment .
FILTER NOT EXISTS {?parentEquipment s223:contains ?destinationEquipment} .
FILTER NOT EXISTS {$this s223:mapsTo ?anything} .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1222

URI: nce78f551a2fd48efa369b55f628b837fb1222


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `pairedConnectionPoint` is present it must associate the `OutletConnectionPoint` with an `InletConnectionPoint`." ;
    sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
    sh:message "s223: If the relation `pairedConnectionPoint` is present it must associate the `OutletConnectionPoint` with an `InletConnectionPoint`." ;
    sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> .


        

nce78f551a2fd48efa369b55f628b837fb1020

URI: nce78f551a2fd48efa369b55f628b837fb1020


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 4: A `Connection` with constituents and an associated `ConnectionPoint` with constituents." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 4: A `Connection` with constituents and an associated `ConnectionPoint` with constituents." ;
            sh:message "s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m2 .
$this s223:hasMedium ?m1 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1024

URI: nce78f551a2fd48efa369b55f628b837fb1024


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasRole` is present it must associate the `Connection` with an `EnumerationKind-Role`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind-Role> ;
    sh:message "s223: If the relation `hasRole` is present it must associate the `Connection` with an `EnumerationKind-Role`." ;
    sh:path <http://data.ashrae.org/standard223#hasRole> .


        

nce78f551a2fd48efa369b55f628b837fb1017

URI: nce78f551a2fd48efa369b55f628b837fb1017


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 5: Two `ConnectionPoint`s with pure mediums." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 5: Two `ConnectionPoint`s with pure mediums." ;
            sh:message "s223: {?cp1} with medium {?m1} is incompatible with {?cp2} with medium {?m2}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m1 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp2 s223:hasMedium ?m2 .
FILTER (?m1 != ?m2 ) .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1002

URI: nce78f551a2fd48efa369b55f628b837fb1002


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 2: A `Connection` with constituents and an associated `ConnectionPoint` with a pure medium." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 2: A `Connection` with constituents and an associated `ConnectionPoint` with a pure medium." ;
            sh:message "s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m1 .
$this s223:hasMedium ?m2 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1006

URI: nce78f551a2fd48efa369b55f628b837fb1006


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `Connection` must only have a `cnx` relation with a `ConnectionPoint`" ;
    sh:path <http://data.ashrae.org/standard223#cnx> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "A `Connection` must only have a `cnx` relation with a `ConnectionPoint`" ;
            sh:message "s223: {$this} cannot have a s223:cnx relation to {?something}, because {?something} is not a `ConnectionPoint`." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """SELECT $this ?something
WHERE {
$this s223:cnx ?something .
FILTER NOT EXISTS {?something a/rdfs:subClassOf* s223:ConnectionPoint} .
}""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1019

URI: nce78f551a2fd48efa369b55f628b837fb1019


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Connection` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
    sh:class <http://data.ashrae.org/standard223#Substance-Medium> ;
    sh:maxCount 1 ;
    sh:message "s223: A `Connection` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
    sh:minCount 1 ;
    sh:name "Connection medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> .


        

nce78f551a2fd48efa369b55f628b837fb1013

URI: nce78f551a2fd48efa369b55f628b837fb1013


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 1: A `Connection` with a pure medium and an associated `ConnectionPoint` with a pure medium." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 1: Two pure mediums." ;
            sh:message "s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m1 .
$this s223:hasMedium ?m2 .
FILTER (?m1 != ?m2 ) .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1010

URI: nce78f551a2fd48efa369b55f628b837fb1010


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Connection` must have two or more `connectsAt` relations to connection points" ;
    sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:message "s223: A `Connection` must have two or more `connectsAt` relations to connection points" ;
    sh:minCount 2 ;
    sh:path <http://data.ashrae.org/standard223#connectsAt> ;
    sh:severity sh:Warning .


        

ConnectionCnxShape

URI: http://data.ashrae.org/standard223#ConnectionCnxShape


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ConnectionCnxShape> a sh:NodeShape ;
    rdfs:label "ConnectionCnxShape" ;
    rdfs:comment "You need either an InletCP and an OutletCP, or at least one BidirectionalCP and another CP of any type." ;
    sh:message "s223: You need either an InletCP and an OutletCP, or at least one BidirectionalCP and another CP of any type." ;
    sh:or ( [ sh:property [ rdfs:comment "A `Connection` shall have at least two `connectsAt` relations allowing flow in and out of the `Connection`." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#connectsAt> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ] ;
                        sh:qualifiedValueShapesDisjoint true ;
                        sh:severity sh:Warning ],
                    [ rdfs:comment "A `Connection` shall have at least two `connectsAt` relations allowing flow in and out of the `Connection`." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#connectsAt> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ] ;
                        sh:qualifiedValueShapesDisjoint true ;
                        sh:severity sh:Warning ] ] [ sh:property [ rdfs:comment "A `Connection` shall have at least two `connectsAt` relations allowing flow in and out of the `Connection`." ;
                        sh:minCount 2 ;
                        sh:path <http://data.ashrae.org/standard223#connectsAt> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ] ;
                        sh:qualifiedValueShapesDisjoint true ;
                        sh:severity sh:Warning ] ] ) ;
    sh:severity sh:Warning ;
    sh:targetClass <http://data.ashrae.org/standard223#Connection> .


        

nce78f551a2fd48efa369b55f628b837fb1015

URI: nce78f551a2fd48efa369b55f628b837fb1015


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `connectsFrom` is present it must associate the `Connection` with a `Connectable`." ;
    sh:class <http://data.ashrae.org/standard223#Connectable> ;
    sh:message "s223: If the relation `connectsFrom` is present it must associate the `Connection` with a `Connectable`." ;
    sh:name "ConnectionToUpstreamConnectableShape" ;
    sh:path <http://data.ashrae.org/standard223#connectsFrom> .


        

nce78f551a2fd48efa369b55f628b837fb1004

URI: nce78f551a2fd48efa369b55f628b837fb1004


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 3: `Connection` with a pure medium and an associated `ConnectionPoint` with constituents." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 3: `Connection` with a pure medium and an associated `ConnectionPoint` with constituents." ;
            sh:message "s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m2 .
$this s223:hasMedium ?m1 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1008

URI: nce78f551a2fd48efa369b55f628b837fb1008


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 6: Two `ConnectionPoint`s, one with a medium with constituents and one with a pure medium." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 6: A medium with constituents and a pure medium." ;
            sh:message "s223: {?cp1} with medium {?m1} is incompatible with {?cp2} with medium {?m2}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m1 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
FILTER (?cp1 != ?cp2 ) .
?cp2 s223:hasMedium ?m2 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1011

URI: nce78f551a2fd48efa369b55f628b837fb1011


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents." ;
            sh:message "s223: {?cp1} with medium {?m2} is incompatible with {?cp2} with medium {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m2 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
FILTER (?cp1 != ?cp2 ) .
?cp2 s223:hasMedium ?m1 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1023

URI: nce78f551a2fd48efa369b55f628b837fb1023


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `connectsTo` is present it must associate the `Connection` with a `Connectable`." ;
    sh:class <http://data.ashrae.org/standard223#Connectable> ;
    sh:message "s223: If the relation `connectsTo` is present it must associate the `Connection` with a `Connectable`." ;
    sh:name "ConnectionToDownstreamConnectableShape" ;
    sh:path <http://data.ashrae.org/standard223#connectsTo> .


        

nce78f551a2fd48efa369b55f628b837fb1016

URI: nce78f551a2fd48efa369b55f628b837fb1016


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `Connection` must have two or more `cnx` relations to connection points" ;
    sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:message "s223: A `Connection` must have two or more `cnx` relations to connection points" ;
    sh:path <http://data.ashrae.org/standard223#cnx> .


        

nce78f551a2fd48efa369b55f628b837fb1022

URI: nce78f551a2fd48efa369b55f628b837fb1022


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "If the relation `hasThermodynamicPhase` is present it must associate the `Connection` with at most one `EnumerationKind-ThermodynamicPhase`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind-ThermodynamicPhase> ;
    sh:maxCount 1 ;
    sh:message "s223: If the relation `hasThermodynamicPhase` is present it must associate the `Connection` with at most one `EnumerationKind-ThermodynamicPhase`." ;
    sh:path <http://data.ashrae.org/standard223#hasThermodynamicPhase> .


        

nce78f551a2fd48efa369b55f628b837fb1026

URI: nce78f551a2fd48efa369b55f628b837fb1026


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "Infer the `connectsTo` relation using `connectsAt`" ;
    sh:construct """
CONSTRUCT {$this s223:connectsTo ?equipment .}
WHERE {
$this s223:connectsAt ?cp .
?cp a s223:InletConnectionPoint .
?cp s223:isConnectionPointOf ?equipment .
}
""" ;
    sh:name "InferredConnectionToDownstreamEquipmentProperty" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> .


        

nce78f551a2fd48efa369b55f628b837fb1032

URI: nce78f551a2fd48efa369b55f628b837fb1032


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer `cnx` relation using `connectsAt`" ;
    sh:object [ sh:path <http://data.ashrae.org/standard223#connectsAt> ] ;
    sh:predicate <http://data.ashrae.org/standard223#cnx> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb1027

URI: nce78f551a2fd48efa369b55f628b837fb1027


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer `cnx` relation using `connectsThrough`" ;
    sh:object [ sh:path [ sh:inversePath <http://data.ashrae.org/standard223#connectsThrough> ] ] ;
    sh:predicate <http://data.ashrae.org/standard223#cnx> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb1030

URI: nce78f551a2fd48efa369b55f628b837fb1030


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `connectsAt` relation using `cnx`" ;
    sh:object [ sh:path <http://data.ashrae.org/standard223#cnx> ] ;
    sh:predicate <http://data.ashrae.org/standard223#connectsAt> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb1025

URI: nce78f551a2fd48efa369b55f628b837fb1025


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "Infer the `connectsFrom` relation using `connectsAt`" ;
    sh:construct """
CONSTRUCT {$this s223:connectsFrom ?equipment .}
WHERE {
$this s223:connectsAt ?cp .
?cp a s223:OutletConnectionPoint .
?cp s223:isConnectionPointOf ?equipment .
}
""" ;
    sh:name "InferredConnectionToUpstreamEquipmentProperty" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> .


        

nce78f551a2fd48efa369b55f628b837fb219

URI: nce78f551a2fd48efa369b55f628b837fb219


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Conductor` must be associated with exactly one `Constituent-Electricity` using the relation `hasMedium`." ;
    sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
    sh:maxCount 1 ;
    sh:message "s223: A `Conductor` must be associated with exactly one `Constituent-Electricity` using the relation `hasMedium`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> .


        

nce78f551a2fd48efa369b55f628b837fb212

URI: nce78f551a2fd48efa369b55f628b837fb212


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Ensure the electrical phase is the same as all connected `ConnectionPoint`s" ;
    sh:path <http://data.ashrae.org/standard223#hasElectricalPhase> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Ensure the electrical phase is the same as all connected `ConnectionPoint`s" ;
            sh:message "s223: {$this} has an electrical phase of {?myphase} which is different from {?cpPhase} for `ConnectionPoint` {?cp}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
    SELECT $this ?myphase ?cp ?cpPhase
    WHERE {
        $this s223:hasElectricalPhase ?myphase .
        $this s223:connectsAt ?cp .
        ?cp s223:hasElectricalPhase ?cpPhase .
        FILTER (?myphase != ?cpPhase) .
        }
        """ ] .


        

nce78f551a2fd48efa369b55f628b837fb214

URI: nce78f551a2fd48efa369b55f628b837fb214


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "If the relation `hasElectricalPhase` is present it must associate the `Conductor` with a single ElectricalPhaseIdentifier or ElectricalVoltagePhases value." ;
    sh:maxCount 1 ;
    sh:message "s223: If the relation `hasElectricalPhase` is present it must associate the `Conductor` with a single ElectricalPhaseIdentifier or ElectricalVoltagePhases value." ;
    sh:or ( [ sh:class <http://data.ashrae.org/standard223#EnumerationKind-ElectricalPhaseIdentifier> ] [ sh:class <http://data.ashrae.org/standard223#EnumerationKind-ElectricalVoltagePhases> ] ) ;
    sh:path <http://data.ashrae.org/standard223#hasElectricalPhase> .


        

nce78f551a2fd48efa369b55f628b837fb220

URI: nce78f551a2fd48efa369b55f628b837fb220


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `hasElectricalPhase` value from any connected `ConnectionPoint`s." ;
    sh:object [ sh:path ( <http://data.ashrae.org/standard223#cnx> <http://data.ashrae.org/standard223#hasElectricalPhase> ) ] ;
    sh:predicate <http://data.ashrae.org/standard223#hasElectricalPhase> ;
    sh:subject sh:this .


        

JunctionUsageWarning

URI: http://data.ashrae.org/standard223#JunctionUsageWarning


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<http://data.ashrae.org/standard223#JunctionUsageWarning> a sh:NodeShape ;
    rdfs:label "JunctionUsageWarning" ;
    rdfs:comment "This `Junction` is not used to model significant details of a branching point in a connection, and may not be required." ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `Junction` is not used to model significant details of a branching point in a connection, and may not be required." ;
            sh:message "This `Junction` {$this} is not used to model significant details of a branching point in a connection, and may not be required." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
            SELECT $this
            WHERE {
                $this s223:hasConnectionPoint? | s223:connectedThrough? ?junc_cp_conn .

                FILTER NOT EXISTS {
                    # Connection has a relation that is not in the structural or required relationships
                    { ?junc_cp_conn ?p ?o . } UNION {?o ?p ?junc_cp_conn . }
                    FILTER (?p NOT IN (
                        s223:connected, s223:connectedTo, s223:connectedThrough, s223:hasConnectionPoint,
                        s223:connectsAt, s223:isConnectionPointOf, s223:cnx, rdf:type, rdfs:label, rdfs:comment
                    )) 
                } .
            }
        """ ;
            sh:severity sh:Warning ] ;
    sh:targetClass <http://data.ashrae.org/standard223#Junction> .


        

nce78f551a2fd48efa369b55f628b837fb846

URI: nce78f551a2fd48efa369b55f628b837fb846


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case5: Two `ConnectionPoint`s with pure mediums." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 5: Two `ConnectionPoint`s with pure mediums." ;
            sh:message "s223: {?cp1} with Medium {?m1} is incompatible with {?cp2} with Medium {?m2}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m1 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
FILTER (?cp1 != ?cp2 ) .
?cp2 s223:hasMedium ?m2 .
FILTER (?m1 != ?m2 ) .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb857

URI: nce78f551a2fd48efa369b55f628b837fb857


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case1: A `Junction` with a pure medium and an associated `ConnectionPoint` with a pure medium." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 1: Two pure mediums." ;
            sh:message "s223: `Junction` {$this} with Medium {?m2} is incompatible with {?cp} with Medium {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m1 .
$this s223:hasMedium ?m2 .
FILTER (?m1 != ?m2 ) .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb853

URI: nce78f551a2fd48efa369b55f628b837fb853


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 3: `Junction` with a pure medium and an associated `ConnectionPoint` with constituents" ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 3: `Junction` with a pure medium and an associated `ConnectionPoint` with constituents." ;
            sh:message "s223: `Junction` {$this} with Medium {?m1} is incompatible with {?cp} with Medium {?m2}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m2 .
$this s223:hasMedium ?m1 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb852

URI: nce78f551a2fd48efa369b55f628b837fb852


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Junction` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
    sh:class <http://data.ashrae.org/standard223#Substance-Medium> ;
    sh:maxCount 1 ;
    sh:message "s223: A `Junction` must be associated with exactly one `Substance-Medium` using the relation `hasMedium`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> .


        

nce78f551a2fd48efa369b55f628b837fb848

URI: nce78f551a2fd48efa369b55f628b837fb848


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 6: Two `ConnectionPoint`s, one with a medium with constituents and one a pure medium." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 6: Two `ConnectionPoint`s with a medium with constituents and a pure medium." ;
            sh:message "s223: {?cp1} with Medium {?m1} is incompatible with {?cp2} with Medium {?m2}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m1 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp2 s223:hasMedium ?m2 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb850

URI: nce78f551a2fd48efa369b55f628b837fb850


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents." ;
            sh:message "s223: {?cp1} with Medium {?m1} is incompatible with {?cp2} with Medium {?m2}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?cp1 ?m1 ?cp2 ?m2
WHERE {
$this s223:cnx ?cp1 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp1 s223:hasMedium ?m1 .
$this s223:cnx ?cp2 .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp2 s223:hasMedium ?m2 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb844

URI: nce78f551a2fd48efa369b55f628b837fb844


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 2: A `Junction` with constituents and an associated `ConnectionPoint` with a pure medium." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 2: A `Junction` with constituents and an associated `ConnectionPoint` with a pure medium." ;
            sh:message "s223: `Junction` {$this} with Medium {?m2} is incompatible with {?cp} with Medium {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m1 .
$this s223:hasMedium ?m2 .
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb855

URI: nce78f551a2fd48efa369b55f628b837fb855


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case4: `Junction` with constituents and an associated `ConnectionPoint` with constituents." ;
    sh:name "Test for compatible declared Medium" ;
    sh:path <http://data.ashrae.org/standard223#hasMedium> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 4: `Junction` with constituents and an associated `ConnectionPoint` with constituents." ;
            sh:message "s223: `Junction` {$this} with Medium {?m2} is incompatible with {?cp} with Medium {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m2 ?cp ?m1
WHERE {
$this s223:cnx ?cp .
?cp a/rdfs:subClassOf* s223:ConnectionPoint .
?cp s223:hasMedium ?m1 .
$this s223:hasMedium ?m2 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] .


        

JunctionCPShape

URI: http://data.ashrae.org/standard223#JunctionCPShape


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#JunctionCPShape> a sh:NodeShape ;
    rdfs:label "JunctionCPShape" ;
    rdfs:comment "A `Junction` shall have at least two `ConnectionPoint`s including (a) at least one inlet and one outlet, or (b) at least one bidirectional connection point." ;
    sh:message "s223: A `Junction` shall have at least two `ConnectionPoint`s including (a) at least one inlet and one outlet, or (b) at least one bidirectional connection point." ;
    sh:or ( [ sh:property [ rdfs:comment "A `Junction` shall have at least two `ConnectionPoint`s including (a) at least one inlet and one outlet, or (b) at least one bidirectional connection point." ;
                        sh:minCount 2 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ] ;
                        sh:qualifiedValueShapesDisjoint true ],
                    [ rdfs:comment "A `Junction` shall have at least two `ConnectionPoint`s including (a) at least one inlet and one outlet, or (b) at least one bidirectional connection point." ;
                        sh:minCount 2 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ] ;
                        sh:qualifiedValueShapesDisjoint true ] ] [ sh:property [ rdfs:comment "A `Junction` shall have at least two `ConnectionPoint`s including (a) at least one inlet and one outlet, or (b) at least one bidirectional connection point." ;
                        sh:minCount 2 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ] ;
                        sh:qualifiedValueShapesDisjoint true ] ] ) ;
    sh:severity sh:Warning ;
    sh:targetClass <http://data.ashrae.org/standard223#Junction> .


        

nce78f551a2fd48efa369b55f628b837fb790

URI: nce78f551a2fd48efa369b55f628b837fb790


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `System` may be defined with a number of connection points that are the \"boundary\" of the equipment. The `hasOptionalConnectionPoint` relation is used to reference those connection points of its equipment that may not be `connected`, the \"dangling connection point\" should not generate a validation error." ;
    sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:message "s223: A `System` may be defined with a number of connection points that are the \"boundary\" of the equipment. The `hasOptionalConnectionPoint` relation is used to reference those connection points of its equipment that may not be connected, the \"dangling connection point\" should not generate a validation error." ;
    sh:path <http://data.ashrae.org/standard223#hasOptionalConnectionPoint> .


        

nce78f551a2fd48efa369b55f628b837fb793

URI: nce78f551a2fd48efa369b55f628b837fb793


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] a sh:PropertyShape ;
    rdfs:comment "A `System` should be associated with at least one instance of `Equipment` or `System` using the relation `hasMember`." ;
    sh:message "s223: A `System` must be associated with at least one instance of `Equipment` or `System` using the relation `hasMember`." ;
    sh:minCount 1 ;
    sh:or ( [ sh:class <http://data.ashrae.org/standard223#Equipment> ] [ sh:class <http://data.ashrae.org/standard223#System> ] ) ;
    sh:path <http://data.ashrae.org/standard223#hasMember> ;
    sh:severity sh:Warning .


        

nce78f551a2fd48efa369b55f628b837fb792

URI: nce78f551a2fd48efa369b55f628b837fb792


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasRole` is present, it must associate the `System` with an `EnumerationKind-Role`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind-Role> ;
    sh:message "s223: If the relation `hasRole` is present, it must associate the `System` with an `EnumerationKind-Role`." ;
    sh:path <http://data.ashrae.org/standard223#hasRole> .


        

nce78f551a2fd48efa369b55f628b837fb800

URI: nce78f551a2fd48efa369b55f628b837fb800


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "Ensure that the Boundary CPs of a `System` belong to only members of that `System`" ;
    sh:message "s223: `System` {$this} `hasBoundaryConnectionPoint` {?cp}, belonging to {?con} that is not a member of {?this}." ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
    sh:select """
SELECT $this ?cp ?con
WHERE {
$this s223:hasBoundaryConnectionPoint ?cp .
?cp s223:isConnectionPointOf ?con .
FILTER NOT EXISTS {$this s223:hasMember+ ?con}
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb791

URI: nce78f551a2fd48efa369b55f628b837fb791


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `System` may be defined with a number of connection points that are the \"boundary\" of the equipment. The `hasBoundaryConnectionPoint` relation is used to reference those connection points of its equipment that must be `connected`, but in the context of validating the a model with the system by itself, the \"dangling connection point\" should not generate a validation error." ;
    sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:message "s223: A `System` may be defined with a number of connection points that are the \"boundary\" of the equipment. The `hasBoundaryConnectionPoint` relation is used to reference those connection points of its equipment that must be `connected`, but in the context of validating the a model with the system by itself, the \"dangling connection point\" should not generate a validation error." ;
    sh:path <http://data.ashrae.org/standard223#hasBoundaryConnectionPoint> .


        

nce78f551a2fd48efa369b55f628b837fb798

URI: nce78f551a2fd48efa369b55f628b837fb798


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `hasBoundaryConnectionPoint` relation using `hasOptionalConnectionPoint`." ;
    sh:name "InferredSystemToBoundaryConnectionPointFromOptional" ;
    sh:object [ sh:path <http://data.ashrae.org/standard223#hasOptionalConnectionPoint> ] ;
    sh:predicate <http://data.ashrae.org/standard223#hasBoundaryConnectionPoint> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb869

URI: nce78f551a2fd48efa369b55f628b837fb869


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `encloses` is present it must associate the `PhysicalSpace` with a `DomainSpace`." ;
    sh:class <http://data.ashrae.org/standard223#DomainSpace> ;
    sh:message "s223: If the relation `encloses` is present it must associate the `PhysicalSpace` with a `DomainSpace`." ;
    sh:path <http://data.ashrae.org/standard223#encloses> .


        

nce78f551a2fd48efa369b55f628b837fb870

URI: nce78f551a2fd48efa369b55f628b837fb870


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `contains` is present it must associate the `PhysicalSpace` with a `PhysicalSpace`." ;
    sh:class <http://data.ashrae.org/standard223#PhysicalSpace> ;
    sh:message "s223: If the relation `contains` is present it must associate the `PhysicalSpace` with a `PhysicalSpace`." ;
    sh:path <http://data.ashrae.org/standard223#contains> .


        

nce78f551a2fd48efa369b55f628b837fb815

URI: nce78f551a2fd48efa369b55f628b837fb815


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `DomainSpace` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind-Domain> ;
    sh:maxCount 1 ;
    sh:message "s223: A `DomainSpace` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasDomain> .


        

nce78f551a2fd48efa369b55f628b837fb816

URI: nce78f551a2fd48efa369b55f628b837fb816


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `DomainSpace` must be enclosed by a `PhysicalSpace`." ;
    sh:message "s223: A `DomainSpace` must be enclosed by a `PhysicalSpace`." ;
    sh:minCount 1 ;
    sh:path [ sh:inversePath <http://data.ashrae.org/standard223#encloses> ] ;
    sh:severity sh:Info .


        

nce78f551a2fd48efa369b55f628b837fb818

URI: nce78f551a2fd48efa369b55f628b837fb818


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer a `hasDomain` relation by checking any enclosing `Zone` to determine the domain." ;
    sh:object [ sh:path ( [ sh:inversePath <http://data.ashrae.org/standard223#hasDomainSpace> ] <http://data.ashrae.org/standard223#hasDomain> ) ] ;
    sh:predicate <http://data.ashrae.org/standard223#hasDomain> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb802

URI: nce78f551a2fd48efa369b55f628b837fb802


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Zone` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind-Domain> ;
    sh:maxCount 1 ;
    sh:message "s223: A `Zone` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasDomain> .


        

nce78f551a2fd48efa369b55f628b837fb803

URI: nce78f551a2fd48efa369b55f628b837fb803


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "The associated Domain of a `Zone` and the Domain of the DomainSpaces it `contains` must be the same." ;
    sh:path <http://data.ashrae.org/standard223#hasDomain> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "The associated Domain of a `Zone` and the Domain of the DomainSpaces it contains must be the same." ;
            sh:message "s223: `Zone` {$this} has a Domain of {?domain}, but it contains a `DomainSpace` {?ds} which has a Domain of {?dsdomain}. These should be the same." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT DISTINCT $this ?domain ?ds ?dsdomain
WHERE {
$this a s223:Zone .
$this s223:hasDomain ?domain .
$this s223:contains ?ds .
?ds s223:hasDomain ?dsdomain .
FILTER (?domain != ?dsdomain)
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb801

URI: nce78f551a2fd48efa369b55f628b837fb801


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Zone` must be associated with at least one `DomainSpace` using the relation `hasDomainSpace`." ;
    sh:class <http://data.ashrae.org/standard223#DomainSpace> ;
    sh:message "s223: A `Zone` must be associated with at least one `DomainSpace` using the relation `hasDomainSpace`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasDomainSpace> .


        

nce78f551a2fd48efa369b55f628b837fb805

URI: nce78f551a2fd48efa369b55f628b837fb805


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer a `hasDomain` relation by checking any enclosed DomainSpaces to determine the domain." ;
    sh:object [ sh:path ( <http://data.ashrae.org/standard223#hasDomainSpace> <http://data.ashrae.org/standard223#hasDomain> ) ] ;
    sh:predicate <http://data.ashrae.org/standard223#hasDomain> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb809

URI: nce78f551a2fd48efa369b55f628b837fb809


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer a `hasDomain` relation by checking any enclosing `ZoneGroup` to determine the domain." ;
    sh:object [ sh:path ( [ sh:inversePath <http://data.ashrae.org/standard223#hasZone> ] <http://data.ashrae.org/standard223#hasDomain> ) ] ;
    sh:predicate <http://data.ashrae.org/standard223#hasDomain> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb466

URI: nce78f551a2fd48efa369b55f628b837fb466


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ZoneGroup` must be associated with at least one `Zone` using the relation `hasZone`." ;
    sh:class <http://data.ashrae.org/standard223#Zone> ;
    sh:message "s223: A `ZoneGroup` must be associated with at least one `Zone` using the relation `hasZone`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasZone> .


        

nce78f551a2fd48efa369b55f628b837fb465

URI: nce78f551a2fd48efa369b55f628b837fb465


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ZoneGroup` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind-Domain> ;
    sh:maxCount 1 ;
    sh:message "s223: A `ZoneGroup` must be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasDomain> .


        

nce78f551a2fd48efa369b55f628b837fb467

URI: nce78f551a2fd48efa369b55f628b837fb467


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer a `hasDomain` relation by checking any enclosed Zones to determine the domain." ;
    sh:object [ sh:path ( <http://data.ashrae.org/standard223#hasZone> <http://data.ashrae.org/standard223#hasDomain> ) ] ;
    sh:predicate <http://data.ashrae.org/standard223#hasDomain> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb988

URI: nce78f551a2fd48efa369b55f628b837fb988


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `EnumerationKind-Numerical` can be associated with a decimal value using the relation `hasValue`." ;
    sh:datatype xsd:decimal ;
    sh:path <http://data.ashrae.org/standard223#hasValue> .


        

nce78f551a2fd48efa369b55f628b837fb989

URI: nce78f551a2fd48efa369b55f628b837fb989


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `EnumerationKind-Numerical` must be associated with at least one `QuantityKind` using the relation `hasQuantityKind`." ;
    sh:class <http://qudt.org/schema/qudt/QuantityKind> ;
    sh:minCount 1 ;
    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> .


        

nce78f551a2fd48efa369b55f628b837fb990

URI: nce78f551a2fd48efa369b55f628b837fb990


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `EnumerationKind-Numerical` must be associated with at least one `Unit` using the relation `hasUnit`." ;
    sh:class <http://qudt.org/schema/qudt/Unit> ;
    sh:minCount 1 ;
    sh:path <http://qudt.org/schema/qudt/hasUnit> ;
    sh:severity sh:Info .


        

nce78f551a2fd48efa369b55f628b837fb973

URI: nce78f551a2fd48efa369b55f628b837fb973


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A DC-Voltage must have a voltage" ;
    sh:class <http://data.ashrae.org/standard223#Numerical-Voltage> ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasVoltage> .


        

nce78f551a2fd48efa369b55f628b837fb975

URI: nce78f551a2fd48efa369b55f628b837fb975


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `Numerical-Frequency` must have a `QuantityKind` of `Frequency`" ;
    sh:hasValue <http://qudt.org/vocab/quantitykind/Frequency> ;
    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> .


        

nce78f551a2fd48efa369b55f628b837fb974

URI: nce78f551a2fd48efa369b55f628b837fb974


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `Numerical-Frequency` must have a `Unit` of `Hertz`" ;
    sh:hasValue <http://qudt.org/vocab/unit/HZ> ;
    sh:path <http://qudt.org/schema/qudt/hasUnit> .


        

nce78f551a2fd48efa369b55f628b837fb1152

URI: nce78f551a2fd48efa369b55f628b837fb1152


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An AC-Numerical-LineLineVoltage must have a voltage" ;
    sh:class <http://data.ashrae.org/standard223#Numerical-Voltage> ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasVoltage> .


        

nce78f551a2fd48efa369b55f628b837fb1153

URI: nce78f551a2fd48efa369b55f628b837fb1153


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An AC-Numerical-LineNeutralVoltage must have a voltage" ;
    sh:class <http://data.ashrae.org/standard223#Numerical-Voltage> ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasVoltage> .


        

nce78f551a2fd48efa369b55f628b837fb1228

URI: nce78f551a2fd48efa369b55f628b837fb1228


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `Numerical-Voltage` must have a `QuantityKind` of `Voltage`" ;
    sh:hasValue <http://qudt.org/vocab/quantitykind/Voltage> ;
    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> .


        

nce78f551a2fd48efa369b55f628b837fb1227

URI: nce78f551a2fd48efa369b55f628b837fb1227


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `Numerical-Voltage` must have a `Unit` of `Volts`" ;
    sh:hasValue <http://qudt.org/vocab/unit/V> ;
    sh:path <http://qudt.org/schema/qudt/hasUnit> .


        

nce78f551a2fd48efa369b55f628b837fb968

URI: nce78f551a2fd48efa369b55f628b837fb968


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment """If the relation `composedOf` is present, it must associate an `EnumerationKind-Substance` with one or more Properties that 
identify and characterize its constituents. The `Property` identifies the constituent using the relation `ofConstituent`. If appropriate, a 
`QuantifiableProperty` may be used to also specify the amount of the constituent using the relations `qudt:hasQuantityKind`, `qudt:hasUnit`, and `qudt:hasValue`.  
For example, see {s223:Water-GlycolSolution}.""" ;
    sh:class <http://data.ashrae.org/standard223#Property> ;
    sh:path <http://data.ashrae.org/standard223#composedOf> .


        

nce78f551a2fd48efa369b55f628b837fb969

URI: nce78f551a2fd48efa369b55f628b837fb969


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If a substance has a constituent, that constituent may not itself have constituents." ;
    sh:path <http://data.ashrae.org/standard223#composedOf> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "If a substance has a constituent, that constituent may not itself have constituents." ;
            sh:message "s223: This substance {$this} has a constituent {?constituent} that itself composed ofs {?nextConstituent}. Create new substance with only atomic constituents." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?constituent ?nextConstituent
WHERE {
$this s223:composedOf ?constituent .
?constituent s223:ofConstituent/s223:composedOf ?nextConstituent .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1264

URI: nce78f551a2fd48efa369b55f628b837fb1264


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An electricity AC medium must have a frequency" ;
    sh:class <http://data.ashrae.org/standard223#Numerical-Frequency> ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasFrequency> .


        

nce78f551a2fd48efa369b55f628b837fb1265

URI: nce78f551a2fd48efa369b55f628b837fb1265


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An electricity AC medium must have a voltage." ;
    sh:minCount 1 ;
    sh:or ( [ sh:class <http://data.ashrae.org/standard223#Numerical-LineLineVoltage> ] [ sh:class <http://data.ashrae.org/standard223#Numerical-LineNeutralVoltage> ] [ sh:class <http://data.ashrae.org/standard223#Numerical-Voltage> ] ) ;
    sh:path <http://data.ashrae.org/standard223#hasVoltage> .


        

nce78f551a2fd48efa369b55f628b837fb1272

URI: nce78f551a2fd48efa369b55f628b837fb1272


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An electricity AC medium must have a number of electrical phases." ;
    sh:class <http://data.ashrae.org/standard223#Numerical-NumberOfElectricalPhases> ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasNumberOfElectricalPhases> .


        

nce78f551a2fd48efa369b55f628b837fb1145

URI: nce78f551a2fd48efa369b55f628b837fb1145


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An electricity DC medium must have two reference voltages." ;
    sh:minCount 1 ;
    sh:or ( [ sh:class <http://data.ashrae.org/standard223#Numerical-DCVoltage> ] [ sh:class <http://data.ashrae.org/standard223#Numerical-Voltage> ] ) ;
    sh:path <http://data.ashrae.org/standard223#hasVoltage> .


        

nce78f551a2fd48efa369b55f628b837fb960

URI: nce78f551a2fd48efa369b55f628b837fb960


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "There must be at least two QuantifiableProperties that characterize the constituents of a `Water-GlycolSolution`." ;
    sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
    sh:minCount 2 ;
    sh:path <http://data.ashrae.org/standard223#composedOf> .


        

nce78f551a2fd48efa369b55f628b837fb955

URI: nce78f551a2fd48efa369b55f628b837fb955


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "One of the constituents of a `Water-GlycolSolution` must be `Constituent-Glycol`." ;
    sh:path <http://data.ashrae.org/standard223#composedOf> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
            sh:node [ sh:property [ rdfs:comment "One of the constituents of a `Water-GlycolSolution` must be `Constituent-Glycol`." ;
                            sh:hasValue <http://data.ashrae.org/standard223#Constituent-Glycol> ;
                            sh:path <http://data.ashrae.org/standard223#ofConstituent> ],
                        [ rdfs:comment "The `QuantityKind` of the constituent must be `VolumeFraction`." ;
                            sh:hasValue <http://qudt.org/vocab/quantitykind/VolumeFraction> ;
                            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb961

URI: nce78f551a2fd48efa369b55f628b837fb961


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasFreezingPoint` is used, the object must be a `QuantifiableProperty` with a `QuantityKind` of `Temperature`." ;
    sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
    sh:message "The object must be a `QuantifiableProperty` with a `QuantityKind` of `Temperature`." ;
    sh:node [ sh:property [ sh:hasValue <http://qudt.org/vocab/quantitykind/Temperature> ;
                    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ;
    sh:path <http://data.ashrae.org/standard223#hasFreezingPoint> .


        

nce78f551a2fd48efa369b55f628b837fb950

URI: nce78f551a2fd48efa369b55f628b837fb950


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "One of the constituents of a `Water-GlycolSolution` must be `Constituent-H2O`." ;
    sh:path <http://data.ashrae.org/standard223#composedOf> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
            sh:node [ sh:property [ rdfs:comment "One of the constituents of a `Water-GlycolSolution` must be `Constituent-H2O`." ;
                            sh:hasValue <http://data.ashrae.org/standard223#Constituent-H2O> ;
                            sh:path <http://data.ashrae.org/standard223#ofConstituent> ],
                        [ rdfs:comment "The `QuantityKind` of the constituent must be `VolumeFraction`." ;
                            sh:hasValue <http://qudt.org/vocab/quantitykind/VolumeFraction> ;
                            sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb1159

URI: nce78f551a2fd48efa369b55f628b837fb1159


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `Property` must not have both a `hasInternalReference` and a `hasValue` relation." ;
    sh:path <http://data.ashrae.org/standard223#hasInternalReference> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "A `Property` must not have both a `hasInternalReference` and a `hasValue` relation." ;
            sh:message "s223: {$this} cannot have both a `hasInternalReference` and a `hasValue` relation." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this
WHERE {
$this s223:hasInternalReference ?int .
$this s223:hasValue ?val .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1161

URI: nce78f551a2fd48efa369b55f628b837fb1161


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Property` can use at most one relation `hasValue` if it is required to provide a static value in the model. It is not meant for real-time value (see {s223:hasExternalReference})." ;
    sh:maxCount 1 ;
    sh:message "s223: A `Property` can use at most one relation `hasValue` if it is required to provide a static value in the model. It is not meant for real-time value (see {s223:hasExternalReference})." ;
    sh:path <http://data.ashrae.org/standard223#hasValue> .


        

nce78f551a2fd48efa369b55f628b837fb1170

URI: nce78f551a2fd48efa369b55f628b837fb1170


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasAspect` is present, it must associate the `Property` with an `EnumerationKind`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind> ;
    sh:message "s223: If the relation `hasAspect` is present, it must associate the `Property` with an `EnumerationKind`." ;
    sh:path <http://data.ashrae.org/standard223#hasAspect> .


        

nce78f551a2fd48efa369b55f628b837fb1164

URI: nce78f551a2fd48efa369b55f628b837fb1164


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasExternalReference` is present it must associate the `Property` with an `ExternalReference`." ;
    sh:class <http://data.ashrae.org/standard223#ExternalReference> ;
    sh:message "s223: If the relation `hasExternalReference` is present it must associate the `Property` with an `ExternalReference`." ;
    sh:path <http://data.ashrae.org/standard223#hasExternalReference> .


        

nce78f551a2fd48efa369b55f628b837fb1174

URI: nce78f551a2fd48efa369b55f628b837fb1174


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "A `Property` cannot be declared an instance of both an `ActuatableProperty` and an `ObservableProperty`." ;
    sh:message "s223: {$this} cannot be declared an instance of both an `ActuatableProperty` and an `ObservableProperty`." ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
    sh:select """
SELECT $this
WHERE {
$this a/rdfs:subClassOf* s223:ActuatableProperty .
$this a/rdfs:subClassOf* s223:ObservableProperty .
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb1169

URI: nce78f551a2fd48efa369b55f628b837fb1169


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Property` can be associated with at most one `Substance-Medium` using the relation `ofMedium`." ;
    sh:class <http://data.ashrae.org/standard223#Substance-Medium> ;
    sh:maxCount 1 ;
    sh:message "s223: A `Property` can be associated with at most one `Substance-Medium` using the relation `ofMedium`." ;
    sh:path <http://data.ashrae.org/standard223#ofMedium> .


        

nce78f551a2fd48efa369b55f628b837fb1171

URI: nce78f551a2fd48efa369b55f628b837fb1171


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Property` can be associated with at most one `Function` using the inverse relation `hasOutput`." ;
    sh:class <http://data.ashrae.org/standard223#Function> ;
    sh:maxCount 1 ;
    sh:message "s223: A `Property` can be associated with at most one `Function` using the inverse relation `hasOutput`." ;
    sh:path [ sh:inversePath <http://data.ashrae.org/standard223#hasOutput> ] .


        

nce78f551a2fd48efa369b55f628b837fb1162

URI: nce78f551a2fd48efa369b55f628b837fb1162


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Property` must not be observed (set) by more than one entity." ;
    sh:maxCount 1 ;
    sh:message "s223: A `Property` must not be observed (set) by more than one entity." ;
    sh:path [ sh:inversePath <http://data.ashrae.org/standard223#observes> ] .


        

nce78f551a2fd48efa369b55f628b837fb1166

URI: nce78f551a2fd48efa369b55f628b837fb1166


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "If an incoming relation `composedOf` exists, then the `Property` must have a declared substance using the relation `ofConstituent`." ;
    sh:message "s223: `Property` {$this} is referred to by {?something} with s223:composedOf, but the `Property` has no value for s223:ofConstituent." ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
    sh:select """
SELECT $this ?something
WHERE {
?something s223:composedOf $this .
FILTER NOT EXISTS {$this s223:ofConstituent ?someSubstance} .
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb1173

URI: nce78f551a2fd48efa369b55f628b837fb1173


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Property` can be associated with at most one `EnumerationKind-Substance` using the relation `ofSubstance`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind-Substance> ;
    sh:maxCount 1 ;
    sh:message "s223: A `Property` can be associated with at most one `EnumerationKind-Substance` using the relation `ofSubstance`." ;
    sh:path <http://data.ashrae.org/standard223#ofSubstance> .


        

nce78f551a2fd48efa369b55f628b837fb1158

URI: nce78f551a2fd48efa369b55f628b837fb1158


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `hasInternalReference` is present it must associate the `Property` with another `Property`." ;
    sh:class <http://data.ashrae.org/standard223#Property> ;
    sh:message "s223: If the relation `hasInternalReference` is present it must associate the `Property` with another `Property`." ;
    sh:path <http://data.ashrae.org/standard223#hasInternalReference> .


        

nce78f551a2fd48efa369b55f628b837fb1156

URI: nce78f551a2fd48efa369b55f628b837fb1156


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `Property` must not have both a `hasExternalReference` and a `hasValue` relation." ;
    sh:path <http://data.ashrae.org/standard223#hasValue> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "A `Property` must not have both a `hasExternalReference` and a `hasValue` relation." ;
            sh:message "s223: {$this} cannot have both a `hasExternalReference` and a `hasValue` relation." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this
WHERE {
$this s223:hasExternalReference ?ext .
$this s223:hasValue ?val .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1167

URI: nce78f551a2fd48efa369b55f628b837fb1167


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If a `Property` has an `ofSubstance` relation, it should also have an `ofMedium` relation." ;
    sh:path <http://data.ashrae.org/standard223#ofSubstance> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "If a `Property` has an `ofSubstance` relation, it should also have an `ofMedium` relation." ;
            sh:message "s223: Since Property {$this} has an `ofSubstance` relation, it should also have an `ofMedium` relation." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this
WHERE {
$this s223:ofSubstance ?substance .
FILTER NOT EXISTS {$this s223:ofMedium ?medium} .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1154

URI: nce78f551a2fd48efa369b55f628b837fb1154


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `Property` must not have both a `hasInternalReference` and a `hasExternalReference` relation." ;
    sh:path <http://data.ashrae.org/standard223#hasInternalReference> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "A `Property` must not have both a `hasInternalReference` and a `hasExternalReference` relation." ;
            sh:message "s223: {$this} cannot have both a `hasInternalReference` and a `hasExternalReference` relation." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this
WHERE {
$this s223:hasInternalReference ?int .
$this s223:hasExternalReference ?ext .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb874

URI: nce78f551a2fd48efa369b55f628b837fb874


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `ActuatableProperty` normally is referred to by `Equipment` using the relation `actuatedByProperty`." ;
    sh:class <http://data.ashrae.org/standard223#Equipment> ;
    sh:message "s223: An `ActuatableProperty` normally is referred to by `Equipment` using the relation `actuatedByProperty`." ;
    sh:minCount 1 ;
    sh:path [ sh:inversePath <http://data.ashrae.org/standard223#actuatedByProperty> ] ;
    sh:severity sh:Warning .


        

nce78f551a2fd48efa369b55f628b837fb864

URI: nce78f551a2fd48efa369b55f628b837fb864


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `ObservableProperty` normally is referred to by a `Sensor` using the relation `observes`." ;
    sh:class <http://data.ashrae.org/standard223#Sensor> ;
    sh:message "s223: An `ObservableProperty` normally is referred to by a `Sensor` using the relation `observes`." ;
    sh:minCount 1 ;
    sh:path [ sh:inversePath <http://data.ashrae.org/standard223#observes> ] ;
    sh:severity sh:Warning .


        

nce78f551a2fd48efa369b55f628b837fb824

URI: nce78f551a2fd48efa369b55f628b837fb824


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Checks for valid enumeration value consistent with the stated `EnumerationKind`." ;
    sh:path <http://data.ashrae.org/standard223#hasValue> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Checks for valid enumeration value consistent with the stated `EnumerationKind`." ;
            sh:message "s223: {$this} has an enumeration value of {?value} which is not a valid {?kind}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?value ?kind
WHERE {
$this s223:hasValue ?value .
$this s223:hasEnumerationKind ?kind .
FILTER (NOT EXISTS {?value a/rdfs:subClassOf* ?kind}) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb826

URI: nce78f551a2fd48efa369b55f628b837fb826


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `EnumerableProperty` must be associated with exactly one `EnumerationKind` using the relation `hasEnumerationKind`." ;
    sh:class <http://data.ashrae.org/standard223#EnumerationKind> ;
    sh:maxCount 1 ;
    sh:message "s223: An `EnumerableProperty` must be associated with exactly one `EnumerationKind` using the relation `hasEnumerationKind`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasEnumerationKind> .


        

nce78f551a2fd48efa369b55f628b837fb1183

URI: nce78f551a2fd48efa369b55f628b837fb1183


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "This `QuantifiableProperty` and the Setpoint associated with it have non-commensurate `QuantityKind`s." ;
    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `QuantifiableProperty` and the Setpoint associated with it have non-commensurate `QuantityKind`s." ;
            sh:message "s223: {$this} uses `QuantityKind` {?pqk} with DimensionVector {?pdv}, while Setpoint {?setpoint} uses `QuantityKind` {?sqk} with DimensionVector {?sdv}. These are non-commensurate" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?setpoint ?pqk ?sqk ?pdv ?sdv
WHERE {
$this qudt:hasQuantityKind ?pqk .
$this s223:hasSetpoint ?setpoint .
?setpoint qudt:hasQuantityKind ?sqk .
?pqk qudt:hasDimensionVector ?pdv .
?sqk qudt:hasDimensionVector ?sdv .
FILTER (?pqk != ?sqk) .
FILTER (?pdv != ?sdv) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1194

URI: nce78f551a2fd48efa369b55f628b837fb1194


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `QuantifiableProperty` can be associated with at most one `Unit` using the relation `hasUnit`." ;
    sh:class <http://qudt.org/schema/qudt/Unit> ;
    sh:maxCount 1 ;
    sh:message "s223: A `QuantifiableProperty` can be associated with at most one `Unit` using the relation `hasUnit`." ;
    sh:path <http://qudt.org/schema/qudt/hasUnit> .


        

nce78f551a2fd48efa369b55f628b837fb1191

URI: nce78f551a2fd48efa369b55f628b837fb1191


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the `Deadband` associated with it." ;
    sh:path <http://qudt.org/schema/qudt/hasUnit> ;
    sh:severity sh:Info ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the `Deadband` associated with it." ;
            sh:message "s223: {$this} uses `Unit` {?punit}, while `Deadband` {?deadband} uses `Unit` {?dunit}. Be careful." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?deadband ?punit ?dunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasDeadband ?deadband .
?deadband qudt:hasUnit ?dunit .
?punit qudt:hasDimensionVector ?pdv .
?dunit qudt:hasDimensionVector ?ddv .
FILTER (?punit != ?dunit) .
FILTER (?pdv = ?ddv) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1211

URI: nce78f551a2fd48efa369b55f628b837fb1211


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLConstraint ;
    rdfs:comment "Checks for consistent dimension vectors for a `QuantityKind` and the `Unit`" ;
    sh:message "s223: Inconsistent dimensionalities among the `Property`'s `Unit` and `Property`'s `QuantityKind`" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
    sh:select """
SELECT $this
   WHERE 
{
      $this qudt:hasQuantityKind/qudt:hasDimensionVector ?qkdv1 .
      $this qudt:hasUnit/qudt:hasDimensionVector ?qkdv2 .
FILTER (?qkdv1 != ?qkdv2) .
}
""" .


        

nce78f551a2fd48efa369b55f628b837fb1196

URI: nce78f551a2fd48efa369b55f628b837fb1196


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "This `QuantifiableProperty` and the threshold associated with it have non-commensurate `QuantityKind`s." ;
    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `QuantifiableProperty` and the threshold associated with it have non-commensurate `QuantityKind`s." ;
            sh:message "s223: {$this} uses `QuantityKind` {?pqk} with DimensionVector {?pdv}, while threshold {?threshold} uses `QuantityKind` {?tqk} with DimensionVector {?tdv}. These are non-commensurate" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?threshold ?pqk ?sqk ?pdv ?sdv
WHERE {
$this qudt:hasQuantityKind ?pqk .
$this s223:hasThreshold ?threshold .
?threshold qudt:hasQuantityKind ?tqk .
?pqk qudt:hasDimensionVector ?pdv .
?tqk qudt:hasDimensionVector ?tdv .
FILTER (?pqk != ?tqk) .
FILTER (?pdv != ?tdv) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1205

URI: nce78f551a2fd48efa369b55f628b837fb1205


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `QuantifiableProperty` must be associated with a `QuantityKind` using the relation `hasQuantityKind`." ;
    sh:class <http://qudt.org/schema/qudt/QuantityKind> ;
    sh:maxCount 1 ;
    sh:message "s223: A `QuantifiableProperty` must be associated with a `QuantityKind` using the relation `hasQuantityKind`." ;
    sh:minCount 1 ;
    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> .


        

nce78f551a2fd48efa369b55f628b837fb1187

URI: nce78f551a2fd48efa369b55f628b837fb1187


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "This `QuantifiableProperty` cannot have a value without a `Unit`." ;
    sh:path <http://data.ashrae.org/standard223#hasValue> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `QuantifiableProperty` cannot have a value without a `Unit`." ;
            sh:message "s223: {$this} referenced by {?subject} has a value of {?v} but does not specify a `Unit`." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?v ?subject
WHERE {
$this s223:hasValue ?v .
FILTER NOT EXISTS {$this qudt:hasUnit ?u} .
?subject ?p $this .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1185

URI: nce78f551a2fd48efa369b55f628b837fb1185


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "This `QuantifiableProperty` and the associated threshold use non-commensurate `Unit`s." ;
    sh:path <http://qudt.org/schema/qudt/hasUnit> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `QuantifiableProperty` and the associated threshold use non-commensurate `Unit`s." ;
            sh:message "s223: {$this} uses `Unit` {?punit}, while threshold {?threshold} uses `Unit` {?tunit}. These are non-commensurate." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?threshold ?punit ?tunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasThreshold ?threshold .
?threshold qudt:hasUnit ?tunit .
?punit qudt:hasDimensionVector ?pdv .
?tunit qudt:hasDimensionVector ?tdv .
FILTER (?punit != ?tunit) .
FILTER (?pdv != ?tdv) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1203

URI: nce78f551a2fd48efa369b55f628b837fb1203


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the threshold associated with it." ;
    sh:path <http://qudt.org/schema/qudt/hasUnit> ;
    sh:severity sh:Info ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the threshold associated with it." ;
            sh:message "s223: {$this} uses `Unit` {?punit}, while threshold {?threshold} uses `Unit` {?tunit}. Be careful." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?threshold ?punit ?tunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasThreshold ?threshold .
?threshold qudt:hasUnit ?tunit .
?punit qudt:hasDimensionVector ?pdv .
?tunit qudt:hasDimensionVector ?tdv .
FILTER (?punit != ?tunit) .
FILTER (?pdv = ?tdv) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1181

URI: nce78f551a2fd48efa369b55f628b837fb1181


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "This `QuantifiableProperty` and the `Deadband` associated with it have non-commensurate `QuantityKind`s." ;
    sh:path <http://qudt.org/schema/qudt/hasQuantityKind> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `QuantifiableProperty` and the `Deadband` associated with it have non-commensurate `QuantityKind`s." ;
            sh:message "s223: {$this} uses `QuantityKind` {?pqk} with DimensionVector {?pdv}, while `Deadband` {?deadband} uses `QuantityKind` {?dqk} with DimensionVector {?ddv}. These are non-commensurate" ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?deadband ?pqk ?dqk ?pdv ?ddv
WHERE {
$this qudt:hasQuantityKind ?pqk .
$this s223:hasDeadband ?deadband .
?deadband qudt:hasQuantityKind ?dqk .
?pqk qudt:hasDimensionVector ?pdv .
?dqk qudt:hasDimensionVector ?ddv .
FILTER (?pqk != ?dqk) .
FILTER (?pdv != ?ddv) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1190

URI: nce78f551a2fd48efa369b55f628b837fb1190


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `QuantifiableProperty` can be associated with a`QuantifiableProperty` using the relation `hasThreshold`." ;
    sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
    sh:message "s223: A `QuantifiableProperty` can be associated with a`QuantifiableProperty` using the relation `hasThreshold`." ;
    sh:path <http://data.ashrae.org/standard223#hasThreshold> .


        

nce78f551a2fd48efa369b55f628b837fb1206

URI: nce78f551a2fd48efa369b55f628b837fb1206


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "This `QuantifiableProperty` and the associated setpoint use non-commensurate `Unit`s." ;
    sh:path <http://qudt.org/schema/qudt/hasUnit> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `QuantifiableProperty` and the associated setpoint use non-commensurate `Unit`s." ;
            sh:message "s223: {$this} uses `Unit` {?punit}, while setpoint {?setpoint} uses `Unit` {?sunit}. These are non-commensurate." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?setpoint ?punit ?sunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasSetpoint ?setpoint .
?setpoint qudt:hasUnit ?sunit .
?punit qudt:hasDimensionVector ?pdv .
?sunit qudt:hasDimensionVector ?sdv .
FILTER (?punit != ?sunit) .
FILTER (?pdv != ?sdv) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1199

URI: nce78f551a2fd48efa369b55f628b837fb1199


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasSetpoint`." ;
    sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
    sh:message "s223: A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasSetpoint`." ;
    sh:path <http://data.ashrae.org/standard223#hasSetpoint> .


        

nce78f551a2fd48efa369b55f628b837fb1202

URI: nce78f551a2fd48efa369b55f628b837fb1202


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasDeadband`." ;
    sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
    sh:message "s223: A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasDeadband`." ;
    sh:path <http://data.ashrae.org/standard223#hasDeadband> .


        

nce78f551a2fd48efa369b55f628b837fb1200

URI: nce78f551a2fd48efa369b55f628b837fb1200


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the setpoint associated with it." ;
    sh:path <http://qudt.org/schema/qudt/hasUnit> ;
    sh:severity sh:Info ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `QuantifiableProperty` uses a different `Unit` than the setpoint associated with it." ;
            sh:message "s223: {$this} uses `Unit` {?punit}, while setpoint {?setpoint} uses `Unit` {?sunit}. Be careful." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?setpoint ?punit ?sunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasSetpoint ?setpoint .
?setpoint qudt:hasUnit ?sunit .
?punit qudt:hasDimensionVector ?pdv .
?sunit qudt:hasDimensionVector ?sdv .
FILTER (?punit != ?sunit) .
FILTER (?pdv = ?sdv) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1195

URI: nce78f551a2fd48efa369b55f628b837fb1195


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment """A `QuantifiableProperty` can be associated with an optional Boolean flag using the relation isDeltaQuantity. 
If the relation isDeltaQuantity has a value of true, the associated value should be interpreted as a difference reading, such as a 
temperature difference. This is needed to distinguish between a temperature reading and a temperature difference reading, which
affects unit conversion calculations.""" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
    sh:message """A `QuantifiableProperty` can be associated with an optional Boolean flag using the relation isDeltaQuantity. 
If the relation isDeltaQuantity has a value of true, the associated value should be interpreted as a difference reading, such as a 
temperature difference. This is needed to distinguish between a temperature reading and a temperature difference reading, which
affects unit conversion calculations.""" ;
    sh:path <http://qudt.org/schema/qudt/isDeltaQuantity> .


        

nce78f551a2fd48efa369b55f628b837fb1193

URI: nce78f551a2fd48efa369b55f628b837fb1193


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `QuantifiableProperty` should use `s223:hasValue` instead of `qudt:value`." ;
    sh:maxCount 0 ;
    sh:message "s223: A `QuantifiableProperty` should use `s223:hasValue` instead of `qudt:value`." ;
    sh:path <http://qudt.org/schema/qudt/value> .


        

nce78f551a2fd48efa369b55f628b837fb1198

URI: nce78f551a2fd48efa369b55f628b837fb1198


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment """Normally, a `QuantifiableProperty` is associated with a static decimal value using `hasValue`, along with a single 
`Unit` and `QuantityKind`. However, in some cases, a `QuantifiableProperty` may instead be associated with a `QuantityValue` using the relation 
`quantityValue`. This allows the `QuantityValue` to express multiple equivalent combinations of `Unit` and value.""" ;
    sh:class <http://qudt.org/schema/qudt/QuantityValue> ;
    sh:message """Normally, a `QuantifiableProperty` is associated with a static decimal value using `hasValue`, along with a single 
`Unit` and `QuantityKind`. However, in some cases, a `QuantifiableProperty` may instead be associated with a `QuantityValue` using the relation 
`quantityValue`. This allows the `QuantityValue` to express multiple equivalent combinations of `Unit` and value.""" ;
    sh:path <http://qudt.org/schema/qudt/quantityValue> .


        

nce78f551a2fd48efa369b55f628b837fb1189

URI: nce78f551a2fd48efa369b55f628b837fb1189


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `QuantifiableProperty` should use `s223:hasValue` instead of `qudt:value`." ;
    sh:maxCount 0 ;
    sh:message "s223: A `QuantifiableProperty` should use `s223:hasValue` instead of `qudt:value`." ;
    sh:path <http://qudt.org/schema/qudt/value> .


        

nce78f551a2fd48efa369b55f628b837fb1208

URI: nce78f551a2fd48efa369b55f628b837fb1208


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "This `QuantifiableProperty` and the associated `Deadband` use non-commensurate `Unit`s." ;
    sh:path <http://qudt.org/schema/qudt/hasUnit> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "This `QuantifiableProperty` and the associated `Deadband` use non-commensurate `Unit`s." ;
            sh:message "s223: {$this} uses `Unit` {?punit}, while `Deadband` {?deadband} uses `Unit` {?dunit}. These are non-commensurate." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?deadband ?punit ?dunit
WHERE {
$this qudt:hasUnit ?punit .
$this s223:hasDeadband ?deadband .
?deadband qudt:hasUnit ?dunit .
?punit qudt:hasDimensionVector ?pdv .
?dunit qudt:hasDimensionVector ?ddv .
FILTER (?punit != ?dunit) .
FILTER (?pdv != ?ddv) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb1210

URI: nce78f551a2fd48efa369b55f628b837fb1210


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:SPARQLRule ;
    rdfs:comment "Infer the `hasQuantityKind` relation if it is unambiguous." ;
    sh:construct """
CONSTRUCT {
$this qudt:hasQuantityKind ?uniqueqk
}
WHERE {
{
SELECT $this (COUNT (DISTINCT (?qk)) AS ?count)
WHERE {
FILTER (NOT EXISTS {$this qudt:hasQuantityKind ?something}) .
$this qudt:hasUnit/qudt:hasQuantityKind ?qk .
}
GROUP BY $this
}
FILTER (?count = 1)
$this qudt:hasUnit/qudt:hasQuantityKind ?uniqueqk .
}
""" ;
    sh:prefixes <http://data.ashrae.org/standard223/1.0/inference/model-rules> .


        

nce78f551a2fd48efa369b55f628b837fb871

URI: nce78f551a2fd48efa369b55f628b837fb871


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "A `QuantifiableObservableProperty` can be associated with zero or more `QuantifiableProperty`(s) indicating the desired value(s) which the control process is trying to maintain using the relation `hasSetpoint`." ;
    sh:class <http://data.ashrae.org/standard223#QuantifiableProperty> ;
    sh:message "s223: A `QuantifiableObservableProperty` can be associated with zero or more `QuantifiableProperty`(s) indicating the desired value(s) which the control process is trying to maintain using the relation `hasSetpoint`." ;
    sh:path <http://data.ashrae.org/standard223#hasSetpoint> .


        

nce78f551a2fd48efa369b55f628b837fb186

URI: nce78f551a2fd48efa369b55f628b837fb186


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] a sh:PropertyShape ;
    rdfs:comment "If the relation `priority-for-writing` is present it provides the priority for writing values to the object." ;
    sh:datatype xsd:nonNegativeInteger ;
    sh:maxCount 1 ;
    sh:minCount 0 ;
    sh:path <http://data.ashrae.org/bacnet/2020#priority-for-writing> .


        

nce78f551a2fd48efa369b55f628b837fb185

URI: nce78f551a2fd48efa369b55f628b837fb185


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] a sh:PropertyShape ;
    rdfs:comment "If the relation `object-name` is present it associates the external reference with the BACnet object having the specific object name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:minCount 0 ;
    sh:path <http://data.ashrae.org/bacnet/2020#object-name> .


        

nce78f551a2fd48efa369b55f628b837fb190

URI: nce78f551a2fd48efa369b55f628b837fb190


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] a sh:PropertyShape ;
    rdfs:comment "If the relation `property-identifier` is present it is either a decimal number or exactly equal to the ASHRAE 135-2020 Clause 21 identifier text of BACnetPropertyIdentifier. If it is omitted, it defaults to \"present-value\" except for BACnet File objects, where absence of `property-identifier` refers to the entire content of the file accessed with Stream Access." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:minCount 0 ;
    sh:path <http://data.ashrae.org/bacnet/2020#property-identifier> .


        

nce78f551a2fd48efa369b55f628b837fb188

URI: nce78f551a2fd48efa369b55f628b837fb188


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] a sh:PropertyShape ;
    rdfs:comment "If the relation `object-identifier` is present it associates the external reference with the BACnet object having the specific object identifier." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:minCount 0 ;
    sh:path <http://data.ashrae.org/bacnet/2020#object-identifier> ;
    sh:pattern "^[A-Za-z0-9-]+,[1-9][0-9]*$" .


        

nce78f551a2fd48efa369b55f628b837fb187

URI: nce78f551a2fd48efa369b55f628b837fb187


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] a sh:PropertyShape ;
    rdfs:comment "If the relation `property-array-index` is present it provides the index for reading items from a property that is an array." ;
    sh:datatype xsd:nonNegativeInteger ;
    sh:maxCount 1 ;
    sh:minCount 0 ;
    sh:path <http://data.ashrae.org/bacnet/2020#property-array-index> .


        

nce78f551a2fd48efa369b55f628b837fb191

URI: nce78f551a2fd48efa369b55f628b837fb191


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] a sh:PropertyShape ;
    rdfs:comment "If the relation `device-identifier` is present it associates the external reference with a BACnet device having the specific device identifier." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:minCount 0 ;
    sh:path <http://data.ashrae.org/bacnet/2020#device-identifier> ;
    sh:pattern "^[A-Za-z0-9-]+,[1-9][0-9]*$" .


        

nce78f551a2fd48efa369b55f628b837fb189

URI: nce78f551a2fd48efa369b55f628b837fb189


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] a sh:PropertyShape ;
    rdfs:comment "If the relation `device-name` is present it associates the external reference with a BACnet device having the specific device name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:minCount 0 ;
    sh:path <http://data.ashrae.org/bacnet/2020#device-name> .


        

nce78f551a2fd48efa369b55f628b837fb170

URI: nce78f551a2fd48efa369b55f628b837fb170


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `AirHandlingUnit` shall have at least one inlet using the medium Air." ;
    sh:message "s223: An `AirHandlingUnit` shall have at least one inlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb174

URI: nce78f551a2fd48efa369b55f628b837fb174


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `AirHandlingUnit` shall have at least one outlet using the medium Air." ;
    sh:message "s223: An `AirHandlingUnit` shall have at least one outlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb678

URI: nce78f551a2fd48efa369b55f628b837fb678


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `AirHeatExchanger` shall have at least two air outlets, each paired with an inlet." ;
    sh:message "s223: An `AirHeatExchanger` shall have at least two air outlets, each paired with an inlet." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 2 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                            sh:minCount 1 ;
                            sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> ],
                        [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb673

URI: nce78f551a2fd48efa369b55f628b837fb673


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `AirHeatExchanger` shall have at least two air inlets, each paired with an outlet." ;
    sh:message "s223: An `AirHeatExchanger` shall have at least two air inlets, each paired with an outlet." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 2 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                            sh:minCount 1 ;
                            sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> ],
                        [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb671

URI: nce78f551a2fd48efa369b55f628b837fb671


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `AirHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
    sh:message "s223: An `AirHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:message "s223: An `AirHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
            sh:qualifiedMaxCount 0 ] .


        

nce78f551a2fd48efa369b55f628b837fb50

URI: nce78f551a2fd48efa369b55f628b837fb50


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Infer the `hasRole` s223:Role-HeatTransfer relation for every instance of the listed targetClass values." ;
    sh:object <http://data.ashrae.org/standard223#Role-HeatTransfer> ;
    sh:predicate <http://data.ashrae.org/standard223#hasRole> ;
    sh:subject sh:this .


        

Battery CP Shape

URI: http://data.ashrae.org/standard223#BatteryCPShape


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#BatteryCPShape> a sh:NodeShape ;
    rdfs:label "Battery CP Shape" ;
    rdfs:comment "A `Battery` shall have at least one outlet or bidirectional `ConnectionPoint` using the medium Electricity." ;
    sh:message "s223: A `Battery` shall have at least one outlet or bidirectional `ConnectionPoint` using the medium Electricity." ;
    sh:or ( [ sh:property [ rdfs:comment "A `Battery` shall have at least one outlet or bidirectional `ConnectionPoint` using the medium Electricity." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] ] [ sh:property [ rdfs:comment "A `Battery` shall have at least one outlet or bidirectional `ConnectionPoint` using the medium Electricity." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] ] ) ;
    sh:severity sh:Warning ;
    sh:targetClass <http://data.ashrae.org/standard223#Battery> .


        

nce78f551a2fd48efa369b55f628b837fb196

URI: nce78f551a2fd48efa369b55f628b837fb196


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Boiler` shall have at least one inlet using the medium Water." ;
    sh:message "s223: A `Boiler` shall have at least one inlet using the medium Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb192

URI: nce78f551a2fd48efa369b55f628b837fb192


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Boiler` shall have at least one outlet using the medium Water." ;
    sh:message "s223: A `Boiler` shall have at least one outlet using the medium Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb695

URI: nce78f551a2fd48efa369b55f628b837fb695


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ChilledBeam` must be associated with the `Role-Cooling` using the relation `hasRole`" ;
    sh:message "s223: A `ChilledBeam` must be associated with the `Role-Cooling` using the relation `hasRole`" ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasRole> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Role-Cooling> ] .


        

nce78f551a2fd48efa369b55f628b837fb683

URI: nce78f551a2fd48efa369b55f628b837fb683


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ChilledBeam` shall have at least one inlet using the medium Water." ;
    sh:message "s223: A `ChilledBeam` shall have at least one inlet using the medium Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb691

URI: nce78f551a2fd48efa369b55f628b837fb691


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ChilledBeam` shall have at least one bidirectional connection point using the medium Air." ;
    sh:message "s223: A `ChilledBeam` shall have at least one bidirectional connection point using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb687

URI: nce78f551a2fd48efa369b55f628b837fb687


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ChilledBeam` shall have at least one outlet using the medium Water." ;
    sh:message "s223: A `ChilledBeam` shall have at least one outlet using the medium Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb697

URI: nce78f551a2fd48efa369b55f628b837fb697


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "A Chilled Beam must always have the role `Role-Cooling`" ;
    sh:object <http://data.ashrae.org/standard223#Role-Cooling> ;
    sh:predicate <http://data.ashrae.org/standard223#hasRole> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb204

URI: nce78f551a2fd48efa369b55f628b837fb204


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Chiller` shall have at least one inlet using the medium Water." ;
    sh:message "s223: A `Chiller` shall have at least one inlet using the medium Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb200

URI: nce78f551a2fd48efa369b55f628b837fb200


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Chiller` shall have at least one outlet using the medium Water." ;
    sh:message "s223: A `Chiller` shall have at least one outlet using the medium Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb900

URI: nce78f551a2fd48efa369b55f628b837fb900


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 2: A `Coil` shall have one outlet using the medium Fluid." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb913

URI: nce78f551a2fd48efa369b55f628b837fb913


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 3: A `Coil` shall have three bidirectionals using the medium Fluid or ThermalContact." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 3 ;
    sh:qualifiedMinCount 3 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:node [ sh:property [ sh:or ( [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ] [ sh:class <http://data.ashrae.org/standard223#Medium-ThermalContact> ] ) ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
    sh:qualifiedValueShapesDisjoint true .


        

nce78f551a2fd48efa369b55f628b837fb896

URI: nce78f551a2fd48efa369b55f628b837fb896


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 2: A `Coil` shall have one inlet using the medium Fluid." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb887

URI: nce78f551a2fd48efa369b55f628b837fb887


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 1: A `Coil` shall have two inlets using the medium Fluid." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 2 ;
    sh:qualifiedMinCount 2 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb883

URI: nce78f551a2fd48efa369b55f628b837fb883


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 1: For one of the two outlets the Fluid is Air." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb879

URI: nce78f551a2fd48efa369b55f628b837fb879


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 1: For one of the two inlets the Fluid is Air." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb891

URI: nce78f551a2fd48efa369b55f628b837fb891


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 1: A `Coil` shall have two outlets using the medium Fluid." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 2 ;
    sh:qualifiedMinCount 2 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb904

URI: nce78f551a2fd48efa369b55f628b837fb904


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 2: A `Coil` shall have one or two bidirectionals using the medium Fluid or ThermalContact." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 2 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:node [ sh:property [ sh:or ( [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ] [ sh:class <http://data.ashrae.org/standard223#Medium-ThermalContact> ] ) ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
    sh:qualifiedValueShapesDisjoint true .


        

nce78f551a2fd48efa369b55f628b837fb227

URI: nce78f551a2fd48efa369b55f628b837fb227


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A cooling coil must be related to the role '`Role-Cooling`' using the relation '`hasRole`'." ;
    sh:hasValue <http://data.ashrae.org/standard223#Role-Cooling> ;
    sh:message "s223: A cooling coil must be related to the role '`Role-Cooling`' using the relation '`hasRole`'." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasRole> .


        

nce78f551a2fd48efa369b55f628b837fb228

URI: nce78f551a2fd48efa369b55f628b837fb228


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Cooling coils must always have the role `Role-Cooling`" ;
    sh:object <http://data.ashrae.org/standard223#Role-Cooling> ;
    sh:predicate <http://data.ashrae.org/standard223#hasRole> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb333

URI: nce78f551a2fd48efa369b55f628b837fb333


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A heating coil must be related to the role '`Role-Heating`' using the relation '`hasRole`'." ;
    sh:hasValue <http://data.ashrae.org/standard223#Role-Heating> ;
    sh:message "s223: A heating coil must be related to the role '`Role-Heating`' using the relation '`hasRole`'." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasRole> .


        

nce78f551a2fd48efa369b55f628b837fb334

URI: nce78f551a2fd48efa369b55f628b837fb334


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] a sh:TripleRule ;
    rdfs:comment "Heating coils must always have the role `Role-Heating`" ;
    sh:object <http://data.ashrae.org/standard223#Role-Heating> ;
    sh:predicate <http://data.ashrae.org/standard223#hasRole> ;
    sh:subject sh:this .


        

nce78f551a2fd48efa369b55f628b837fb208

URI: nce78f551a2fd48efa369b55f628b837fb208


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Compressor` shall have at least one inlet." ;
    sh:message "s223: A `Compressor` shall have at least one inlet." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ] .


        

nce78f551a2fd48efa369b55f628b837fb210

URI: nce78f551a2fd48efa369b55f628b837fb210


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Compressor` shall have at least one outlet." ;
    sh:message "s223: A `Compressor` shall have at least one outlet." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ] .


        

nce78f551a2fd48efa369b55f628b837fb233

URI: nce78f551a2fd48efa369b55f628b837fb233


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `CoolingTower` shall have at least one inlet using the medium Water." ;
    sh:message "s223: A `CoolingTower` shall have at least one inlet using the medium Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb229

URI: nce78f551a2fd48efa369b55f628b837fb229


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `CoolingTower` shall have at least one outlet using the medium Water." ;
    sh:message "s223: A `CoolingTower` shall have at least one outlet using the medium Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb702

URI: nce78f551a2fd48efa369b55f628b837fb702


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Damper` shall have at least one outlet using the medium Air." ;
    sh:message "s223: A `Damper` shall have at least one outlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb698

URI: nce78f551a2fd48efa369b55f628b837fb698


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Damper` shall have at least one inlet using the medium Air." ;
    sh:message "s223: A `Damper` shall have at least one inlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb241

URI: nce78f551a2fd48efa369b55f628b837fb241


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Door` shall have at least two bidirectional connection points using the medium Air." ;
    sh:message "s223: A `Door` shall have at least two bidirectional connection points using the medium Air." ;
    sh:minCount 2 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 2 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb253

URI: nce78f551a2fd48efa369b55f628b837fb253


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `ElectricBreaker` shall have at least one outlet using the medium Electricity." ;
    sh:message "s223: An `ElectricBreaker` shall have at least one outlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb261

URI: nce78f551a2fd48efa369b55f628b837fb261


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `ElectricOutlet` shall have at least one outlet using the medium Electricity." ;
    sh:message "s223: An `ElectricOutlet` shall have at least one outlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb257

URI: nce78f551a2fd48efa369b55f628b837fb257


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `ElectricOutlet` shall have exactly one inlet using the medium Electricity." ;
    sh:message "s223: An `ElectricOutlet` shall have exactly one inlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb722

URI: nce78f551a2fd48efa369b55f628b837fb722


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 2: An `ElectricResistanceElement` shall have one inlet using the medium Fluid." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
    sh:qualifiedValueShapesDisjoint true .


        

nce78f551a2fd48efa369b55f628b837fb706

URI: nce78f551a2fd48efa369b55f628b837fb706


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `ElectricResistanceElement` shall have the role `Role-Heating`." ;
    sh:message "s223: An `ElectricResistanceElement` shall have the role `Role-Heating`." ;
    sh:path <http://data.ashrae.org/standard223#hasRole> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Role-Heating> ] .


        

nce78f551a2fd48efa369b55f628b837fb708

URI: nce78f551a2fd48efa369b55f628b837fb708


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `ElectricResistanceElement` shall have at least one inlet using the medium Electricity." ;
    sh:message "s223: An `ElectricResistanceElement` shall have at least one inlet using the medium Electricity." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb713

URI: nce78f551a2fd48efa369b55f628b837fb713


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 1: An `ElectricResistanceElement` shall have exactly one Bidirectional `ConnectionPoint` using the medium Fluid." ;
    sh:message "s223: Pattern 1: An `ElectricResistanceElement` requires exactly one `BidirectionalConnectionPoint` using the medium Fluid." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
    sh:qualifiedValueShapesDisjoint true .


        

nce78f551a2fd48efa369b55f628b837fb718

URI: nce78f551a2fd48efa369b55f628b837fb718


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 2: An `ElectricResistanceElement` shall have one outlet using the medium Fluid." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
    sh:qualifiedValueShapesDisjoint true .


        

nce78f551a2fd48efa369b55f628b837fb265

URI: nce78f551a2fd48efa369b55f628b837fb265


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `ElectricTransformer` shall have at least one inlet using the medium Electricity." ;
    sh:message "s223: An `ElectricTransformer` shall have at least one inlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb269

URI: nce78f551a2fd48efa369b55f628b837fb269


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `ElectricTransformer` shall have at least one outlet using the medium Electricity." ;
    sh:message "s223: An `ElectricTransformer` shall have at least one outlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb729

URI: nce78f551a2fd48efa369b55f628b837fb729


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `EthernetSwitch` shall have at least two `BidirectionalConnectionPoint`s using the medium `Signal-Ethernet`." ;
    sh:message "s223: An `EthernetSwitch` shall have at least two `BidirectionalConnectionPoint`s using the medium `Signal-Ethernet`." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 2 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Signal-Ethernet> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb733

URI: nce78f551a2fd48efa369b55f628b837fb733


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `EthernetSwitch` shall have at least one inlet using the medium Electricity." ;
    sh:message "s223: An `EthernetSwitch` shall have at least one inlet using the medium Electricity." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb385

URI: nce78f551a2fd48efa369b55f628b837fb385


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `PowerOverEthernetSwitch` shall have at least one inlet using the medium Electricity." ;
    sh:message "s223: A `PowerOverEthernetSwitch` shall have at least one inlet using the medium Electricity." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb389

URI: nce78f551a2fd48efa369b55f628b837fb389


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `PowerOverEthernetSwitch` shall have at least one `BidirectionalConnectionPoint` using the medium `PowerAndSignal-PoE`." ;
    sh:message "s223: A `PowerOverEthernetSwitch` shall have at least one `BidirectionalConnectionPoint` using the medium `PowerAndSignal-PoE`." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#PowerAndSignal-PoE> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb832

URI: nce78f551a2fd48efa369b55f628b837fb832


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Fan` shall have at least one outlet using the medium Air." ;
    sh:message "s223: A `Fan` shall have at least one outlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb828

URI: nce78f551a2fd48efa369b55f628b837fb828


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Fan` shall have at least one inlet using the medium Air." ;
    sh:message "s223: A `Fan` shall have at least one inlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb283

URI: nce78f551a2fd48efa369b55f628b837fb283


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `FanCoilUnit` must be associated with at least 1 `Coil` using the relation `contains`." ;
    sh:message "s223: A `FanCoilUnit` must be associated with at least 1 `Coil` using the relation `contains`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#contains> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Coil> ] .


        

nce78f551a2fd48efa369b55f628b837fb279

URI: nce78f551a2fd48efa369b55f628b837fb279


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `FanCoilUnit` must at least have the role `Role-Heating` or `Role-Cooling`." ;
    sh:message "s223: A `FanCoilUnit` must at least have the role `Role-Heating` or `Role-Cooling`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasRole> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:in ( <http://data.ashrae.org/standard223#Role-Heating> <http://data.ashrae.org/standard223#Role-Cooling> ) ] .


        

nce78f551a2fd48efa369b55f628b837fb277

URI: nce78f551a2fd48efa369b55f628b837fb277


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `FanCoilUnit` must be associated with at least 1 `Fan` using the relation `contains`." ;
    sh:message "s223: A `FanCoilUnit` must be associated with at least 1 `Fan` using the relation `contains`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#contains> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Fan> ] .


        

nce78f551a2fd48efa369b55f628b837fb273

URI: nce78f551a2fd48efa369b55f628b837fb273


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `FanCoilUnit` shall have at least one outlet using the medium Air." ;
    sh:message "s223: A `FanCoilUnit` shall have at least one outlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb285

URI: nce78f551a2fd48efa369b55f628b837fb285


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `FanCoilUnit` shall have at least one inlet using the medium Air." ;
    sh:message "s223: A `FanCoilUnit` shall have at least one inlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb291

URI: nce78f551a2fd48efa369b55f628b837fb291


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 1: Associated `ConnectionPoint`s with two pure mediums." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 1: Two pure mediums." ;
            sh:message "s223: {$this} with inlet medium {?m2} is incompatible with outlet medium {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m2 ?m1
WHERE {
$this s223:cnx ?cp1, ?cp2 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
FILTER (?cp1 != ?cp2) .
?cp1 s223:hasMedium ?m1 .
?cp2 s223:hasMedium ?m2 . 
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {?m2 s223:composedOf ?c2}
FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) .
FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb295

URI: nce78f551a2fd48efa369b55f628b837fb295


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 2: Associated `ConnectionPoint`s, one with a pure medium and one with a medium having constituents.." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 2: A medium with constituents and a pure medium." ;
            sh:message "s223: {$this} has an incompatible medium {?m1} with any constituent of {?m2}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?m2 ?m1
WHERE {
$this s223:cnx ?cp1, ?cp2 .
?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
FILTER (?cp1 != ?cp2) .
?cp1 s223:hasMedium ?m1 .
?cp2 s223:hasMedium ?m2 . 
?m2 s223:composedOf/s223:ofConstituent ?s2 .
FILTER NOT EXISTS {?m1 s223:composedOf ?c1} .
FILTER NOT EXISTS {
  ?m2 s223:composedOf/s223:ofConstituent ?s12 .
  {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} .
}
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb299

URI: nce78f551a2fd48efa369b55f628b837fb299


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Filter` shall have at least one inlet `ConnectionPoint`." ;
    sh:message "s223: A `Filter` shall have at least one inlet `ConnectionPoint`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ] .


        

nce78f551a2fd48efa369b55f628b837fb293

URI: nce78f551a2fd48efa369b55f628b837fb293


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "Incompatible Medium. Case 3: Associated `ConnectionPoint`s with mediums having constituents." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "Incompatible Medium. Case 3: Two mediums with constituents." ;
            sh:message "s223: For `Filter` {$this} there is no compatible substance between medium {?m2} and medium {?m1}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT ?this ?m2 ?m1
WHERE {
  ?this s223:cnx ?cp1, ?cp2 .
  ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint .
  ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint .
  FILTER (?cp1 != ?cp2) .
  ?cp1 s223:hasMedium ?m1 .
  ?cp2 s223:hasMedium ?m2 .
    ?m1 s223:composedOf/s223:ofConstituent ?s1 .
    ?m2 s223:composedOf/s223:ofConstituent ?s2 .
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s11 .
    ?m2 s223:composedOf/s223:ofConstituent ?s12 .
    FILTER (?s11 = ?s12) .
  }
  FILTER NOT EXISTS {
    ?m1 s223:composedOf/s223:ofConstituent ?s21 .
    ?m2 s223:composedOf/s223:ofConstituent ?s22 .
    {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} .
  }
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb297

URI: nce78f551a2fd48efa369b55f628b837fb297


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Filter` shall have at least one outlet." ;
    sh:message "s223: A `Filter` shall have at least one outlet." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ] .


        

nce78f551a2fd48efa369b55f628b837fb301

URI: nce78f551a2fd48efa369b55f628b837fb301


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `FumeHood` shall have at least one inlet using the medium Air." ;
    sh:message "s223: A `FumeHood` shall have at least one inlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb305

URI: nce78f551a2fd48efa369b55f628b837fb305


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `FumeHood` shall have at least one outlet using the medium Air." ;
    sh:message "s223: A `FumeHood` shall have at least one outlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb313

URI: nce78f551a2fd48efa369b55f628b837fb313


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Furnace` shall have at least one outlet using the medium Air." ;
    sh:message "s223: A `Furnace` shall have at least one outlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb309

URI: nce78f551a2fd48efa369b55f628b837fb309


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Furnace` shall have at least one inlet using the medium Air." ;
    sh:message "s223: A `Furnace` shall have at least one inlet using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb324

URI: nce78f551a2fd48efa369b55f628b837fb324


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Generator` shall have at least one outlet using the medium Electricity." ;
    sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
    sh:message "s223: A `Generator` shall have at least one outlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> .


        

nce78f551a2fd48efa369b55f628b837fb323

URI: nce78f551a2fd48efa369b55f628b837fb323


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Generator` must be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`." ;
    sh:message "s223: A `Generator` must be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> .


        

nce78f551a2fd48efa369b55f628b837fb749

URI: nce78f551a2fd48efa369b55f628b837fb749


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `HydronicHeatExchanger` shall have no `ConnectionPoint`s using the medium Air." ;
    sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:message "s223: A `HydronicHeatExchanger` shall have no `ConnectionPoint`s using the medium Air." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMaxCount 0 ;
    sh:qualifiedValueShape [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] .


        

nce78f551a2fd48efa369b55f628b837fb739

URI: nce78f551a2fd48efa369b55f628b837fb739


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `HydronicHeatExchanger` shall have at least two liquid inlets, each paired with an outlet." ;
    sh:message "s223: A `HydronicHeatExchanger` shall have at least two liquid inlets, each paired with an outlet." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 2 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ],
                        [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                            sh:minCount 1 ;
                            sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb744

URI: nce78f551a2fd48efa369b55f628b837fb744


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `HydronicHeatExchanger` shall have at least two liquid outlets, each paired with an inlet." ;
    sh:message "s223: A `HydronicHeatExchanger` shall have at least two liquid outlets, each paired with an inlet." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 2 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                            sh:minCount 1 ;
                            sh:path <http://data.ashrae.org/standard223#pairedConnectionPoint> ],
                        [ sh:class <http://data.ashrae.org/standard223#Mix-Fluid> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb737

URI: nce78f551a2fd48efa369b55f628b837fb737


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `HydronicHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
    sh:message "s223: A `HydronicHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:message "s223: A `HydronicHeatExchanger` shall have no `BidirectionalConnectionPoint`s." ;
            sh:qualifiedMaxCount 0 ] .


        

nce78f551a2fd48efa369b55f628b837fb350

URI: nce78f551a2fd48efa369b55f628b837fb350


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `Inverter` shall have at least one outlet using the medium `Electricity-AC`." ;
    sh:message "s223: An `Inverter` shall have at least one outlet using the medium `Electricity-AC`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Electricity-AC> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb346

URI: nce78f551a2fd48efa369b55f628b837fb346


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `Inverter` shall have at least one inlet using the medium `Electricity-DC`." ;
    sh:message "s223: An `Inverter` shall have at least one inlet using the medium `Electricity-DC`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Electricity-DC> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb362

URI: nce78f551a2fd48efa369b55f628b837fb362


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Motor` shall have at least one inlet using the medium Electricity." ;
    sh:message "s223: A `Motor` shall have at least one inlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb354

URI: nce78f551a2fd48efa369b55f628b837fb354


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Luminaire` shall have at least one outlet using the medium `EM-Light`." ;
    sh:message "s223: A `Luminaire` shall have at least one outlet using the medium `EM-Light`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#EM-Light> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb358

URI: nce78f551a2fd48efa369b55f628b837fb358


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Luminaire` shall have at least one inlet using the medium Electricity." ;
    sh:message "s223: A `Luminaire` shall have at least one inlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb377

URI: nce78f551a2fd48efa369b55f628b837fb377


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `PhotovoltaicModule` shall have at least one outlet using the medium Electricity." ;
    sh:message "s223: An `PhotovoltaicModule` shall have at least one outlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb381

URI: nce78f551a2fd48efa369b55f628b837fb381


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "An `PhotovoltaicModule` must have at least one inlet using the medium `EM-Light`." ;
    sh:message "s223: An `PhotovoltaicModule` must have at least one inlet using the medium `EM-Light`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#EM-Light> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb393

URI: nce78f551a2fd48efa369b55f628b837fb393


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "The non-electrical `ConnectionPoint`s of a `Pump` must have compatible Media." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            rdfs:comment "The non-electrical `ConnectionPoint`s of a `Pump` must have compatible Media." ;
            sh:message "s223: {?cpa} and {?cpb} on the `Pump` {$this} have incompatible Media {$mediuma} and {$mediumb}." ;
            sh:prefixes <http://data.ashrae.org/standard223/1.0/validation/model> ;
            sh:select """
SELECT $this ?cpa ?cpb ?mediuma ?mediumb
WHERE {
  $this s223:hasConnectionPoint ?cpa .
  $this s223:hasConnectionPoint ?cpb .
  FILTER (?cpa != ?cpb) .
  ?cpa s223:hasMedium ?mediuma .
  FILTER (NOT EXISTS {?mediuma a/rdfs:subClassOf* s223:Constituent-Electricity}) .
  ?cpb s223:hasMedium ?mediumb .
  FILTER (NOT EXISTS {?mediumb a/rdfs:subClassOf* s223:Constituent-Electricity}) .
  FILTER (?mediuma != ?mediumb) .
  FILTER (NOT EXISTS {?mediumb a/rdfs:subClassOf* ?mediuma}) .
  FILTER (NOT EXISTS {?mediuma a/rdfs:subClassOf* ?mediumb}) .
}
""" ] .


        

nce78f551a2fd48efa369b55f628b837fb395

URI: nce78f551a2fd48efa369b55f628b837fb395


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Pump` shall have at least one inlet using the medium Water, Oil or Refrigerant." ;
    sh:message "s223: A `Pump` shall have at least one inlet using the medium Water, Oil or Refrigerant." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ rdfs:comment "A `Pump` shall have at least one inlet using the medium Water, Oil or Refrigerant." ;
                    sh:message "s223: A `Pump` shall have at least one inlet using the medium Water, Oil or Refrigerant." ;
                    sh:or ( [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                        sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Refrigerant> ;
                                        sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Oil> ;
                                        sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ) ;
                    sh:severity sh:Warning ] ] .


        

nce78f551a2fd48efa369b55f628b837fb407

URI: nce78f551a2fd48efa369b55f628b837fb407


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Pump` shall have at least one outlet using the medium Water, Oil or Refrigerant." ;
    sh:message "s223: A `Pump` shall have at least one outlet using the medium Water, Oil or Refrigerant." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ rdfs:comment "A `Pump` shall have at least one outlet using the medium Water, Oil or Refrigerant." ;
                    sh:message "s223: A `Pump` shall have at least one outlet using the medium Water, Oil or Refrigerant." ;
                    sh:or ( [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                        sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Refrigerant> ;
                                        sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Oil> ;
                                        sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ) ;
                    sh:severity sh:Warning ] ] .


        

nce78f551a2fd48efa369b55f628b837fb764

URI: nce78f551a2fd48efa369b55f628b837fb764


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `RadiantHeater` shall have at least one outlet connection point using the medium Infrared." ;
    sh:message "s223: A `RadiantHeater` shall have at least one outlet connection point using the medium Infrared." ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Light-Infrared> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb771

URI: nce78f551a2fd48efa369b55f628b837fb771


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 1: A radiant heater shall have at least one inlet using the medium Electricity or NaturalGas." ;
    sh:message "s223: Pattern 1: A radiant heater shall have at least one inlet using the medium Electricity or NaturalGas." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:or ( [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ] [ sh:class <http://data.ashrae.org/standard223#Fluid-NaturalGas> ] ) ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb768

URI: nce78f551a2fd48efa369b55f628b837fb768


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A radiant heater must `hasRole` `Role-Heating`." ;
    sh:message "s223: A radiant heater must `hasRole` `Role-Heating`." ;
    sh:path <http://data.ashrae.org/standard223#hasRole> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Role-Heating> ] .


        

nce78f551a2fd48efa369b55f628b837fb784

URI: nce78f551a2fd48efa369b55f628b837fb784


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 2: A radiant heater shall have an inlet of Water." ;
    sh:message "s223: Pattern 2: A radiant heater shall have an inlet of Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb780

URI: nce78f551a2fd48efa369b55f628b837fb780


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Pattern 2: A radiant heater shall have an outlet of Water." ;
    sh:message "s223: Pattern 2: A radiant heater shall have an outlet of Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb836

URI: nce78f551a2fd48efa369b55f628b837fb836


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Radiator` shall have at least one bidirectional connection point using the medium Air." ;
    sh:message "s223: A `Radiator` shall have at least one bidirectional connection point using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

Radiator

URI: http://data.ashrae.org/standard223#RadiatorInletShape


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#RadiatorInletShape> a sh:NodeShape ;
    rdfs:label "Radiator" ;
    rdfs:comment "A `Radiator` shall have at least one inlet using the medium Electricity or inlet and outlet of Water." ;
    sh:message "s223: A `Radiator` shall have at least one inlet using the medium Electricity or inlet and outlet of Water." ;
    sh:severity sh:Warning ;
    sh:targetClass <http://data.ashrae.org/standard223#Radiator> ;
    sh:xone ( [ sh:property [ rdfs:comment "A `Radiator` shall have at least one inlet using the medium Electricity or inlet and outlet of Water." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] ] [ sh:property [ rdfs:comment "A `Radiator` shall have at least one outlet using the medium Water." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ],
                    [ rdfs:comment "A `Radiator` shall have at least one inlet using the medium Electricity or Water." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
                                sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                                                sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ] ] ) .


        

nce78f551a2fd48efa369b55f628b837fb840

URI: nce78f551a2fd48efa369b55f628b837fb840


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "Radiators must have the role `Role-Heating`." ;
    sh:message "s223: Radiators must have the role `Role-Heating`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasRole> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Role-Heating> ] .


        

nce78f551a2fd48efa369b55f628b837fb427

URI: nce78f551a2fd48efa369b55f628b837fb427


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `SolarThermalCollector` shall have at least one outlet using the medium Water." ;
    sh:message "s223: A `SolarThermalCollector` shall have at least one outlet using the medium Water." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Water> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb423

URI: nce78f551a2fd48efa369b55f628b837fb423


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `SolarThermalCollector` shall have at least one inlet using the medium `EM-Light`." ;
    sh:message "s223: A `SolarThermalCollector` shall have at least one inlet using the medium `EM-Light`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#EM-Light> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb942

URI: nce78f551a2fd48efa369b55f628b837fb942


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `TerminalUnit` shall have at least one outlet `ConnectionPoint` using the medium Air." ;
    sh:message "s223: A `TerminalUnit` shall have at least one outlet `ConnectionPoint` using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb938

URI: nce78f551a2fd48efa369b55f628b837fb938


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `TerminalUnit` shall have at least one inlet `ConnectionPoint` using the medium Air." ;
    sh:message "s223: A `TerminalUnit` shall have at least one inlet `ConnectionPoint` using the medium Air." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb245

URI: nce78f551a2fd48efa369b55f628b837fb245


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `DualDuctTerminal` shall have at least two inlets using the medium Air." ;
    sh:message "s223: A `DualDuctTerminal` shall have at least two inlets using the medium Air." ;
    sh:minCount 2 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 2 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Fluid-Air> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb289

URI: nce78f551a2fd48efa369b55f628b837fb289


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `FanPoweredTerminal` must be associated with at least one `Fan` by using the relation `contains`." ;
    sh:message "s223: A `FanPoweredTerminal` must be associated with at least one `Fan` by using the relation `contains`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#contains> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Fan> ] .


        

nce78f551a2fd48efa369b55f628b837fb421

URI: nce78f551a2fd48efa369b55f628b837fb421


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `SingleDuctTerminal` must be associated with at least one `Damper` using the relation `contains`." ;
    sh:message "s223: A `SingleDuctTerminal` must be associated with at least one `Damper` using the relation `contains`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#contains> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#Damper> ] .


        

nce78f551a2fd48efa369b55f628b837fb435

URI: nce78f551a2fd48efa369b55f628b837fb435


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A Thermal Energy Storage Unit must have at least two connection points." ;
    sh:class <http://data.ashrae.org/standard223#ConnectionPoint> ;
    sh:message "s223: A Thermal Energy Storage Unit must have at least two connection points." ;
    sh:minCount 2 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> .


        

nce78f551a2fd48efa369b55f628b837fb438

URI: nce78f551a2fd48efa369b55f628b837fb438


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Turbine` shall have at least one outlet using the medium Electricity." ;
    sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
    sh:message "s223: A `Turbine` shall have at least one outlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                    sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> .


        

nce78f551a2fd48efa369b55f628b837fb437

URI: nce78f551a2fd48efa369b55f628b837fb437


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Turbine` must be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`." ;
    sh:message "s223: A `Turbine` must be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> .


        

Valve

URI: http://data.ashrae.org/standard223#ValveCPShape


@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://data.ashrae.org/standard223#ValveCPShape> a sh:NodeShape ;
    rdfs:label "Valve" ;
    rdfs:comment "A `Valve` shall have at least one inlet and one outlet or two bidirectional connection points." ;
    sh:message "s223: A `Valve` shall have at least one inlet and one outlet or two bidirectional connection points." ;
    sh:or ( [ sh:property [ rdfs:comment "A `Valve` shall have at least one inlet and one outlet or two bidirectional connection points." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ] ;
                        sh:qualifiedValueShapesDisjoint true ],
                    [ rdfs:comment "A `Valve` shall have at least one inlet and one outlet or two bidirectional connection points." ;
                        sh:minCount 1 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 1 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ] ;
                        sh:qualifiedValueShapesDisjoint true ] ] [ sh:property [ rdfs:comment "A `Valve` shall have at least one inlet and one outlet or two bidirectional connection points." ;
                        sh:minCount 2 ;
                        sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
                        sh:qualifiedMinCount 2 ;
                        sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#BidirectionalConnectionPoint> ] ;
                        sh:qualifiedValueShapesDisjoint true ] ] ) ;
    sh:severity sh:Warning ;
    sh:targetClass <http://data.ashrae.org/standard223#Valve> .


        

nce78f551a2fd48efa369b55f628b837fb436

URI: nce78f551a2fd48efa369b55f628b837fb436


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `ThreeWayValve` must have at least three `ConnectionPoint`s using the relation `hasConnectionPoint`." ;
    sh:message "s223: A `ThreeWayValve` must have at least three `ConnectionPoint`s using the relation `hasConnectionPoint`." ;
    sh:minCount 3 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> .


        

nce78f551a2fd48efa369b55f628b837fb441

URI: nce78f551a2fd48efa369b55f628b837fb441


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `TwoWayValve` shall have at least one inlet." ;
    sh:message "s223: A `TwoWayValve` shall have at least one inlet." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ] .


        

nce78f551a2fd48efa369b55f628b837fb443

URI: nce78f551a2fd48efa369b55f628b837fb443


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `TwoWayValve` shall have at least one outlet." ;
    sh:message "s223: A `TwoWayValve` shall have at least one outlet." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ] .


        

nce78f551a2fd48efa369b55f628b837fb445

URI: nce78f551a2fd48efa369b55f628b837fb445


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

[] rdfs:comment "If the relation `connectedTo` is present it must associate the `VariableFrequencyDrive` with a `Equipment`." ;
    sh:class <http://data.ashrae.org/standard223#Equipment> ;
    sh:message "s223: If the relation `connectedTo` is present it must associate the `VariableFrequencyDrive` with a `Equipment`." ;
    sh:path <http://data.ashrae.org/standard223#connectedTo> .


        

nce78f551a2fd48efa369b55f628b837fb446

URI: nce78f551a2fd48efa369b55f628b837fb446


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `VariableFrequencyDrive` shall have at least one outlet using the medium Electricity." ;
    sh:message "s223: A `VariableFrequencyDrive` shall have at least one outlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb450

URI: nce78f551a2fd48efa369b55f628b837fb450


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `VariableFrequencyDrive` shall have at least one inlet using the medium Electricity." ;
    sh:message "s223: A `VariableFrequencyDrive` shall have at least one inlet using the medium Electricity." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#Constituent-Electricity> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] ;
    sh:severity sh:Warning .


        

nce78f551a2fd48efa369b55f628b837fb457

URI: nce78f551a2fd48efa369b55f628b837fb457


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Window` shall have at least one inlet using the medium Light." ;
    sh:message "s223: A `Window` shall have at least one inlet using the medium Light." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#InletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#EM-Light> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .


        

nce78f551a2fd48efa369b55f628b837fb461

URI: nce78f551a2fd48efa369b55f628b837fb461


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] rdfs:comment "A `Window` shall have at least one outlet using the medium Light." ;
    sh:message "s223: A `Window` shall have at least one outlet using the medium Light." ;
    sh:minCount 1 ;
    sh:path <http://data.ashrae.org/standard223#hasConnectionPoint> ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class <http://data.ashrae.org/standard223#OutletConnectionPoint> ;
            sh:node [ sh:property [ sh:class <http://data.ashrae.org/standard223#EM-Light> ;
                            sh:path <http://data.ashrae.org/standard223#hasMedium> ] ] ] .