0

I am currently using OWLAPI and the HermiT reasoner on a simple ontology O modelling delegation.

O represents the M.W.E. showing the issue I am facing and defines a single class Person, a single object property delegates(.,.) (whose domain and range are Person) and three individual of type Person (A, B and C). Finally, I stated delegates(A, B), delegates(B, C), delegates(C, A).

I am trying to enforce the existence of an irreflexive transitive object property to cause an inconsistency in the ontology when a direct or indirect circular delegation exists.

To the best of my knowledge, this type of property is unsupported since it is non-simple.

I tried to work around this issue defining a SWRL rule of the shape: Person(?p), delegates(?p, ?p) -> owl:Nothing(?p); however, HermiT DOES NOT identify any inconsistency, despite the fact that transitivity allows to infer that delegates(A, A).

I tried the Pellet reasoner and the ontology is correctly declared inconsistent (after that Protegè badly hangs and the UI becomes inconsistent as well), however in the non-MWE I have so many assertions that the Pellet reasoner is unable to process them in a practical time. This is why I am using HermiT, version 1.4.3.456. (I also tried the same inference under the latest version 1.4.5.519 with no inconsistency result.)

Any suggestion to cause the inconsistency would be appreciated.

Here is the xml code encoding O, I had to remove the ontology and prefix tags to avoid to trigger the spam filter.

 <Declaration>
 <Class IRI="#Person"/>
 </Declaration>
 <Declaration>
 <ObjectProperty IRI="#delegates"/>
 </Declaration>
 <Declaration>
 <NamedIndividual IRI="#A"/>
 </Declaration>
 <Declaration>
 <NamedIndividual IRI="#B"/>
 </Declaration>
 <Declaration>
 <NamedIndividual IRI="#C"/>
 </Declaration>
 <ClassAssertion>
 <Class IRI="#Person"/>
 <NamedIndividual IRI="#A"/>
 </ClassAssertion>
 <ClassAssertion>
 <Class IRI="#Person"/>
 <NamedIndividual IRI="#B"/>
 </ClassAssertion>
 <ClassAssertion>
 <Class IRI="#Person"/>
 <NamedIndividual IRI="#C"/>
 </ClassAssertion>
 <ObjectPropertyAssertion>
 <ObjectProperty IRI="#delegates"/>
 <NamedIndividual IRI="#A"/>
 <NamedIndividual IRI="#B"/>
 </ObjectPropertyAssertion>
 <ObjectPropertyAssertion>
 <ObjectProperty IRI="#delegates"/>
 <NamedIndividual IRI="#B"/>
 <NamedIndividual IRI="#C"/>
 </ObjectPropertyAssertion>
 <ObjectPropertyAssertion>
 <ObjectProperty IRI="#delegates"/>
 <NamedIndividual IRI="#C"/>
 <NamedIndividual IRI="#A"/>
 </ObjectPropertyAssertion>
 <TransitiveObjectProperty>
 <ObjectProperty IRI="#delegates"/>
 </TransitiveObjectProperty>
 <ObjectPropertyDomain>
 <ObjectProperty IRI="#delegates"/>
 <Class IRI="#Person"/>
 </ObjectPropertyDomain>
 <ObjectPropertyRange>
 <ObjectProperty IRI="#delegates"/>
 <Class IRI="#Person"/>
 </ObjectPropertyRange>
 <DLSafeRule>
 <Body>
 <ClassAtom>
 <Class IRI="#Person"/>
 <Variable IRI="urn:swrl:var#p"/>
 </ClassAtom>
 <ObjectPropertyAtom>
 <ObjectProperty IRI="#delegates"/>
 <Variable IRI="urn:swrl:var#p"/>
 <Variable IRI="urn:swrl:var#p"/>
 </ObjectPropertyAtom>
 </Body>
 <Head>
 <ClassAtom>
 <Class abbreviatedIRI="owl:Nothing"/>
 <Variable IRI="urn:swrl:var#p"/>
 </ClassAtom>
 </Head>
 </DLSafeRule>
asked Jul 20, 2023 at 9:25
2
  • 1
    HermiT inference with SWRL is incomplete for transitive properties. Workaround: you can switch your modelling, i.e. you use an SWRL rule for the transitivity and mark the property as irreflexive. Commented Jul 20, 2023 at 11:34
  • Thanks @UninformedUser, that definitely did it! I can now avoid circular delegation. Commented Jul 20, 2023 at 13:01

0

Know someone who can answer? Share a link to this question via email, Twitter, or Facebook.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.