w3c-lbd-cg / bot

Building Topology Ontology
https://w3id.org/bot
53 stars 15 forks source link

Change bot:hasSubElement to transitive and add property chain axiom #74

Closed GeorgFerdinandSchneider closed 2 years ago

GeorgFerdinandSchneider commented 4 years ago

As of https://github.com/w3c-lbd-cg/bot/issues/47

with a comment by @mathib (https://github.com/w3c-lbd-cg/bot/issues/47#issuecomment-621215340):

Just noticed that bot:hasSubElement is not yet defined as being transitive.

In addition, the following additional property chain axiom might be beneficial and correct on >bot:containsElement:

owl:propertyChainAxiom ( bot:containsElement bot:hasSubElement )

GeorgFerdinandSchneider commented 4 years ago

Needs to be checked whether this violates OWL DL as mentioned by @maximelefrancois86 https://github.com/w3c-lbd-cg/bot/issues/47#issuecomment-625315167

VladimirAlexiev commented 3 years ago

Is it correct to say that bot:hasSubElement is the transitive closure of bot:containsElement, which is its "step" property?

If so then the usual way is this rather than owl:propertyChainAxiom (eg see skos:broader and skos:broaderTransitive):

bot:containsElement rdfs:subPropertyOf bot:hasSubElement.
bot:hasSubElement owl:TransitiveProperty

However, you might also want to add this definition, because it can be implemented more efficiently, see why at http://rawgit2.com/VladimirAlexiev/my/master/pubs/extending-owl2/index.html#sec-3-1

bot:containsElement rdfs:subPropertyOf bot:hasSubElement.
bot:hasSubElement ptop:transitiveOver bot:containsElement.
mathib commented 3 years ago

bot:containsElement is used between a bot:Zone and a bot:Element (both are disjoint), while bot:hasSubElement is used between two instances of bot:Element. Therefore, bot:containsElement cannot be a subproperty of bot:hasSubElement.

Or with some example data:

# asserted ABox triples (added classes for readability)
:space1 a bot:Space ;
    bot:containsElement :column1 .
:column1 a bot:Element ;
    bot:hasSubElement :column1-capital .
:column1-capital a bot:Element ;
    bot:hasSubElement :column1-capital-acanthusLeaf3 .
:column1-capital-acanthusLeaf3 a bot:Element .
# should infer
:space1 bot:containsElement :column1-capital , :column1-capital-acanthusLeaf3 .
:column1 bot:hasSubElement :column1-capital-acanthusLeaf3 .

which requires two updates to BOT:

Both regular OWL statements can be complemented/replaced by the following statements using terminology from Ontotext's Proton ontology:

There might be other property chain axioms in BOT that might be complemented by similar statements using the Proton ontology. Personally, I would have some reservations against it, as it is more specific/rich compared to the standardized OWL terminology and requires at least a rule engine. Having both OWL and Proton statements might also confuse users. In other words, this might work out-of-the-box in Ontotext GraphDB but will need some tweeking before it works in, let's say, Fuseki.

Instead of merging these Proton statements in the main BOT ontology document with "regular OWL statements", is it an option to create and publish a separate but synchronized version of BOT (automatically generated) where such OWL statements are replaced by Proton terminology? Any preferences to retrieve this separate RDF document (adjusted content negotation, ref. from main ontology to separate RDF doc, etc.)?

P.S. Is there a Turtle or RDF/XML serialization available of Proton? I can only retrieve the HTML with embedded RDFa from http://www.ontotext.com/proton/protontop#

maximelefrancois86 commented 3 years ago

Hi,

When playing around with transitivity and property chain axioms, keep in mind to check that the ontology remains in OWL 2 DL.

VladimirAlexiev commented 3 years ago

@mathib see http://www.ontotext.com/proton/protontop.ttl or http://www.ontotext.com/proton/protontop.rdf. Conneg doesn't work though, I'll raise an issue.

Yes, I think that having a separate "module" that uses the ptop way is the best approach. Thanks!

mathib commented 3 years ago

During the W3C-LBD-CG call of the 23rd of March, the group decided the following:

add to v0.4.0: bot:hasSubElement a owl:TransitiveProperty . will not be added: bot:containsElement owl:propertyChainAxiom (bot:containsElement bot:hasSubElement)

@VladimirAlexiev : feel free to add a separate module using ptop in the new v0.4.0 branch.