diff --git a/data/ontology/dwc.rdf b/data/ontology/dwc.rdf
new file mode 100644
index 0000000000..1d53858001
--- /dev/null
+++ b/data/ontology/dwc.rdf
@@ -0,0 +1,2084 @@
+
+
+ Biodiversity Information Standards (TDWG)
+
+ Core terms defined by Darwin Core
+ Core terms defined by Darwin Core
+ This term list includes all currently valid terms that have been defined in the core Darwin Core namespace dwc:. To comment on this schema, please create a new issue in https://github.com/tdwg/dwc/issues
+ This term list includes all currently valid terms that have been defined in the core Darwin Core namespace dwc:. To comment on this schema, please create a new issue in https://github.com/tdwg/dwc/issues
+ 2008-11-19
+ dwc
+ http://rs.tdwg.org/dwc/terms/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ application/rdf+xml
+ Biodiversity Information Standards (TDWG)
+
+ 2025-07-07T15:53:12-05:00
+
+
+
+
diff --git a/data/ontology/pnv.ttl b/data/ontology/pnv.ttl
new file mode 100644
index 0000000000..af815f17f6
--- /dev/null
+++ b/data/ontology/pnv.ttl
@@ -0,0 +1,409 @@
+@prefix : .
+@prefix owl: .
+@prefix rdf: .
+@prefix xml: .
+@prefix xsd: .
+@prefix rdfs: .
+@base .
+
+ rdf:type owl:Ontology ;
+ rdfs:comment "The Person Name Vocabulary (PNV) is an rdf vocabulary and data model for persons' names. It is applicable to many datasets in which persons are described, as it accommodates different levels of data granularity."@en ;
+ ;
+ "2019-07-01"^^xsd:date ;
+ ;
+ "https://w3id.org/pnv#" ;
+ ;
+ "Gijsbert Kruithof, National Archives, The Netherlands" ,
+ "Lodewijk Petram, Huygens Institute for the History of the Netherlands" ;
+ "pnv" ;
+ "Elvin Dechesne, Ordina, The Netherlands" ;
+ rdfs:label "Person Name Vocabulary"@en ;
+ "Person Name Vocabulary"@en .
+
+#################################################################
+# Annotation properties
+#################################################################
+
+### http://purl.org/dc/elements/1.1/title
+ rdf:type owl:AnnotationProperty .
+
+
+### http://purl.org/dc/terms/creator
+ rdf:type owl:AnnotationProperty .
+
+
+### http://purl.org/dc/terms/modified
+ rdf:type owl:AnnotationProperty .
+
+
+### http://purl.org/dc/terms/publisher
+ rdf:type owl:AnnotationProperty .
+
+
+### http://purl.org/dc/terms/rights
+ rdf:type owl:AnnotationProperty .
+
+
+### http://purl.org/vocab/vann/preferredNamespacePrefix
+ rdf:type owl:AnnotationProperty .
+
+
+### http://purl.org/vocab/vann/preferredNamespaceUri
+ rdf:type owl:AnnotationProperty .
+
+
+### http://www.w3.org/2004/02/skos/core#altLabel
+ rdf:type owl:AnnotationProperty .
+
+
+### http://www.w3.org/2004/02/skos/core#prefLabel
+ rdf:type owl:AnnotationProperty .
+
+
+### http://xmlns.com/foaf/0.1/depiction
+ rdf:type owl:AnnotationProperty .
+
+
+#################################################################
+# Object Properties
+#################################################################
+
+### https://w3id.org/pnv#hasName
+:hasName rdf:type owl:ObjectProperty ;
+ rdfs:domain :Person ;
+ rdfs:range :PersonName ;
+ rdfs:label "has name"@en ,
+ "heeft naam"@nl ;
+ "heeft naam"@nl .
+
+
+#################################################################
+# Data properties
+#################################################################
+
+### http://schema.org/disambiguatingDescription
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty :disambiguatingDescription .
+
+
+### http://schema.org/familyName
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty ,
+ ,
+ :surname .
+
+
+### http://schema.org/givenName
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty ,
+ ,
+ :givenName .
+
+
+### http://schema.org/honorificPrefix
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty :prefix .
+
+
+### http://schema.org/honorificSuffix
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty :honorificSuffix .
+
+
+### http://www.wikidata.org/prop/direct/P2561
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty ,
+ :literalName .
+
+
+### http://www.wikidata.org/prop/direct/P734
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty ,
+ :surname .
+
+
+### http://www.wikidata.org/prop/direct/P735
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty ,
+ :givenName .
+
+
+### http://xmlns.com/foaf/0.1/familyName
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty :surname .
+
+
+### http://xmlns.com/foaf/0.1/givenName
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty :givenName .
+
+
+### http://xmlns.com/foaf/0.1/name
+ rdf:type owl:DatatypeProperty ;
+ owl:equivalentProperty :literalName .
+
+
+### https://w3id.org/pnv#baseSurname
+:baseSurname rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A Base surname is a family name without any prefixes, if those prefixes need to be ignored in sorting. If the family name is e.g. \"de Vries\" and it needs to be sorted under \"V\", the Base surname is \"Vries\". Base surname is equivalent to BioDes:geslachtsnaam."@en ,
+ "A2A:PersonNameLastName"@en ;
+ rdfs:label "base surname"@en ,
+ "basis achternaam"@nl ;
+ "basis achternaam"@nl .
+
+
+### https://w3id.org/pnv#disambiguatingDescription
+:disambiguatingDescription rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :suffix ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A Disambiguating description is a name part that is appended to make sure that the right person is designated. Name parts like \"Sr.\" and \"Jr.\", used to distinguish a child from his parent, are disambiguating descriptions."@en ;
+ rdfs:label "disambiguating description"@en ,
+ "onderscheidend achtervoegsel"@nl ;
+ "onderscheidend achtervoegsel"@nl .
+
+
+### https://w3id.org/pnv#firstName
+:firstName rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A First name is a combination of a given name, a patronym (if any) and a given name suffix. This property is only to be used by data providers who have combined these name elements into one field (following the BioDes structure). First name is equivalent to BioDes:voornaam."@en ,
+ "BioDes:voornaam"@en ;
+ rdfs:label "first name (Biodes)"@en ,
+ "voornaam BioDes"@nl ;
+ "voornaam Biodes"@nl .
+
+
+### https://w3id.org/pnv#givenName
+:givenName rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A Given name designates the name(s) given to someone at birth or any other name-giving event"@en ,
+ "A2A:PersonNameFirstName"@en ;
+ rdfs:label "een of meer voornamen"@nl ,
+ "given name"@en ;
+ "Christian name"@en ,
+ "forename"@en ;
+ "een of meer voornamen"@nl .
+
+
+### https://w3id.org/pnv#givenNameSuffix
+:givenNameSuffix rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :givenName ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A Given name suffix is a name part that is appended to a given name. In the name of the fifteenth-century Duke of Burgundy Philip the Good, for example, \"the Good\" is the Given name suffix."@en ;
+ rdfs:label "given name suffix"@en ,
+ "toevoegsel voornaam"@nl ;
+ "toevoegsel voornaam"@nl .
+
+
+### https://w3id.org/pnv#honorificSuffix
+:honorificSuffix rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :suffix ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "An Honorific suffix is a name part that is appended to distinguish someone"@en ;
+ rdfs:label "honorific suffix"@en ,
+ "titel (adellijk of burgerlijk) als achtervoegsel"@nl ;
+ "titel (adellijk of burgerlijk) als achtervoegsel"@nl .
+
+
+### https://w3id.org/pnv#infix
+:infix rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "An Infix designates name elements that come in between pnv:firstName and pnv:baseSurname. This property is only to be used by data providers who have structured their name elements following the BioDes structure. Infix is equivalent to BioDes:intrapositie."@en ,
+ "BioDes:intrapositie"@en ;
+ rdfs:label "infix (BioDes)"@en .
+
+
+### https://w3id.org/pnv#infixTitle
+:infixTitle rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :infix ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "An Infix title designates a title in the middle of a name"@en ;
+ rdfs:label "adellijke titel in het midden van een naam"@nl ,
+ "infix title"@en ;
+ "adellijke titel in het midden van een naam"@nl .
+
+
+### https://w3id.org/pnv#initials
+:initials rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A2A:PersonNameInitials"@en ,
+ "An initial is the first letter of a person's given name (or sometimes a combination of letters). The Initials property can be used to separately record the initial(s) of a person's given name(s). Each initial should be followed by a dot. It is recommended to always use the Initials property to record initials, but if only the initials of a given name are known, they may also be recorded using pnv:givenName (or pnv:firstName). Example 1: \"Peter R. de Vries\" would be modelled using pnv:initials \"P.R.\" and pnv:givenName \"Peter R.\". Example 2: \"C.Joh. Kieviet\" would ideally be modelled using pnv:initials \"C.Joh.\", but pnv:givenName \"C.Joh.\" is also possible. Example 3: \"H.A.F.M.O. (Hans) van Mierlo\" would be modelled using pnv:initials \"H.A.F.M.O.\" and pnv:givenName \"Hans\"."@en ;
+ rdfs:label "initialen"@nl ,
+ "initials"@en ;
+ "initialen"@nl .
+
+
+### https://w3id.org/pnv#literalName
+:literalName rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A2A:PersonNameLiteral"@en ,
+ "Literal name designates a full personal name. This property may only be left blank if a person's name was unknown or if a person was unnamed (e.g. a child that died shortly after being born), in which cases the property pnv:nameSpecification should state \"unknown\" or \"unnamed\"."@en ;
+ rdfs:label "full name"@en ,
+ "volledige naam"@nl ;
+ rdfs:seeAlso ;
+ "letterlijke naam"@nl ;
+ "volledige naam"@nl .
+
+
+### https://w3id.org/pnv#nameSpecification
+:nameSpecification rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:comment "The Name specification property can be used to specify the type of name, e.g. to discern between name variants, or to state that the person's name is unknown or that the person was unnamed, e.g. in the case of a child that died before it was given a name. It can be a string (e.g. \"unknown\", \"unnamed\", \"religious name\", \"stage name\", \"pen name\", \"married name\" or \"birth name\") or a reference to a controlled vocabulary."@en ;
+ rdfs:label "naamspecificatie"@nl ,
+ "name specification"@en ;
+ "naamspecificatie"@nl .
+
+
+### https://w3id.org/pnv#patronym
+:patronym rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A Patronym is a name element based on the given name of one's father or grandfather. This is also the preferred property for a matronym (i.e. a name element based on the given name of one's mother or grandmother)."@en ,
+ "A2A:PersonNamePatronym"@en ;
+ rdfs:label "patroniem"@nl ,
+ "patronym"@en ;
+ "patroniem"@nl .
+
+
+### https://w3id.org/pnv#prefix
+:prefix rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A Prefix is a noble or honorific title prefixing a name, e.g. \"Prof. dr.\" or \"Jhr.\""^^xsd:string ,
+ """A2A:PersonNameTitle
+A2A:PersonNameTitleOfNobility"""@en ,
+ "BioDes:prepositie"@en ;
+ rdfs:label "prefix"@en ,
+ "voorvoegsel"@nl .
+
+
+### https://w3id.org/pnv#suffix
+:suffix rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A Suffix designates name elements that come after the family name. This property is only to be used by data providers who have structured their name elements following the BioDes structure."^^xsd:string ,
+ "BioDes:postpositie"@en ;
+ rdfs:label "achtervoegsel BioDes"@nl ,
+ "suffix (BioDes)"@en ;
+ "achtervoegsel BioDes"@nl .
+
+
+### https://w3id.org/pnv#surname
+:surname rdf:type owl:DatatypeProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A surname is the name of the family a person is born into, including one or more prefixes. In some cases the honorific prefix can be incorporated into the surname (e.g. Van Welderen baron Rengers)."@en ,
+ "A2A:PersonNameFamilyName"@en ;
+ rdfs:label "familienaam"@nl ,
+ "surname"@en ;
+ "surname"@en ;
+ "familienaam"@nl .
+
+
+### https://w3id.org/pnv#surnamePrefix
+:surnamePrefix rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf owl:topDataProperty ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A Surname prefix is a name part prefixing the surname (e.g. \"van\" or \"van den\")."@en ,
+ "A2A:PersonNamePrefixLastName"@en ;
+ rdfs:label "surname prefix"@en ,
+ "tussenvoegsel"@nl ;
+ "tussenvoegsel"@nl .
+
+
+### https://w3id.org/pnv#trailingPatronym
+:trailingPatronym rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :patronym ;
+ rdfs:domain :PersonName ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A Trailing patronym refers to the parent's given name, suffixing the person's family name, mostly used for disambiguation."^^xsd:string ;
+ rdfs:label "patroniem na achternaam"@nl ,
+ "trailing patronym"@en ;
+ "patroniem na achternaam"@nl .
+
+
+#################################################################
+# Classes
+#################################################################
+
+### http://dbpedia.org/ontology/Name
+ rdf:type owl:Class ;
+ owl:equivalentClass :PersonName .
+
+
+### http://dbpedia.org/ontology/Person
+ rdf:type owl:Class ;
+ owl:equivalentClass :Person .
+
+
+### http://schema.org/Person
+ rdf:type owl:Class ;
+ owl:equivalentClass :Person .
+
+
+### http://www.cidoc-crm.org/cidoc-crm/E21_person
+ rdf:type owl:Class ;
+ owl:equivalentClass :Person .
+
+
+### http://www.cidoc-crm.org/cidoc-crm/E41_Appellation
+ rdf:type owl:Class ;
+ owl:equivalentClass :PersonName .
+
+
+### http://www.loc.gov/premis/rdf/v3/Person
+ rdf:type owl:Class ;
+ rdfs:subClassOf ,
+ .
+
+
+### http://www.w3.org/ns/prov#Person
+ rdf:type owl:Class .
+
+
+### http://www.wikidata.org/entity/Q1071027
+ rdf:type owl:Class ;
+ owl:equivalentClass :PersonName .
+
+
+### http://www.wikidata.org/entity/Q5
+ rdf:type owl:Class ;
+ owl:equivalentClass :Person .
+
+
+### http://xmlns.com/foaf/0.1/Person
+ rdf:type owl:Class ;
+ owl:equivalentClass :Person .
+
+
+### https://w3id.org/pnv#Person
+:Person rdf:type owl:Class ;
+ owl:disjointWith :PersonName ;
+ rdfs:comment "A Person is a human being whose individual existence can somehow be documented"@en ;
+ rdfs:label "Person"@en ,
+ "Persoon"@nl ;
+ "Person"@en ,
+ "Persoon"@nl .
+
+
+### https://w3id.org/pnv#PersonName
+:PersonName rdf:type owl:Class ;
+ rdfs:comment "A name is considered to be a resource type in its own right"@en ,
+ "A2A:PersonName"@en ;
+ rdfs:label "A Person's name"@en ,
+ "Naam van een persoon"@nl ;
+ "Naam van een persoon"@nl .
+
+
+### Generated by the OWL API (version 4.2.8.20170104-2310) https://github.com/owlcs/owlapi
diff --git a/data/ontology/rec.ttl b/data/ontology/rec.ttl
new file mode 100644
index 0000000000..8335ab04e8
--- /dev/null
+++ b/data/ontology/rec.ttl
@@ -0,0 +1,3017 @@
+# baseURI: https://w3id.org/rec
+# imports: http://datashapes.org/dash
+# imports: https://brickschema.org/schema/1.3/Brick
+# imports: https://w3id.org/rec/brickpatches
+# prefix: rec
+
+@prefix : .
+@prefix brick: .
+@prefix brickpatches: .
+@prefix dash: .
+@prefix geojson: .
+@prefix owl: .
+@prefix qudt: .
+@prefix rdf: .
+@prefix rdfs: .
+@prefix rec: .
+@prefix sh: .
+@prefix xsd: .
+
+brick:Equipment
+ rdf:type owl:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Equipment" ;
+ rdfs:subClassOf rec:Asset ;
+.
+
+ rdf:type owl:Ontology ;
+ rdfs:label "RealEstateCore" ;
+ owl:imports ;
+ owl:imports ;
+ owl:imports ;
+ owl:versionInfo "4.0" ;
+.
+rec:AbsoluteHumidityObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Absolute humidity observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:AccelerationObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Acceleration observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:AccessControlZone
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Access control zone" ;
+ rdfs:subClassOf rec:Zone ;
+.
+rec:AccessPanel
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Access panel" ;
+ rdfs:subClassOf rec:BarrierAsset ;
+.
+rec:ActuationEvent
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Actuation event" ;
+ rdfs:subClassOf rec:PointEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:targetPoint ;
+ sh:class brick:Point ;
+ sh:description "The brick:Point(s) (e.g., brick:Commands, brick:Setpoints, or brick:Parameters) that the actuation will target/execute." ;
+ sh:minCount 1 ;
+ sh:name "target point" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:string ;
+ sh:description "The command message/payload of this actuation event." ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:AdmittingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Admitting room" ;
+ rdfs:subClassOf rec:HealthcareRoom ;
+.
+rec:Agent
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "The human, group, or machine that consumes or acts upon an object or data. This higher-level grouping allows properties that are shared among its subclasses (Person, Organization, ....) to be anchored in one joint place, on the Agent class." ;
+ rdfs:label "Agent" ;
+ rdfs:subClassOf rdfs:Resource ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:isMemberOf ;
+ sh:class rec:Organization ;
+ sh:description "Indicates membership in an organization. Note that componency (e.g., departments of a corporation) are expressed using the more generic Organization.isPartOf property." ;
+ sh:name "is member of" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:owns ;
+ sh:description "Indicates ownership of some thing, e.g., a building, an asset, an organization, etc." ;
+ sh:name "owns" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:AlarmObject
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Alarm object" ;
+ rdfs:subClassOf rec:ServiceObject ;
+.
+rec:AngleObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Angle observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:AngularAccelerationObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Angular acceleration observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:AngularVelocityObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Angular velocity observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Apartment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Apartment" ;
+ rdfs:subClassOf rec:Collection ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:includes ;
+ sh:class rec:Room ;
+ sh:minCount 1 ;
+ sh:name "includes" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:ArchitecturalAsset
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Architectural asset" ;
+ rdfs:subClassOf rec:Asset ;
+.
+rec:Architecture
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A designed/landscaped (or potentially designed/landscaped) part of the physical world that has a 3D spatial extent. E.g., a building site, a building, levels within the building, rooms, etc." ;
+ rdfs:label "Architecture" ;
+ rdfs:subClassOf rec:Space ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:address ;
+ sh:class rec:PostalAddress ;
+ sh:description "Physical address of the architecture (site, building, sub-building, entrance room, etc.) in question." ;
+ sh:name "address" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:adjacentElement ;
+ sh:class rec:BuildingElement ;
+ sh:name "adjacent element" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:architectedBy ;
+ sh:class rec:Agent ;
+ sh:name "architected by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:area ;
+ sh:class rec:ArchitectureArea ;
+ sh:maxCount 1 ;
+ sh:name "area" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:capacity ;
+ sh:class rec:ArchitectureCapacity ;
+ sh:maxCount 1 ;
+ sh:name "capacity" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:constructedBy ;
+ sh:class rec:Agent ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:containsElement ;
+ sh:class rec:BuildingElement ;
+ sh:description "Links an Architecture to BuildingElement that is contained in the Space." ;
+ sh:name "contains element" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:documentation ;
+ sh:class rec:Document ;
+ sh:name "documentation" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:hasPoint ;
+ sh:class brick:Point ;
+ sh:name "has point" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:intersectingElement ;
+ sh:class rec:BuildingElement ;
+ sh:name "intersecting element" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:isFedBy ;
+ sh:name "is fed by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:operatedBy ;
+ sh:class rec:Agent ;
+ sh:name "operated by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:ownedBy ;
+ sh:class rec:Agent ;
+ sh:name "owned by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:ArchitectureArea
+ rdf:type ;
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Describes business-relevant area measurements typically associated with architected spaces. As the exact requirements on these measurements will vary from case to case or jurisdiction to jurisdiction, subclassing and specializing this definition is encouraged." ;
+ rdfs:label "Architecture area" ;
+ rdfs:subClassOf rec:Information ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:grossArea ;
+ sh:datatype xsd:float ;
+ sh:maxCount 1 ;
+ sh:name "gross area" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:netArea ;
+ sh:datatype xsd:float ;
+ sh:maxCount 1 ;
+ sh:name "net area" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:rentableArea ;
+ sh:datatype xsd:float ;
+ sh:maxCount 1 ;
+ sh:name "rentable area" ;
+ ] ;
+.
+rec:ArchitectureCapacity
+ rdf:type ;
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Describes business-relevant capacity measurements typically associated with architected spaces. As the exact requirements on these measurements will vary from case to case or jurisdiction to jurisdiction, subclassing and specializing this definition is encouraged." ;
+ rdfs:label "Architecture capacity" ;
+ rdfs:subClassOf rec:Information ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:maxOccupancy ;
+ sh:datatype xsd:integer ;
+ sh:description "E.g., per Building Code" ;
+ sh:maxCount 1 ;
+ sh:name "maximum occupancy" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:seatingCapacity ;
+ sh:datatype xsd:integer ;
+ sh:maxCount 1 ;
+ sh:name "seating capacity" ;
+ ] ;
+.
+rec:AreaObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Area observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Asset
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Something which is placed inside of a building, but is not an integral part of that building's structure; e.g., furniture, equipment, systems, etc." ;
+ rdfs:label "Asset" ;
+ rdfs:subClassOf rdfs:Resource ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:IPAddress ;
+ sh:datatype xsd:string ;
+ sh:name "IP address" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:MACAddress ;
+ sh:datatype xsd:string ;
+ sh:name "MAC address" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:assetTag ;
+ sh:datatype xsd:string ;
+ sh:name "asset tag" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:commissionedBy ;
+ sh:class rec:Agent ;
+ sh:name "commissioned by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:commissioningDate ;
+ sh:datatype xsd:date ;
+ sh:maxCount 1 ;
+ sh:name "commissioning date" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:documentation ;
+ sh:class rec:Document ;
+ sh:name "documentation" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:geometry ;
+ sh:class rec:Geometry ;
+ sh:description "A GeoJSON Geometry representing the position or extent of the asset." ;
+ sh:maxCount 1 ;
+ sh:name "geometry" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:hasPart ;
+ sh:class rec:Asset ;
+ sh:name "has part" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:hasPoint ;
+ sh:class brick:Point ;
+ sh:name "has point" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:initialCost ;
+ sh:maxCount 1 ;
+ sh:name "initial cost" ;
+ sh:nodeKind sh:Literal ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:installationDate ;
+ sh:datatype xsd:date ;
+ sh:maxCount 1 ;
+ sh:name "installation date" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:installedBy ;
+ sh:class rec:Agent ;
+ sh:name "installed by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:isPartOf ;
+ sh:class rec:Asset ;
+ sh:name "is part of" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:locatedIn ;
+ sh:class rec:Space ;
+ sh:name "located in" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:maintenanceInterval ;
+ sh:datatype xsd:duration ;
+ sh:name "maintenance interval" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:manufacturedBy ;
+ sh:class rec:Agent ;
+ sh:name "manufactured by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:modelNumber ;
+ sh:datatype xsd:string ;
+ sh:name "model number" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:mountedOn ;
+ sh:class rec:BuildingElement ;
+ sh:description "An asset may be mounted on some part of the building construction (e.g., a blind on a facade, a camera on a wall, etc)." ;
+ sh:maxCount 1 ;
+ sh:name "mounted on" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:serialNumber ;
+ sh:datatype xsd:string ;
+ sh:name "serial number" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:servicedBy ;
+ sh:class rec:Agent ;
+ sh:name "serviced by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:turnoverDate ;
+ sh:datatype xsd:date ;
+ sh:maxCount 1 ;
+ sh:name "turnover date" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:weight ;
+ sh:datatype xsd:decimal ;
+ sh:maxCount 1 ;
+ sh:name "weight" ;
+ ] ;
+.
+rec:Atrium
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Atrium" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:AudioVisualEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Audio visual equipment." ;
+ rdfs:label "Audio Visual Equipment" ;
+ rdfs:subClassOf rec:ICTEquipment ;
+.
+rec:Auditorium
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Auditorium" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:BACnetController
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "BACnet controller." ;
+ rdfs:label "BACnet Controller" ;
+ rdfs:subClassOf rec:Controller ;
+.
+rec:BackOffice
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Back office" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Balcony
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Balcony" ;
+ rdfs:subClassOf rec:BuildingElement ;
+.
+rec:BarRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Bar room" ;
+ rdfs:subClassOf rec:FoodHandlingRoom ;
+.
+rec:BarrierAsset
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Barrier asset" ;
+ rdfs:subClassOf rec:ArchitecturalAsset ;
+.
+rec:BasementLevel
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Basement level" ;
+ rdfs:subClassOf rec:Level ;
+.
+rec:Bathroom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Bathroom" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Bed
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Bed" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:Bedroom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Bedroom" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:BicycleGarage
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Bicycle garage" ;
+ rdfs:subClassOf rec:Garage ;
+.
+rec:Bookcase
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Bookcase" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:BooleanValueObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Generic xsd:boolean value observation that is not specific to any particular QUDT quantitykind or unit." ;
+ rdfs:label "Boolean value observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:boolean ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Building
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A confined building structure." ;
+ rdfs:label "Building" ;
+ rdfs:subClassOf rec:Architecture ;
+.
+rec:BuildingElement
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A part that constitutes a piece of a building's structural makeup. E.g., Facade, Wall, Slab, Roof, etc." ;
+ rdfs:label "Building element" ;
+ rdfs:subClassOf rdfs:Resource ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:documentation ;
+ sh:class rec:Document ;
+ sh:name "documentation" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:hasPart ;
+ sh:class rec:BuildingElement ;
+ sh:name "has part" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:isPartOf ;
+ sh:class rec:BuildingElement ;
+ sh:maxCount 1 ;
+ sh:name "is part of" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:locatedIn ;
+ sh:class rec:Architecture ;
+ sh:description "Indicates the architected space (site, building, level, room...) in which this building element is placed." ;
+ sh:maxCount 1 ;
+ sh:name "located in" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:BulletinBoard
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Bulletin board" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:Cabinet
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Cabinet" ;
+ rdfs:subClassOf rec:UtilitiesRoom ;
+.
+rec:CableRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Cable room" ;
+ rdfs:subClassOf rec:UtilitiesRoom ;
+.
+rec:CafeteriaRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Cafeteria room" ;
+ rdfs:subClassOf rec:FoodHandlingRoom ;
+.
+rec:Campus
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A campus represents a collection of location entities. The constituent locations may have differing legal ownership and utilization purposes, but they are generally perceived as a coherent unit or sub-region within a city or other region. E.g., a university campus, a hospital campus, a corporate campus, etc." ;
+ rdfs:label "Campus" ;
+ rdfs:subClassOf rec:Collection ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:includes ;
+ sh:class rec:Architecture ;
+ sh:minCount 1 ;
+ sh:name "includes" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:CapacitanceObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Capacitance observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Cart
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Cart" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:Chair
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Chair" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:Cinema
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Cinema" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Classroom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Classroom" ;
+ rdfs:subClassOf rec:EducationalRoom ;
+.
+rec:CleaningRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Cleaning room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:ClimateControlRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Climate-control room" ;
+ rdfs:subClassOf rec:UtilitiesRoom ;
+.
+rec:CloakRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Cloak room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:CoatRack
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Coat rack" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:CoffeeTable
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Coffee table" ;
+ rdfs:subClassOf rec:Table ;
+.
+rec:Collection
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "An administrative grouping of entities that are adressed and treated as a unit for some purpose. These entities may have some spatial arrangement (e.g., an apartment is typically contiguous) but that is not a requirement (see, e.g., a distributed campus consisting of spatially disjoint plots or buildings). Inclusion in a Collection is determined by the 'includes' field on a specific subclass." ;
+ rdfs:label "Collection" ;
+ rdfs:subClassOf rdfs:Resource ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:documentation ;
+ sh:class rec:Document ;
+ sh:name "documentation" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:Company
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Company" ;
+ rdfs:subClassOf rec:Organization ;
+.
+rec:ComputerCart
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Computer cart" ;
+ rdfs:subClassOf rec:Cart ;
+.
+rec:ConferenceRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Conference room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:ConferenceTable
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Conference table" ;
+ rdfs:subClassOf rec:Table ;
+.
+rec:Controller
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Controller." ;
+ rdfs:label "Controller" ;
+ rdfs:subClassOf rec:ICTEquipment ;
+.
+rec:ConversationRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Conversation room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:CookingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Cooking room" ;
+ rdfs:subClassOf rec:FoodHandlingRoom ;
+.
+rec:CopyingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Copying room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:DataNetworkEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Data network equipment." ;
+ rdfs:label "Data Network Equipment" ;
+ rdfs:subClassOf rec:ICTEquipment ;
+.
+rec:DataRateObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Data rate observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:DataServerRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Data server room" ;
+ rdfs:subClassOf rec:UtilitiesRoom ;
+.
+rec:DataSizeObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Data size observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:DaylightSensorEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Daylight sensor." ;
+ rdfs:label "Daylight Sensor" ;
+ rdfs:subClassOf rec:SensorEquipment ;
+.
+rec:DensityObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Density observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Department
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Department" ;
+ rdfs:subClassOf rec:Organization ;
+.
+rec:Desk
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Desk" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:DeskLamp
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Desk lamp" ;
+ rdfs:subClassOf rec:Lamp ;
+.
+rec:DiningRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Dining room" ;
+ rdfs:subClassOf rec:FoodHandlingRoom ;
+.
+rec:DisabledToilet
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Disabled toilet" ;
+ rdfs:subClassOf rec:PersonalHygiene ;
+.
+rec:DishingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Dishing room" ;
+ rdfs:subClassOf rec:FoodHandlingRoom ;
+.
+rec:DistanceObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Distance observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Document
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Document" ;
+ rdfs:subClassOf rec:Information ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:documentTopic ;
+ sh:name "document topic" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:url ;
+ sh:name "URL" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:Door
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Door" ;
+ rdfs:subClassOf rec:BarrierAsset ;
+.
+rec:DoubleValueObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Generic xsd:double value observation that is not specific to any particular QUDT quantitykind or unit." ;
+ rdfs:label "Double value observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:DressingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Dressing room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:EducationalRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Educational room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:ElectricChargeObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Electric charge observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:ElectricCurrentObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Elecric current observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:ElectricityRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Electricity room" ;
+ rdfs:subClassOf rec:UtilitiesRoom ;
+.
+rec:ElevatorRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Elevator room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:ElevatorShaft
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Elevator shaft" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:ElevatorTrip
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Elevator trip" ;
+ rdfs:subClassOf rec:Event ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:currentLevel ;
+ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:name "current level" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:endLevel ;
+ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:name "end level" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:startLevel ;
+ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:name "start level" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:tripDirection ;
+ sh:datatype xsd:string ;
+ sh:in (
+ "Up"
+ "Down"
+ ) ;
+ sh:maxCount 1 ;
+ sh:name "trip direction" ;
+ ] ;
+.
+rec:EndTable
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "End table" ;
+ rdfs:subClassOf rec:Table ;
+.
+rec:EnergyObservation
+ rdf:type ;
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Energy observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Entrance
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Entrance" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:EquipmentCollection
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Equipment collection" ;
+ rdfs:subClassOf rec:Collection ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:includes ;
+ sh:class brick:Equipment ;
+ sh:minCount 1 ;
+ sh:name "includes" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:ErrorReport
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Error report" ;
+ rdfs:subClassOf rec:ServiceObject ;
+.
+rec:EthernetPort
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Ethernet port." ;
+ rdfs:label "Ethernet Port" ;
+ rdfs:subClassOf rec:DataNetworkEquipment ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:poeType ;
+ sh:datatype xsd:string ;
+ sh:in (
+ "Type1"
+ "Type2"
+ "Type3"
+ "Type4"
+ ) ;
+ sh:maxCount 1 ;
+ sh:name "PoE Type" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:portSpeed ;
+ sh:datatype xsd:float ;
+ sh:description "The data rate of the port in Mib/s, i.e. mebibit (2^20 bit) per second." ;
+ sh:maxCount 1 ;
+ sh:name "Port Speed" ;
+ ] ;
+.
+rec:EthernetSwitch
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Ethernet switch." ;
+ rdfs:label "Ethernet Switch" ;
+ rdfs:subClassOf rec:DataNetworkEquipment ;
+.
+rec:Event
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A temporally indexed entity, e.g., an observation, a lease, a construction project, etc. Can be instantaneous (timestamp property assigned) or have temporal extent (start and end properties assigned). Subclasses may define specific behaviour and requirements, e.g., on spatial indexing, agent participation, etc." ;
+ rdfs:label "Event" ;
+ rdfs:subClassOf rdfs:Resource ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:end ;
+ sh:datatype xsd:dateTime ;
+ sh:description "Event ending timestamp." ;
+ sh:maxCount 1 ;
+ sh:name "end" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:start ;
+ sh:datatype xsd:dateTime ;
+ sh:description "Event start timestamp." ;
+ sh:maxCount 1 ;
+ sh:name "start" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:timestamp ;
+ sh:datatype xsd:dateTime ;
+ sh:maxCount 1 ;
+ sh:name "timestamp" ;
+ ] ;
+.
+rec:ExceptionEvent
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Exception event" ;
+ rdfs:subClassOf rec:PointEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:sourcePoint ;
+ sh:class brick:Point ;
+ sh:description "The brick:Point that emitted this exception." ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "source point" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:string ;
+ sh:description "The message of this exception event." ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:ExerciseRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Exercise room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:ExhibitionRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Exhibition room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Facade
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Facade" ;
+ rdfs:subClassOf rec:BuildingElement ;
+.
+rec:FilingCabinet
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Filing cabinet" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:FittingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Fitting room" ;
+ rdfs:subClassOf rec:RetailRoom ;
+.
+rec:FloorLamp
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Floor lamp" ;
+ rdfs:subClassOf rec:Lamp ;
+.
+rec:FloorMat
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Floor mat" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:FoldingChair
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Folding chair" ;
+ rdfs:subClassOf rec:Chair ;
+.
+rec:FoldingTable
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Folding table" ;
+ rdfs:subClassOf rec:Table ;
+.
+rec:FoodHandlingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Food-handling room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Footrest
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Footrest" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:ForceObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Force observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:FrequencyObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Frequency observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Furniture
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Furniture" ;
+ rdfs:subClassOf rec:Asset ;
+.
+rec:FurnitureCollection
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Furniture collection" ;
+ rdfs:subClassOf rec:Collection ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:includes ;
+ sh:class rec:Furniture ;
+ sh:minCount 1 ;
+ sh:name "includes" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:Garage
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Garage" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Gateway
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Gateway." ;
+ rdfs:label "Gateway" ;
+ rdfs:subClassOf rec:ICTEquipment ;
+.
+rec:Geometry
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Geometry" ;
+ rdfs:subClassOf rec:Information ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:coordinateSystem ;
+ sh:datatype xsd:string ;
+ sh:in (
+ "WGS84"
+ "SWEREF99"
+ "LocalCoordinates"
+ ) ;
+ sh:maxCount 1 ;
+ sh:name "coordinate system" ;
+ sh:nodeKind sh:Literal ;
+ ] ;
+.
+rec:Georeference
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A georeference creates a relationship between a local coordinate system into a geographic coordinate system." ;
+ rdfs:label "Georeference" ;
+ rdfs:subClassOf rec:Information ;
+.
+rec:Geotransform
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A transform following GDAL's Affine Transform that transforms a local coordinate into a WGS84 coordinate. Created from Ground Control Points (GCP) using GDAL's GCPsToGeotransform method." ;
+ rdfs:label "Geotransform" ;
+ rdfs:subClassOf rec:Georeference ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:heightScaleFactor ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:name "height scale factor" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:originX ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:name "origin x" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:originY ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:name "origin y" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:widthScaleFactor ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:name "width scale factor" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:xRotationalScaleFactor ;
+ sh:datatype xsd:double ;
+ sh:description "Value will be zero if the local coordinate system is north-aligned." ;
+ sh:maxCount 1 ;
+ sh:name "x rotational scale factor" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:yRotationalScaleFactor ;
+ sh:datatype xsd:double ;
+ sh:description "Value will be zero if the local coordinate system is north-aligned." ;
+ sh:maxCount 1 ;
+ sh:name "y rotational scale factor" ;
+ ] ;
+.
+rec:GroupRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Group room" ;
+ rdfs:subClassOf rec:EducationalRoom ;
+.
+rec:HVACZone
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "HVAC zone" ;
+ rdfs:subClassOf rec:Zone ;
+.
+rec:Hallway
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Hallway" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:HealthcareRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Healthcare room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Hospital
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Hospital" ;
+ rdfs:subClassOf rec:Building ;
+.
+rec:IAQSensorEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Indoor air quality sensor." ;
+ rdfs:label "Indoor Air Quality Sensor" ;
+ rdfs:subClassOf rec:SensorEquipment ;
+.
+rec:ICTEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Equipment and devices that are part of a building's ICT infrastructure." ;
+ rdfs:label "ICT Equipment" ;
+ rdfs:subClassOf brick:Equipment ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:heightRUs ;
+ sh:datatype xsd:integer ;
+ sh:name "Height (RUs)" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:numberOfPorts ;
+ sh:datatype xsd:integer ;
+ sh:name "Number of Ports" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:standard ;
+ sh:datatype xsd:string ;
+ sh:description "The standard the equipment or device adheres to, e.g. IEEE 802.11." ;
+ sh:name "Standard" ;
+ ] ;
+.
+rec:ICTHardware
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "ICT hardware." ;
+ rdfs:label "ICT Hardware" ;
+ rdfs:subClassOf rec:ICTEquipment ;
+.
+rec:ITRack
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "IT rack." ;
+ rdfs:label "IT Rack" ;
+ rdfs:subClassOf rec:ICTEquipment ;
+.
+rec:IlluminanceObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Illuminance observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:InductanceObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Inductance observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Information
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Information" ;
+ rdfs:subClassOf rdfs:Resource ;
+.
+rec:IntegerValueObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Generic xsd:int value observation that is not specific to any particular QUDT quantitykind or unit." ;
+ rdfs:label "Integer value observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:integer ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Kitchenette
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Kitchenette" ;
+ rdfs:subClassOf rec:FoodHandlingRoom ;
+.
+rec:Laboratory
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Laboratory" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:LaboratoryDry
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Laboratory (dry)" ;
+ rdfs:subClassOf rec:Laboratory ;
+.
+rec:LaboratoryWet
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Laboratory (wet)" ;
+ rdfs:subClassOf rec:Laboratory ;
+.
+rec:Lamp
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Lamp" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:LaundryRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Laundry room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:LeakDetectorEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Leak detector." ;
+ rdfs:label "Leak Detector" ;
+ rdfs:subClassOf rec:SensorEquipment ;
+.
+rec:Lease
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Lease" ;
+ rdfs:subClassOf rec:Event ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:leaseOf ;
+ sh:description "The object (e.g., property, equipment, etc) that this a lease of." ;
+ sh:minCount 1 ;
+ sh:name "lease of" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:leasee ;
+ sh:class rec:Agent ;
+ sh:description "The agent leasing some leasable object, i.e., the user of the asset." ;
+ sh:minCount 1 ;
+ sh:name "leasee" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:leasor ;
+ sh:class rec:Agent ;
+ sh:description "The agent leasing out some leasable object, i.e., the owner of the asset." ;
+ sh:minCount 1 ;
+ sh:name "leasor" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:regulatedBy ;
+ sh:class rec:LeaseContract ;
+ sh:description "Indicates the contract regulating the terms of the lease in question. " ;
+ sh:name "regulated by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:LeaseContract
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Formal document that identifies the Tenant and the leased asset or property; states lease term and fee (rent), and detailed terms and conditions of the lease agreement." ;
+ rdfs:label "Lease contract" ;
+ rdfs:subClassOf rec:Document ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:regulates ;
+ sh:class rec:Lease ;
+ sh:description "Indicates the lease(s) that this contract regulates the conditions of." ;
+ sh:name "regulates" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:LengthObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Length observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Level
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "The level of a building, a.k.a. storey, floor, etc." ;
+ rdfs:label "Level" ;
+ rdfs:subClassOf rec:Architecture ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:levelNumber ;
+ sh:datatype xsd:integer ;
+ sh:description "A number indicating the ordinal number of this level within the containing space (typically a Building or in the case of a Mezzanine, sometimes another level). Note that the implementation of this numbering scheme and its starting point is implementation-specific; e.g., the fifth floor below ground may be 0 in some systems, and -5 in others." ;
+ sh:name "level number" ;
+ ] ;
+.
+rec:Library
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Library" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:LivingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Living room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:LoadingReceivingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Loading/receiving room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:LockerRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Locker room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:LuminanceObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Luminance observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:LuminousFluxObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Luminous flux observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:LuminousIntensityObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Luminous intensity observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:MagneticFluxObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Magnetic flux observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:MailRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Mail room" ;
+ rdfs:subClassOf rec:BackOffice ;
+.
+rec:MailroomCart
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Mailroom cart" ;
+ rdfs:subClassOf rec:Cart ;
+.
+rec:MainEntrance
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Main entrance" ;
+ rdfs:subClassOf rec:Entrance ;
+.
+rec:MassFlowRateObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Mass flow rate observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:MassObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Mass observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:MeditationRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Meditation room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:MezzanineLevel
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Mezzanine level" ;
+ rdfs:subClassOf rec:Level ;
+.
+rec:MobileDesk
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Mobile desk" ;
+ rdfs:subClassOf rec:Desk ;
+.
+rec:ModbusController
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Modbus controller." ;
+ rdfs:label "Modbus Controller" ;
+ rdfs:subClassOf rec:Controller ;
+.
+rec:Morgue
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Morgue" ;
+ rdfs:subClassOf rec:HealthcareRoom ;
+.
+rec:MothersRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Mothers' room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:MultiPoint
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Multi point" ;
+ rdfs:subClassOf rec:Geometry ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:coordinates ;
+ sh:datatype geojson:MultiPoint ;
+ sh:description "A GeoJSON MultiPoint coordinate listing. Coordinates may be expressed in two or three dimensions. Ex: [[10.0, 40.0], [40.0, 30.0], [20.0, 20.0], [30.0, 10.0]]." ;
+ sh:maxCount 1 ;
+ sh:name "coordinates" ;
+ ] ;
+.
+rec:MultiPolygon
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Multi polygon" ;
+ rdfs:subClassOf rec:Geometry ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:coordinates ;
+ sh:datatype geojson:MultiPolygon ;
+ sh:description "A GeoJSON MultiPolygon coordinate listing. Coordinates may be expressed in two or three dimensions. Ex: [[[[30.0, 20.0], [45.0, 40.0], [10.0, 40.0], [30.0, 20.0]]], [[[15.0, 5.0], [40.0, 10.0], [10.0, 20.0], [5.0, 10.0], [15.0, 5.0]]]]." ;
+ sh:maxCount 1 ;
+ sh:name "coordinates" ;
+ ] ;
+.
+rec:MultiPurposeRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Multi-purpose room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:NeonatalNursingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Neonatal nursing room" ;
+ rdfs:subClassOf rec:HealthcareRoom ;
+.
+rec:NetworkRouter
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Network router." ;
+ rdfs:label "Network Router" ;
+ rdfs:subClassOf rec:DataNetworkEquipment ;
+.
+rec:NetworkSecurityEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Network security equipment." ;
+ rdfs:label "Network Security Equipment" ;
+ rdfs:subClassOf rec:DataNetworkEquipment ;
+.
+rec:NotificationObject
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Notification object" ;
+ rdfs:subClassOf rec:ServiceObject ;
+.
+rec:ObservationEvent
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Observation event" ;
+ rdfs:subClassOf rec:PointEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:sourcePoint ;
+ sh:class brick:Point ;
+ sh:description "The brick:Point that emitted this observation." ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "source point" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:OccupancySensorEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Occupancy sensor." ;
+ rdfs:label "Occupancy Sensor" ;
+ rdfs:subClassOf rec:SensorEquipment ;
+.
+rec:OccupancyZone
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Occupancy Zone is a spatial area where devices are monitoring or reporting on the concept of Occupancy (motion sensors, people counters, cameras, etc.)" ;
+ rdfs:label "Occupancy zone" ;
+ rdfs:subClassOf rec:Zone ;
+.
+rec:Office
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Office" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:OfficeChair
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Office chair" ;
+ rdfs:subClassOf rec:Chair ;
+.
+rec:OfficeLandscape
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "OfficeLandscape" ;
+ rdfs:subClassOf rec:Office ;
+.
+rec:OfficeRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "OfficeRoom" ;
+ rdfs:subClassOf rec:Office ;
+.
+rec:OperatingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Operating room" ;
+ rdfs:subClassOf rec:HealthcareRoom ;
+.
+rec:Organization
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "An organization of any sort (e.g., a business, association, project, consortium, tribe, etc.)" ;
+ rdfs:label "Organization" ;
+ rdfs:subClassOf rec:Agent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:hasMember ;
+ sh:class rec:Agent ;
+ sh:description "Indicates membership in an organization. Note that componency (e.g., departments of a corporation) are expressed using the more generic hasPart property." ;
+ sh:name "has member" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:hasPart ;
+ sh:class rec:Organization ;
+ sh:description "Indicates parthood relations in organizations (e.g., departments of a corporation). Note that membership in an organization is expressed using the more specific hasMember property." ;
+ sh:name "has part" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:isPartOf ;
+ sh:class rec:Organization ;
+ sh:description "Indicates parthood relations in organizations (e.g., departments of a corporation). Note that membership in an organization is expressed using the Agent.isMemberOf property." ;
+ sh:name "is part of" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:logo ;
+ sh:datatype xsd:anyURI ;
+ sh:description "URL link to an image/logo that represents the organization." ;
+ sh:name "logo" ;
+ ] ;
+.
+rec:OutdoorSpace
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Outdoor space" ;
+ rdfs:subClassOf rec:Architecture ;
+.
+rec:OutpatientServicesRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Outpatient services room" ;
+ rdfs:subClassOf rec:HealthcareRoom ;
+.
+rec:Pantry
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Pantry" ;
+ rdfs:subClassOf rec:FoodHandlingRoom ;
+.
+rec:ParkingSpace
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Parking space" ;
+ rdfs:subClassOf rec:Zone ;
+.
+rec:Partition
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Partition" ;
+ rdfs:subClassOf rec:BarrierAsset ;
+.
+rec:PeopleCountSensorEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "People count sensor." ;
+ rdfs:label "People Count Sensor" ;
+ rdfs:subClassOf rec:SensorEquipment ;
+.
+rec:Person
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A natural person (i.e., an individual human being)." ;
+ rdfs:label "Person" ;
+ rdfs:subClassOf rec:Agent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:familyName ;
+ sh:datatype xsd:string ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:gender ;
+ sh:datatype xsd:string ;
+ sh:name "gender" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:givenName ;
+ sh:datatype xsd:string ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:image ;
+ sh:datatype xsd:anyURI ;
+ sh:description "URL link to an image that represents the person." ;
+ sh:name "image" ;
+ ] ;
+.
+rec:PersonalHygiene
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Personal hygiene room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:PharmacyRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Pharmacy room" ;
+ rdfs:subClassOf rec:HealthcareRoom ;
+.
+rec:PhoneBooth
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "PhoneBooth" ;
+ rdfs:subClassOf rec:Office ;
+.
+rec:Point
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Point" ;
+ rdfs:subClassOf rec:Geometry ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:coordinates ;
+ sh:datatype geojson:Point ;
+ sh:description "A GeoJSON Point coordinate listing. Coordinate may be expressed in two or three dimensions. Ex: [30.0, 10.0, 0.0]." ;
+ sh:maxCount 1 ;
+ sh:name "coordinates" ;
+ ] ;
+.
+rec:PointEvent
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "An event emanating from or targeting a Point; e.g., an individual Observation from a Sensor point, or an Actuation sent to a Command point. In other terms, the Points indicate the capability of some Space or Equipment to emit or accept data, while this class represents those actual data messages. Note that in most non-trivially sized systems, these events are not stored in the knowledge graph itself, but are rather forwarded to some C&C system or time series database." ;
+ rdfs:label "Point event" ;
+ rdfs:subClassOf rec:Event ;
+.
+rec:PointOfInterest
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Point of Interest" ;
+ rdfs:subClassOf rec:Information ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:objectOfInterest ;
+ sh:maxCount 1 ;
+ sh:name "object of interest" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:Polygon
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Polygon" ;
+ rdfs:subClassOf rec:Geometry ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:coordinates ;
+ sh:datatype geojson:Polygon ;
+ sh:description "A GeoJSON Polygon coordinate listing. Coordinates may be expressed in two or three dimensions. Ex: [[30.0, 10.0, 0.0], [40.0, 40.0, 2.0], [20.0, 40.0, 2.0], [10.0, 20.0, 2.0], [30.0, 10.0, 0.0]]." ;
+ sh:maxCount 1 ;
+ sh:name "coordinates" ;
+ ] ;
+.
+rec:Portfolio
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A portfolio is a grouping of buildings, sites, apartments, campuses, etc. that share some business-relevant commonality, e.g., are managed by the same company, are rented out to the same tenant, share utilization or legal definition (industrial vs commercial), etc." ;
+ rdfs:label "Portfolio" ;
+ rdfs:subClassOf rec:Collection ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:includes ;
+ sh:minCount 1 ;
+ sh:name "includes" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:PostalAddress
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Postal address" ;
+ rdfs:subClassOf rec:Information ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:addressLine1 ;
+ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:name "address line 1" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:addressLine2 ;
+ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:name "address line 2" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:city ;
+ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:name "city" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:country ;
+ sh:datatype xsd:string ;
+ sh:description "The country, e.g., USA, Sweden, Argentina, or optionally a two-letter ISO 3166-1 alpha-2 country code, e.g., \"SE\", \"US\", etc." ;
+ sh:maxCount 1 ;
+ sh:name "country" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:postalCode ;
+ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:name "postal code" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:region ;
+ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:name "region" ;
+ ] ;
+.
+rec:PowerObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Power observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Premises
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A premises is an administrative grouping of spaces that are used for some commercial or industrial purpose by a real estate holder or tenant. E.g, a suite of offices, a shop, or an industrial workshop." ;
+ rdfs:label "Premises" ;
+ rdfs:subClassOf rec:Collection ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:includes ;
+ sh:class rec:Architecture ;
+ sh:minCount 1 ;
+ sh:name "includes" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:PressureObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Pressure observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:PrinterCart
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Printer cart" ;
+ rdfs:subClassOf rec:Cart ;
+.
+rec:PrinterStand
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Printer stand" ;
+ rdfs:subClassOf rec:Stand ;
+.
+rec:RadiologyRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Radiology room" ;
+ rdfs:subClassOf rec:HealthcareRoom ;
+.
+rec:RealEstate
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "The legal/administrative representation of some lands and/or buildings. I.e., \"Fastighet\" (Swedish), \"Ejendom\" (Denmark), etc." ;
+ rdfs:label "Real Estate" ;
+ rdfs:subClassOf rec:Collection ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:includes ;
+ sh:class rec:Architecture ;
+ sh:minCount 1 ;
+ sh:name "includes" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:Reception
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Reception" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:ReceptionTable
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Reception table" ;
+ rdfs:subClassOf rec:Table ;
+.
+rec:RecordingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Recording room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:RecreationalRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Recreational room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Region
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "An administrative geospatial unit larger than the individual real estate. For instance, \"Lombary\", \"North America\", \"The Back Bay\", \"Elnätsområde Syd\", etc." ;
+ rdfs:label "Region" ;
+ rdfs:subClassOf rec:Space ;
+.
+rec:RelativeHumidityObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Relative humidity observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:ResistanceObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Resistance observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:RestingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Resting room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:RetailRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Retail room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Roof
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Roof" ;
+ rdfs:subClassOf rec:BuildingElement ;
+.
+rec:RoofLevel
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Roof level" ;
+ rdfs:subClassOf rec:Level ;
+.
+rec:Room
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Room" ;
+ rdfs:subClassOf rec:Architecture ;
+.
+rec:Safe
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Safe" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:Sauna
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Sauna" ;
+ rdfs:subClassOf rec:PersonalHygiene ;
+.
+rec:School
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "School" ;
+ rdfs:subClassOf rec:Building ;
+.
+rec:SecurityRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Security room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:SensorEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Sensor equipment." ;
+ rdfs:label "Sensor Equipment" ;
+ rdfs:subClassOf rec:ICTEquipment ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:batteryPercentage ;
+ sh:datatype xsd:double ;
+ sh:name "Battery Percentage" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:wifiSignalStrength ;
+ sh:datatype xsd:double ;
+ sh:name "Wi-Fi Signal Strength" ;
+ ] ;
+.
+rec:Server
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Server." ;
+ rdfs:label "Server" ;
+ rdfs:subClassOf rec:ICTHardware ;
+.
+rec:ServiceEntrance
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Service entrance" ;
+ rdfs:subClassOf rec:Entrance ;
+.
+rec:ServiceObject
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Service object" ;
+ rdfs:subClassOf rec:Information ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:acknowledgedBy ;
+ sh:class rec:Agent ;
+ sh:maxCount 1 ;
+ sh:name "acknowledged by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:acknowledgedTime ;
+ sh:datatype xsd:dateTime ;
+ sh:maxCount 1 ;
+ sh:name "acknowledged time" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:closedBy ;
+ sh:class rec:Agent ;
+ sh:maxCount 1 ;
+ sh:name "closed by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:closedTime ;
+ sh:datatype xsd:dateTime ;
+ sh:maxCount 1 ;
+ sh:name "closed time" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:createdBy ;
+ sh:class rec:Agent ;
+ sh:maxCount 1 ;
+ sh:name "created by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:createdTime ;
+ sh:datatype xsd:dateTime ;
+ sh:maxCount 1 ;
+ sh:name "created time" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:producedBy ;
+ sh:class brick:Point ;
+ sh:name "produced by" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:relatedTo ;
+ sh:minCount 1 ;
+ sh:name "related to" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:severity ;
+ sh:datatype xsd:string ;
+ sh:in (
+ "Severe"
+ "Major"
+ "Minor"
+ ) ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "severity" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:status ;
+ sh:datatype xsd:string ;
+ sh:in (
+ "Unacknowledged"
+ "Acknowledged"
+ "Closed"
+ ) ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "status" ;
+ ] ;
+.
+rec:ServiceShaft
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Service shaft" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Shelter
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Shelter" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:ShelterGasLock
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Shelter gas lock" ;
+ rdfs:subClassOf rec:Shelter ;
+.
+rec:ShelterRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Shelter room" ;
+ rdfs:subClassOf rec:Shelter ;
+.
+rec:ShoppingMall
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Shopping mall" ;
+ rdfs:subClassOf rec:Building ;
+.
+rec:ShowerRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Shower room" ;
+ rdfs:subClassOf rec:PersonalHygiene ;
+.
+rec:Site
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A piece of land upon which zero or more buildings may be situated." ;
+ rdfs:label "Site" ;
+ rdfs:subClassOf rec:Architecture ;
+.
+rec:Slab
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Slab" ;
+ rdfs:subClassOf rec:BuildingElement ;
+.
+rec:SmallStudyRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Small study room" ;
+ rdfs:subClassOf rec:EducationalRoom ;
+.
+rec:Sofa
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Sofa" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:SoundPressureObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Sound pressure observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Space
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A contiguous part of the physical world that contains or can contain sub-spaces. E.g., a Region can contain many Sites, which in turn can contain many Buildings." ;
+ rdfs:label "Space" ;
+ rdfs:subClassOf rdfs:Resource ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:geometry ;
+ sh:class rec:Geometry ;
+ sh:description "Polygon representing the spatial extent of this Space." ;
+ sh:maxCount 1 ;
+ sh:name "geometry" ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:georeference ;
+ sh:class rec:Georeference ;
+ sh:description "A georeference creates a relationship between the local coordinate system used within a building (e.g., measured in meters) and a geographic coordinate system (e.g., lat, long, alt), such that locally placed Spaces can be resolved and rendered in that geographic coordinate system (e.g., for mapping purposes)." ;
+ sh:maxCount 1 ;
+ sh:name "georeference" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:hasPart ;
+ sh:class rec:Space ;
+ sh:name "has part" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:isLocationOf ;
+ sh:name "is location of" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:isPartOf ;
+ sh:class rec:Space ;
+ sh:maxCount 1 ;
+ sh:name "is part of" ;
+ sh:nodeKind sh:IRI ;
+ ] ;
+.
+rec:SprinklerRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Sprinkler room" ;
+ rdfs:subClassOf rec:UtilitiesRoom ;
+.
+rec:Stadium
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Stadium" ;
+ rdfs:subClassOf rec:Building ;
+.
+rec:StaffRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Staff room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Stairwell
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Stairwell" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Stand
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Stand" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:Storage
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Storage" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:StorageCabinet
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Storage cabinet" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:SubBuilding
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Sub-building" ;
+ rdfs:subClassOf rec:Architecture ;
+.
+rec:TVStand
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "TV stand" ;
+ rdfs:subClassOf rec:Stand ;
+.
+rec:Table
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Table" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:TelecommunicationRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Telecommunication room" ;
+ rdfs:subClassOf rec:CableRoom ;
+.
+rec:TemperatureObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Temperature observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Theater
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Theater" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:TherapyRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Therapy room" ;
+ rdfs:subClassOf rec:HealthcareRoom ;
+.
+rec:ThermostatEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Thermostat." ;
+ rdfs:label "Thermostat" ;
+ rdfs:subClassOf rec:SensorEquipment ;
+.
+rec:ThrustObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Thrust observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:TimeSpanObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Timespan observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Toilet
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Toilet" ;
+ rdfs:subClassOf rec:PersonalHygiene ;
+.
+rec:TorqueObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Torque observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:TreatmentRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Treatment room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:TreatmentWaitingRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Treatment waiting room" ;
+ rdfs:subClassOf rec:TreatmentRoom ;
+.
+rec:UtilitiesRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Utilities room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:VelocityObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Velocity observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:VibrationSensorEquipment
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Vibration sensor." ;
+ rdfs:label "Vibration Sensor" ;
+ rdfs:subClassOf rec:SensorEquipment ;
+.
+rec:VirtualBuilding
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Virtual building" ;
+ rdfs:subClassOf rec:Building ;
+.
+rec:VoltageObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Voltage observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:VolumeFlowRateObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Volume flow rate observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:VolumeObservation
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ qudt:hasQuantityKind ;
+ rdfs:label "Volume observation" ;
+ rdfs:subClassOf rec:ObservationEvent ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:value ;
+ sh:datatype xsd:double ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:name "value" ;
+ ] ;
+.
+rec:Wall
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Wall" ;
+ rdfs:subClassOf rec:BuildingElement ;
+.
+rec:WallInner
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Wall (inner)" ;
+ rdfs:subClassOf rec:Wall ;
+.
+rec:WasteBasket
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Waste basket" ;
+ rdfs:subClassOf rec:Furniture ;
+.
+rec:WasteManagementRoom
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Waste management room" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Window
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Window" ;
+ rdfs:subClassOf rec:BarrierAsset ;
+.
+rec:WirelessAccessPoint
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "Wireless access point." ;
+ rdfs:label "Wireless Access Point" ;
+ rdfs:subClassOf rec:DataNetworkEquipment ;
+ sh:property [
+ rdf:type sh:PropertyShape ;
+ sh:path rec:generation ;
+ sh:datatype xsd:string ;
+ sh:in (
+ "WiFi4"
+ "WiFi5"
+ "WiFi6"
+ "WiFi6E"
+ "WiFi7"
+ ) ;
+ sh:maxCount 1 ;
+ sh:name "Generation" ;
+ ] ;
+.
+rec:WorkOrder
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Work order" ;
+ rdfs:subClassOf rec:ServiceObject ;
+.
+rec:Workshop
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Workshop" ;
+ rdfs:subClassOf rec:Room ;
+.
+rec:Workspace
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:label "Workspace" ;
+ rdfs:subClassOf rec:Zone ;
+.
+rec:Zone
+ rdf:type rdfs:Class ;
+ rdf:type sh:NodeShape ;
+ rdfs:comment "A sub-zone within or outside of a building defined to support some technology and/or use, e.g., an HVAC zone, a parking space, a security zone, etc." ;
+ rdfs:label "Zone" ;
+ rdfs:subClassOf rec:Architecture ;
+.
+rec:substance
+ rdf:type owl:AnnotationProperty ;
+ rdfs:domain rec:feeds ;
+ rdfs:domain rec:isFedBy ;
+ rdfs:label "substance" ;
+ rdfs:range [
+ rdf:type rdfs:Datatype ;
+ owl:oneOf (
+ "ACElec"
+ "Air"
+ "BlowdownWater"
+ "ChilledWater"
+ "ColdDomesticWater"
+ "Condensate"
+ "CondenserWater"
+ "DCElec"
+ "Diesel"
+ "DriveElec"
+ "Ethernet"
+ "ExhaustAir"
+ "Freight"
+ "FuelOil"
+ "Gasoline"
+ "GreaseExhaustAir"
+ "HotDomesticWater"
+ "HotWater"
+ "IrrigationWater"
+ "Light"
+ "MakeupWater"
+ "NaturalGas"
+ "NonPotableDomesticWater"
+ "OutsideAir"
+ "People"
+ "Propane"
+ "RecircHotDomesticWater"
+ "Refrig"
+ "ReturnAir"
+ "SprinklerWater"
+ "Steam"
+ "StormDrainage"
+ "SupplyAir"
+ "TransferAir"
+ "WasteVentDrainage"
+ "Water"
+ ) ;
+ ] ;
+.
diff --git a/data/ontology/spdx.ttl b/data/ontology/spdx.ttl
new file mode 100644
index 0000000000..587eea2075
--- /dev/null
+++ b/data/ontology/spdx.ttl
@@ -0,0 +1,3333 @@
+@prefix dcterms: .
+@prefix ns1: .
+@prefix ns2: .
+@prefix ns3: .
+@prefix ns4: .
+@prefix ns5: .
+@prefix ns6: .
+@prefix omg-ann: .
+@prefix owl: .
+@prefix rdf: .
+@prefix rdfs: .
+@prefix sh: .
+@prefix spdx: .
+@prefix xsd: .
+
+ns1:NoAssertionElement a owl:NamedIndividual,
+ ns1:IndividualElement ;
+ rdfs:comment """An Individual Value for Element representing a set of Elements of unknown
+identify or cardinality (number)."""@en ;
+ ns1:creationInfo .
+
+ns1:NoneElement a owl:NamedIndividual,
+ ns1:IndividualElement ;
+ rdfs:comment """An Individual Value for Element representing a set of Elements with
+cardinality (number/count) of zero."""@en ;
+ ns1:creationInfo .
+
+ns2:NoAssertionLicense a owl:NamedIndividual,
+ ns2:IndividualLicensingInfo ;
+ rdfs:comment """An Individual Value for License when no assertion can be made about its actual
+value."""@en ;
+ owl:sameAs ;
+ ns1:creationInfo .
+
+ns2:NoneLicense a owl:NamedIndividual,
+ ns2:IndividualLicensingInfo ;
+ rdfs:comment """An Individual Value for License where the SPDX data creator determines that no
+license is present."""@en ;
+ owl:sameAs ;
+ ns1:creationInfo .
+
+ a owl:Class,
+ sh:NodeShape ;
+ rdfs:comment "A type of extension consisting of a list of name value pairs."@en ;
+ rdfs:subClassOf ;
+ sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:property [ sh:class ;
+ sh:minCount 1 ;
+ sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:path ] .
+
+ a ns1:CreationInfo ;
+ rdfs:comment "This individual element was defined by the spec."@en ;
+ ns1:created "2024-11-22T03:00:01Z"^^xsd:dateTimeStamp ;
+ ns1:createdBy ns1:SpdxOrganization ;
+ ns1:specVersion "3.0.1" .
+
+ a ns1:CreationInfo ;
+ rdfs:comment "This individual element was defined by the spec."@en ;
+ ns1:created "2024-11-22T03:00:01Z"^^xsd:dateTimeStamp ;
+ ns1:createdBy ns1:SpdxOrganization ;
+ ns1:specVersion "3.0.1" .
+
+ a ns1:CreationInfo ;
+ rdfs:comment "This individual element was defined by the spec."@en ;
+ ns1:created "2024-11-22T03:00:01Z"^^xsd:dateTimeStamp ;
+ ns1:createdBy ns1:SpdxOrganization ;
+ ns1:specVersion "3.0.1" .
+
+ a ns1:CreationInfo ;
+ rdfs:comment "This individual element was defined by the spec."@en ;
+ ns1:created "2024-11-22T03:00:01Z"^^xsd:dateTimeStamp ;
+ ns1:createdBy ns1:SpdxOrganization ;
+ ns1:specVersion "3.0.1" .
+
+ a ns1:CreationInfo ;
+ rdfs:comment "This individual element was defined by the spec."@en ;
+ ns1:created "2024-11-22T03:00:01Z"^^xsd:dateTimeStamp ;
+ ns1:createdBy ns1:SpdxOrganization ;
+ ns1:specVersion "3.0.1" .
+
+spdx: a owl:Ontology ;
+ rdfs:label "System Package Data Exchange™ (SPDX®) Ontology"@en ;
+ dcterms:abstract "This ontology defines the terms and relationships used in the SPDX specification to describe system packages"@en ;
+ dcterms:created "2024-04-05"^^xsd:date ;
+ dcterms:creator "SPDX Project"@en ;
+ dcterms:license ;
+ dcterms:references ;
+ dcterms:title "System Package Data Exchange (SPDX) Ontology"@en ;
+ owl:versionIRI spdx: ;
+ omg-ann:copyright "Copyright (C) 2024 SPDX Project"@en .
+
+ns4:AIPackage a owl:Class,
+ sh:NodeShape ;
+ rdfs:comment "Specifies an AI package and its associated information."@en ;
+ rdfs:subClassOf ns3:Package ;
+ sh:nodeKind sh:IRI ;
+ sh:property [ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:Literal ;
+ sh:path ns4:informationAboutTraining ],
+ [ sh:datatype xsd:string ;
+ sh:nodeKind sh:Literal ;
+ sh:path ns4:modelDataPreprocessing ],
+ [ sh:datatype xsd:string ;
+ sh:nodeKind sh:Literal ;
+ sh:path ns4:typeOfModel ],
+ [ sh:class ns4:SafetyRiskAssessmentType ;
+ sh:in ( ) ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:IRI ;
+ sh:path ns4:safetyRiskAssessment ],
+ [ sh:class ns1:DictionaryEntry ;
+ sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:path ns4:metricDecisionThreshold ],
+ [ sh:class ns1:PresenceType ;
+ sh:in ( ) ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:IRI ;
+ sh:path ns4:useSensitivePersonalInformation ],
+ [ sh:class ns4:EnergyConsumption ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:path ns4:energyConsumption ],
+ [ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:Literal ;
+ sh:path ns4:limitation ],
+ [ sh:class ns1:DictionaryEntry ;
+ sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:path ns4:hyperparameter ],
+ [ sh:class ns1:PresenceType ;
+ sh:in ( ) ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:IRI ;
+ sh:path ns4:autonomyType ],
+ [ sh:datatype xsd:string ;
+ sh:nodeKind sh:Literal ;
+ sh:path ns4:domain ],
+ [ sh:datatype xsd:string ;
+ sh:nodeKind sh:Literal ;
+ sh:path ns4:modelExplainability ],
+ [ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:Literal ;
+ sh:path ns4:informationAboutApplication ],
+ [ sh:class ns1:DictionaryEntry ;
+ sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:path ns4:metric ],
+ [ sh:datatype xsd:string ;
+ sh:nodeKind sh:Literal ;
+ sh:path ns4:standardCompliance ] .
+
+ a owl:NamedIndividual,
+ ns4:EnergyUnitType ;
+ rdfs:label "kilowattHour" ;
+ rdfs:comment "Kilowatt-hour."@en .
+
+ a owl:NamedIndividual,
+ ns4:EnergyUnitType ;
+ rdfs:label "megajoule" ;
+ rdfs:comment "Megajoule."@en .
+
+ a owl:NamedIndividual,
+ ns4:EnergyUnitType ;
+ rdfs:label "other" ;
+ rdfs:comment "Any other units of energy measurement."@en .
+
+ a owl:NamedIndividual,
+ ns4:SafetyRiskAssessmentType ;
+ rdfs:label "high" ;
+ rdfs:comment "The second-highest level of risk posed by an AI system."@en .
+
+ a owl:NamedIndividual,
+ ns4:SafetyRiskAssessmentType ;
+ rdfs:label "low" ;
+ rdfs:comment "Low/no risk is posed by an AI system."@en .
+
+ a owl:NamedIndividual,
+ ns4:SafetyRiskAssessmentType ;
+ rdfs:label "medium" ;
+ rdfs:comment "The third-highest level of risk posed by an AI system."@en .
+
+ a owl:NamedIndividual,
+ ns4:SafetyRiskAssessmentType ;
+ rdfs:label "serious" ;
+ rdfs:comment "The highest level of risk posed by an AI system."@en .
+
+ns4:autonomyType a owl:ObjectProperty ;
+ rdfs:comment """Indicates whether the system can perform a decision or action without human
+involvement or guidance."""@en ;
+ rdfs:range ns1:PresenceType .
+
+ns4:domain a owl:DatatypeProperty ;
+ rdfs:comment "Captures the domain in which the AI package can be used."@en ;
+ rdfs:range xsd:string .
+
+ns4:energyConsumption a owl:ObjectProperty ;
+ rdfs:comment "Indicates the amount of energy consumption incurred by an AI model."@en ;
+ rdfs:range ns4:EnergyConsumption .
+
+ns4:energyQuantity a owl:DatatypeProperty ;
+ rdfs:comment "Represents the energy quantity."@en ;
+ rdfs:range xsd:decimal .
+
+ns4:energyUnit a owl:ObjectProperty ;
+ rdfs:comment "Specifies the unit in which energy is measured."@en ;
+ rdfs:range ns4:EnergyUnitType .
+
+ns4:finetuningEnergyConsumption a owl:ObjectProperty ;
+ rdfs:comment """Specifies the amount of energy consumed when finetuning the AI model that is
+being used in the AI system."""@en ;
+ rdfs:range ns4:EnergyConsumptionDescription .
+
+ns4:hyperparameter a owl:ObjectProperty ;
+ rdfs:comment """Records a hyperparameter used to build the AI model contained in the AI
+package."""@en ;
+ rdfs:range ns1:DictionaryEntry .
+
+ns4:inferenceEnergyConsumption a owl:ObjectProperty ;
+ rdfs:comment """Specifies the amount of energy consumed during inference time by an AI model
+that is being used in the AI system."""@en ;
+ rdfs:range ns4:EnergyConsumptionDescription .
+
+ns4:informationAboutApplication a owl:DatatypeProperty ;
+ rdfs:comment """Provides relevant information about the AI software, not including the model
+description."""@en ;
+ rdfs:range xsd:string .
+
+ns4:informationAboutTraining a owl:DatatypeProperty ;
+ rdfs:comment "Describes relevant information about different steps of the training process."@en ;
+ rdfs:range xsd:string .
+
+ns4:limitation a owl:DatatypeProperty ;
+ rdfs:comment "Captures a limitation of the AI software."@en ;
+ rdfs:range xsd:string .
+
+ns4:metric a owl:ObjectProperty ;
+ rdfs:comment "Records the measurement of prediction quality of the AI model."@en ;
+ rdfs:range ns1:DictionaryEntry .
+
+ns4:metricDecisionThreshold a owl:ObjectProperty ;
+ rdfs:comment """Captures the threshold that was used for computation of a metric described in
+the metric field."""@en ;
+ rdfs:range ns1:DictionaryEntry .
+
+ns4:modelDataPreprocessing a owl:DatatypeProperty ;
+ rdfs:comment """Describes all the preprocessing steps applied to the training data before the
+model training."""@en ;
+ rdfs:range xsd:string .
+
+ns4:modelExplainability a owl:DatatypeProperty ;
+ rdfs:comment "Describes methods that can be used to explain the results from the AI model."@en ;
+ rdfs:range xsd:string .
+
+ns4:safetyRiskAssessment a owl:ObjectProperty ;
+ rdfs:comment "Records the results of general safety risk assessment of the AI system."@en ;
+ rdfs:range ns4:SafetyRiskAssessmentType .
+
+ns4:standardCompliance a owl:DatatypeProperty ;
+ rdfs:comment "Captures a standard that is being complied with."@en ;
+ rdfs:range xsd:string .
+
+ns4:trainingEnergyConsumption a owl:ObjectProperty ;
+ rdfs:comment """Specifies the amount of energy consumed when training the AI model that is
+being used in the AI system."""@en ;
+ rdfs:range ns4:EnergyConsumptionDescription .
+
+ns4:typeOfModel a owl:DatatypeProperty ;
+ rdfs:comment "Records the type of the model used in the AI software."@en ;
+ rdfs:range xsd:string .
+
+ns4:useSensitivePersonalInformation a owl:ObjectProperty ;
+ rdfs:comment """Records if sensitive personal information is used during model training or
+could be used during the inference."""@en ;
+ rdfs:range ns1:PresenceType .
+
+ a owl:Class,
+ sh:NodeShape ;
+ rdfs:comment "Class that describes a build instance of software/artifacts."@en ;
+ rdfs:subClassOf ns1:Element ;
+ sh:nodeKind sh:IRI ;
+ sh:property [ sh:datatype xsd:anyURI ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:nodeKind sh:Literal ;
+ sh:path ],
+ [ sh:datatype xsd:dateTimeStamp ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:Literal ;
+ sh:path ;
+ sh:pattern "^\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\dZ$" ],
+ [ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:Literal ;
+ sh:path ],
+ [ sh:class ns1:Hash ;
+ sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:path ],
+ [ sh:datatype xsd:dateTimeStamp ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:Literal ;
+ sh:path ;
+ sh:pattern "^\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\dZ$" ],
+ [ sh:datatype xsd:anyURI ;
+ sh:nodeKind sh:Literal ;
+ sh:path ],
+ [ sh:class ns1:DictionaryEntry ;
+ sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:path ],
+ [ sh:datatype xsd:string ;
+ sh:nodeKind sh:Literal ;
+ sh:path ],
+ [ sh:class ns1:DictionaryEntry ;
+ sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:path ] .
+
+ a owl:DatatypeProperty ;
+ rdfs:comment "Property that describes the time at which a build stops."@en ;
+ rdfs:range xsd:dateTimeStamp .
+
+ a owl:DatatypeProperty ;
+ rdfs:comment """A buildId is a locally unique identifier used by a builder to identify a unique
+instance of a build produced by it."""@en ;
+ rdfs:range xsd:string .
+
+ a owl:DatatypeProperty ;
+ rdfs:comment "Property describing the start time of a build."@en ;
+ rdfs:range xsd:dateTimeStamp .
+
+ a owl:DatatypeProperty ;
+ rdfs:comment """A buildType is a hint that is used to indicate the toolchain, platform, or
+infrastructure that the build was invoked on."""@en ;
+ rdfs:range xsd:anyURI .
+
+ a owl:ObjectProperty ;
+ rdfs:comment """Property that describes the digest of the build configuration file used to
+invoke a build."""@en ;
+ rdfs:range ns1:Hash .
+
+ a owl:DatatypeProperty ;
+ rdfs:comment "Property describes the invocation entrypoint of a build."@en ;
+ rdfs:range xsd:string .
+
+ a owl:DatatypeProperty ;
+ rdfs:comment "Property that describes the URI of the build configuration source file."@en ;
+ rdfs:range xsd:anyURI .
+
+ a owl:ObjectProperty ;
+ rdfs:comment "Property describing the session in which a build is invoked."@en ;
+ rdfs:range ns1:DictionaryEntry .
+
+ a owl:ObjectProperty ;
+ rdfs:comment "Property describing a parameter used in an instance of a build."@en ;
+ rdfs:range ns1:DictionaryEntry .
+
+ns1:Annotation a owl:Class,
+ sh:NodeShape ;
+ rdfs:comment "An assertion made in relation to one or more elements."@en ;
+ rdfs:subClassOf ns1:Element ;
+ sh:nodeKind sh:IRI ;
+ sh:property [ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:Literal ;
+ sh:path ns1:contentType ;
+ sh:pattern "^[^\\/]+\\/[^\\/]+$" ],
+ [ sh:datatype xsd:string ;
+ sh:maxCount 1 ;
+ sh:nodeKind sh:Literal ;
+ sh:path ns1:statement ],
+ [ sh:class ns1:Element ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:nodeKind sh:IRI ;
+ sh:path ns1:subject ],
+ [ sh:class ns1:AnnotationType ;
+ sh:in ( ) ;
+ sh:maxCount 1 ;
+ sh:minCount 1 ;
+ sh:nodeKind sh:IRI ;
+ sh:path ns1:annotationType ] .
+
+ a owl:NamedIndividual,
+ ns1:AnnotationType ;
+ rdfs:label "other" ;
+ rdfs:comment "Used to store extra information about an Element which is not part of a review (e.g. extra information provided during the creation of the Element)."@en .
+
+ a owl:NamedIndividual,
+ ns1:AnnotationType ;
+ rdfs:label "review" ;
+ rdfs:comment "Used when someone reviews the Element."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "cpe22" ;
+ rdfs:comment "[Common Platform Enumeration Specification 2.2](https://cpe.mitre.org/files/cpe-specification_2.2.pdf)"@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "cpe23" ;
+ rdfs:comment "[Common Platform Enumeration: Naming Specification Version 2.3](https://csrc.nist.gov/publications/detail/nistir/7695/final)"@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "cve" ;
+ rdfs:comment "Common Vulnerabilities and Exposures identifiers, an identifier for a specific software flaw defined within the official CVE Dictionary and that conforms to the [CVE specification](https://csrc.nist.gov/glossary/term/cve_id)."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "email" ;
+ rdfs:comment "Email address, as defined in [RFC 3696](https://datatracker.ietf.org/doc/rfc3986/) Section 3."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "gitoid" ;
+ rdfs:comment "[Gitoid](https://www.iana.org/assignments/uri-schemes/prov/gitoid), stands for [Git Object ID](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects). A gitoid of type blob is a unique hash of a binary artifact. A gitoid may represent either an [Artifact Identifier](https://github.com/omnibor/spec/blob/eb1ee5c961c16215eb8709b2975d193a2007a35d/spec/SPEC.md#artifact-identifier-types) for the software artifact or an [Input Manifest Identifier](https://github.com/omnibor/spec/blob/eb1ee5c961c16215eb8709b2975d193a2007a35d/spec/SPEC.md#input-manifest-identifier) for the software artifact's associated [Artifact Input Manifest](https://github.com/omnibor/spec/blob/eb1ee5c961c16215eb8709b2975d193a2007a35d/spec/SPEC.md#artifact-input-manifest); this ambiguity exists because the Artifact Input Manifest is itself an artifact, and the gitoid of that artifact is its valid identifier. Gitoids calculated on software artifacts (Snippet, File, or Package Elements) should be recorded in the SPDX 3.0 SoftwareArtifact's contentIdentifier property. Gitoids calculated on the Artifact Input Manifest (Input Manifest Identifier) should be recorded in the SPDX 3.0 Element's externalIdentifier property. See [OmniBOR Specification](https://github.com/omnibor/spec/), a minimalistic specification for describing software [Artifact Dependency Graphs](https://github.com/omnibor/spec/blob/eb1ee5c961c16215eb8709b2975d193a2007a35d/spec/SPEC.md#artifact-dependency-graph-adg)."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "other" ;
+ rdfs:comment "Used when the type does not match any of the other options."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "packageUrl" ;
+ rdfs:comment "Package URL, as defined in the corresponding [Annex](../../../annexes/pkg-url-specification.md) of this specification."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "securityOther" ;
+ rdfs:comment "Used when there is a security related identifier of unspecified type."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "swhid" ;
+ rdfs:comment "SoftWare Hash IDentifier, a persistent intrinsic identifier for digital artifacts, such as files, trees (also known as directories or folders), commits, and other objects typically found in version control systems. The format of the identifiers is defined in the [SWHID specification](https://www.swhid.org/specification/v1.1/4.Syntax) (ISO/IEC DIS 18670). They typically look like `swh:1:cnt:94a9ed024d3859793618152ea559a168bbcbb5e2`."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "swid" ;
+ rdfs:comment "Concise Software Identification (CoSWID) tag, as defined in [RFC 9393](https://datatracker.ietf.org/doc/rfc9393/) Section 2.3."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalIdentifierType ;
+ rdfs:label "urlScheme" ;
+ rdfs:comment "[Uniform Resource Identifier (URI) Schemes](https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml). The scheme used in order to locate a resource."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "altDownloadLocation" ;
+ rdfs:comment "A reference to an alternative download location."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "altWebPage" ;
+ rdfs:comment "A reference to an alternative web page."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "binaryArtifact" ;
+ rdfs:comment "A reference to binary artifacts related to a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "bower" ;
+ rdfs:comment "A reference to a Bower package. The package locator format, looks like `package#version`, is defined in the \"install\" section of [Bower API documentation](https://bower.io/docs/api/#install)."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "buildMeta" ;
+ rdfs:comment "A reference build metadata related to a published package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "buildSystem" ;
+ rdfs:comment "A reference build system used to create or publish the package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "certificationReport" ;
+ rdfs:comment "A reference to a certification report for a package from an accredited/independent body."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "chat" ;
+ rdfs:comment "A reference to the instant messaging system used by the maintainer for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "componentAnalysisReport" ;
+ rdfs:comment "A reference to a Software Composition Analysis (SCA) report."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "cwe" ;
+ rdfs:comment "[Common Weakness Enumeration](https://csrc.nist.gov/glossary/term/common_weakness_enumeration). A reference to a source of software flaw defined within the official [CWE List](https://cwe.mitre.org/data/) that conforms to the [CWE specification](https://cwe.mitre.org/)."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "documentation" ;
+ rdfs:comment "A reference to the documentation for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "dynamicAnalysisReport" ;
+ rdfs:comment "A reference to a dynamic analysis report for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "eolNotice" ;
+ rdfs:comment "A reference to the End Of Sale (EOS) and/or End Of Life (EOL) information related to a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "exportControlAssessment" ;
+ rdfs:comment "A reference to a export control assessment for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "funding" ;
+ rdfs:comment "A reference to funding information related to a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "issueTracker" ;
+ rdfs:comment "A reference to the issue tracker for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "license" ;
+ rdfs:comment "A reference to additional license information related to an artifact."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "mailingList" ;
+ rdfs:comment "A reference to the mailing list used by the maintainer for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "mavenCentral" ;
+ rdfs:comment "A reference to a Maven repository artifact. The artifact locator format is defined in the [Maven documentation](https://maven.apache.org/guides/mini/guide-naming-conventions.html) and looks like `groupId:artifactId[:version]`."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "metrics" ;
+ rdfs:comment "A reference to metrics related to package such as OpenSSF scorecards."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "npm" ;
+ rdfs:comment "A reference to an npm package. The package locator format is defined in the [npm documentation](https://docs.npmjs.com/cli/v10/configuring-npm/package-json) and looks like `package@version`."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "nuget" ;
+ rdfs:comment "A reference to a NuGet package. The package locator format is defined in the [NuGet documentation](https://docs.nuget.org) and looks like `package/version`."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "other" ;
+ rdfs:comment "Used when the type does not match any of the other options."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "privacyAssessment" ;
+ rdfs:comment "A reference to a privacy assessment for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "productMetadata" ;
+ rdfs:comment "A reference to additional product metadata such as reference within organization's product catalog."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "purchaseOrder" ;
+ rdfs:comment "A reference to a purchase order for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "qualityAssessmentReport" ;
+ rdfs:comment "A reference to a quality assessment for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "releaseHistory" ;
+ rdfs:comment "A reference to a published list of releases for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "releaseNotes" ;
+ rdfs:comment "A reference to the release notes for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "riskAssessment" ;
+ rdfs:comment "A reference to a risk assessment for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "runtimeAnalysisReport" ;
+ rdfs:comment "A reference to a runtime analysis report for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "secureSoftwareAttestation" ;
+ rdfs:comment "A reference to information assuring that the software is developed using security practices as defined by [NIST SP 800-218 Secure Software Development Framework (SSDF) Version 1.1](https://csrc.nist.gov/pubs/sp/800/218/final) or [CISA Secure Software Development Attestation Form](https://www.cisa.gov/resources-tools/resources/secure-software-development-attestation-form)."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "securityAdversaryModel" ;
+ rdfs:comment "A reference to the security adversary model for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "securityAdvisory" ;
+ rdfs:comment "A reference to a published security advisory (where advisory as defined per [ISO 29147:2018](https://www.iso.org/standard/72311.html)) that may affect one or more elements, e.g., vendor advisories or specific NVD entries."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "securityFix" ;
+ rdfs:comment "A reference to the patch or source code that fixes a vulnerability."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "securityOther" ;
+ rdfs:comment "A reference to related security information of unspecified type."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "securityPenTestReport" ;
+ rdfs:comment "A reference to a [penetration test](https://en.wikipedia.org/wiki/Penetration_test) report for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "securityPolicy" ;
+ rdfs:comment "A reference to instructions for reporting newly discovered security vulnerabilities for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "securityThreatModel" ;
+ rdfs:comment "A reference the [security threat model](https://en.wikipedia.org/wiki/Threat_model) for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "socialMedia" ;
+ rdfs:comment "A reference to a social media channel for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "sourceArtifact" ;
+ rdfs:comment "A reference to an artifact containing the sources for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "staticAnalysisReport" ;
+ rdfs:comment "A reference to a static analysis report for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "support" ;
+ rdfs:comment "A reference to the software support channel or other support information for a package."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "vcs" ;
+ rdfs:comment "A reference to a version control system related to a software artifact."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "vulnerabilityDisclosureReport" ;
+ rdfs:comment "A reference to a Vulnerability Disclosure Report (VDR) which provides the software supplier's analysis and findings describing the impact (or lack of impact) that reported vulnerabilities have on packages or products in the supplier's SBOM as defined in [NIST SP 800-161 Cybersecurity Supply Chain Risk Management Practices for Systems and Organizations](https://csrc.nist.gov/pubs/sp/800/161/r1/final)."@en .
+
+ a owl:NamedIndividual,
+ ns1:ExternalRefType ;
+ rdfs:label "vulnerabilityExploitabilityAssessment" ;
+ rdfs:comment "A reference to a Vulnerability Exploitability eXchange (VEX) statement which provides information on whether a product is impacted by a specific vulnerability in an included package and, if affected, whether there are actions recommended to remediate. See also [NTIA VEX one-page summary](https://ntia.gov/files/ntia/publications/vex_one-page_summary.pdf)."@en .
+
+ a owl:NamedIndividual,
+ ns1:LifecycleScopeType ;
+ rdfs:label "build" ;
+ rdfs:comment "A relationship has specific context implications during an element's build phase, during development."@en .
+
+