Working Group

#709 Haystack RDF Export - Working Group

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:

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
  • <phIoT:airHandlingEquip> <phIot:ductDeck> <phIoT:ductDeckType>

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:

select distinct ?b where {?b rdf:type ?b}

RESULTS

b
----
...
phIoT:meterScopeType
phIoT:ahuZoneDeliveryType
phIoT:coolingProcessType
phScience:air
phIoT:ductConfigType
phIoT:ductDeckType
phIoT:heatingProcessType
phScience:quantity
phIoT:pipeSectionType
phIoT:chillerMechanismType
phIoT:pointFunctionType
phScience:phenomenon
phIoT:vavModulationType
phIoT:ductSectionType
phIoT:vavAirCircuitType
...

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,

...represent actual objects from the domain.”

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 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 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

Login or Signup to reply.