Skip to content

Conversation

@ajnelson-nist
Copy link

I've been inspecting owl:Axiom for potential use in a project. (What I'm trying to do is out of scope of this patch series, but the short of it is, I'm trying to almost but not entirely assert a triple, while remaining in OWL 2 DL. Subclassing owl:Axiom looks like it might work, but reviewing the OWL 2 specs has left me spinning. It's not obvious to me whether this is a good idea or an explicit faux pas. If you know one way or the other offhand, I'd appreciate hearing it! Meanwhile, relevant to the RDFLib OWL-RL project, I may have found a bug.)

I am having difficulty finding in the OWL specifications how owl:Axiom is supposed to behave when its described triple is not already asserted(/present) in the graph. Would any of this repository's maintainers be able to help answer some of these questions, encoded in a unit test added in this patch series? (Patch 1 has a commit message providing further detail.)

I appreciate some of this may be out of scope of RL-specific functionality, but it appears from Issues 33 and 35 that this repository is looking to slightly expand its scope beyond RL. Please let me know if there is a better venue for this line of questions.

This patch adds one test to give the RDFLib OWL-RL project's expected
behavior.

From the OWL 2 Mapping to RDF document (cited in test), it appears that
Table 7, row 7, implies a class declaration axiom should be induced by a
populated `owl:Axiom` ("populated" meaning annotated{Source,Property,
Target} are all given), whether or not the referenced axiom is directly
asserted (written as a triple).  The left column pattern contrasts with
Table 17, row 1, which specifies the triple must already be asserted (to
receive further annotations).

This patch runs up against an undefined behavior in the OWL-RDF mapping:
What should be deduced from an IRI that is an `owl:Axiom`? A subtle
detail throughout the document is `owl:Axiom` only appears in references
to blank nodes (`_:x`, rather than `*:x`).

A follow-on patch may be necessary to clarify decisions (and assertions)
around what may or may not be undefined behavior.

Signed-off-by: Alex Nelson <[email protected]>
@ajnelson-nist
Copy link
Author

Also, I'm aware this first version of the unit test fails. I currently think it hits unimplemented functionality in closure construction.

@aucampia
Copy link
Member

Not an OWL expert, but I always have good luck asking at https://gitter.im/linkeddata/chat - so maybe that helps.

@ajnelson-nist
Copy link
Author

I've been informed that if an RDF pattern does not match the OWL 2 Web Ontology Language Mapping to RDF Graphs, the RDF document is in OWL FULL. I would like to stay within OWL 2 DL semantics, so I will modify this PR to not step into that extended usage of owl:Axiom.

A follow-on patch may be necessary to clarify closure behaviors.

Signed-off-by: Alex Nelson <[email protected]>
@ajnelson-nist
Copy link
Author

I've updated the test, but I'm not sure if I placed one of the failure detectors right. An IRI-identified owl:Axiom bumps the graph into OWL 2 FULL. Should the closure raise an Exception on finding it is in OWL 2 FULL?

@aucampia
Copy link
Member

I will try find some time this week to review this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants