Part of the work related to the Haystack Type System WG551 is defining the rules for generating an RDF export of the Haystack definitions (defs). I recently presented on this at Haystack Connect 2019, and afterwards had several conversations with people interested in this work. So I'm starting a separate working group dedicated just to this sub-task of WG551.
Please join if you are interested. We are very close to being done, but I wanted to make sure community members who were interested had a chance to participate. I am hoping to have a group meeting next week to discuss the current state of the export and hopefully we will be ready to bring it to review with WG551. I will send out a meeting notification to members of this group by the end of the week. Thanks!
James JegesMon 22 Jul 2019
Hello,
I was having a look at the example TTL Defs file: and RDF Export proposal:
According to my current understanding, I may have found some issues with the usage of the OWL schema. Otherwise, if my understanding is incorrect, I’d be happy to hear why!
Misuse usage of OWL Properties
In the W3 OWL reference, it defines an object Property as a link between 2 Individuals:
However, in the current proposal, under the “Marker Tags” section, it states:
marker tag defs become instances of an owl:Class.” Under the “Value tags” section: A value tag def is any tag def that is not a subtype of marker. If the tag def is a subtype of ref or is a choice, then declare the def to be an instance of owl:ObjectProperty. All other value tags are declared to be an instance of owl:DatatypeProperty
…
If the tag def is a ref or choice, then specify the rdfs:range to the value of the of tag on the def.
The problem with these definitions is the requirement for value tag defs (owl:ObjectProperty or owl:DatatypeProperty) to be declared directly on marker tag defs (owl:Class).
This conflicts with the OWL2 specification, as it states that datatype or object properties relate individuals to data or other individuals.
Here is an excerpt from defs.ttl, defining the airHandlingEquip def, with multiple object properties being assigned directly inside the owl:class
phIoT:airHandlingEquip a owl:Class ;
...
phIoT:ductDeck phIoT:ductDeckType ;
...
Here we can see the phIoT:ductDeck is an ObjectProperty, as is required by the current RDF export proposal.
phIoT:ductDeck a owl:ObjectProperty ;
...
rdfs:range phIoT:ductDeckType ;
...
Implications
When using a reasoner, unintended axioms are inferred which may not be semantically correct.
Using the example above:
phIot:ductDeck is an owl:objectProperty
Owl:ObjectProperties relate individuals to other individuals
Therefore, phIoT:airHandlingEquip and phIoT:ductDeckType are Individuals.
Furthermore,
<phIoT:ductDeck><rdfs:range><phIoT:ductDeckType>
phIot:ductDeck subjects are instances of phIoT:ductDeckType (as defined by rdfs:range)
This means phIoT:ductDeckType, declared as an owl:class, is an individual of itself
Indeed, we can see this is true by running the following SPARQL query:
select ?b where {phIoT:ductDeckType rdf:type ?b}
RESULTS
b
-----
...
phIoT:ductDeckType
...
Because Object properties are being misused throughout the haystack OWL ontology, we can actually retrieve a list of all marker defs being their own individuals with the following query:
The above examples are not an exhaustive list of all ObjectProperty misuse, there are many more instances of marker tag defs being instances of themselves.
Based on the specification above, I think the inference of these individuals, may be an unintended side-effect of the usage of owl:ObjectProperty and owl:DatatypeProperty.
One solution may be to declare are value tag defs as owl:AnnotationProperty, which does not imply the objects and subjects of these types of predicates to be individuals. However, this may require some testing...
Matthew GianniniTue 23 Jul 2019
James - thanks for you post; I'm going to need some time to digest it. I am not an OWL expert, so I rely heavily on the expertise of the members of this group. If anyone else on the group has some insight into James' comments, please do comment.
We are due for another working group meeting. I'll look at the calendar and try to get an invite out soon. This would be something good to discuss in one of our meetings too.
Matthew Giannini Mon 3 Jun 2019
Part of the work related to the Haystack Type System WG551 is defining the rules for generating an RDF export of the Haystack definitions (defs). I recently presented on this at Haystack Connect 2019, and afterwards had several conversations with people interested in this work. So I'm starting a separate working group dedicated just to this sub-task of WG551.
Please join if you are interested. We are very close to being done, but I wanted to make sure community members who were interested had a chance to participate. I am hoping to have a group meeting next week to discuss the current state of the export and hopefully we will be ready to bring it to review with WG551. I will send out a meeting notification to members of this group by the end of the week. Thanks!
James Jeges Mon 22 Jul 2019
Hello,
I was having a look at the example TTL Defs file: and RDF Export proposal:
https://project-haystack.dev/download/defs.ttl
https://project-haystack.dev/doc/docHaystack/Rdf
According to my current understanding, I may have found some issues with the usage of the OWL schema. Otherwise, if my understanding is incorrect, I’d be happy to hear why!
Misuse usage of OWL Properties
In the W3 OWL reference, it defines an object Property as a link between 2 Individuals:
https://www.w3.org/TR/owl2-syntax/#Object_Properties
Datatype properties as linking an Individual with a data value:
https://www.w3.org/TR/owl2-syntax/#Data_Properties
However, in the current proposal, under the “Marker Tags” section, it states:
The problem with these definitions is the requirement for value tag defs (
owl:ObjectProperty
orowl:DatatypeProperty
) to be declared directly on marker tag defs (owl:Class
).This conflicts with the OWL2 specification, as it states that datatype or object properties relate individuals to data or other individuals.
Here is an excerpt from defs.ttl, defining the airHandlingEquip def, with multiple object properties being assigned directly inside the
owl:class
Here we can see the phIoT:ductDeck is an ObjectProperty, as is required by the current RDF export proposal.
Implications
When using a reasoner, unintended axioms are inferred which may not be semantically correct.
Using the example above:
phIot:ductDeck
is anowl:objectProperty
Owl:ObjectProperties
relate individuals to other individuals<phIoT:airHandlingEquip>
<phIot:ductDeck>
<phIoT:ductDeckType>
Therefore,
phIoT:airHandlingEquip
andphIoT:ductDeckType
are Individuals.Furthermore,
<phIoT:ductDeck>
<rdfs:range>
<phIoT:ductDeckType>
phIot:ductDeck
subjects are instances ofphIoT:ductDeckType
(as defined byrdfs:range
)This means
phIoT:ductDeckType
, declared as anowl:class
, is an individual of itselfIndeed, we can see this is true by running the following SPARQL query:
Because Object properties are being misused throughout the haystack OWL ontology, we can actually retrieve a list of all marker defs being their own individuals with the following query:
The above examples are not an exhaustive list of all ObjectProperty misuse, there are many more instances of marker tag defs being instances of themselves.
Summary
The OWL2 syntax defines an individual to,
https://www.w3.org/TR/owl2-syntax/#Individuals
Based on the specification above, I think the inference of these individuals, may be an unintended side-effect of the usage of
owl:ObjectProperty
andowl:DatatypeProperty
.One solution may be to declare are value tag defs as
owl:AnnotationProperty
, which does not imply the objects and subjects of these types of predicates to be individuals. However, this may require some testing...Matthew Giannini Tue 23 Jul 2019
James - thanks for you post; I'm going to need some time to digest it. I am not an OWL expert, so I rely heavily on the expertise of the members of this group. If anyone else on the group has some insight into James' comments, please do comment.
We are due for another working group meeting. I'll look at the calendar and try to get an invite out soon. This would be something good to discuss in one of our meetings too.
Brian Frank Wed 28 Apr 2021
Review via the docHaystack::Rdf chapter