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>

Chaos
  • 101
  • 3
  • 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. – UninformedUser Jul 20 '23 at 11:34
  • Thanks @UninformedUser, that definitely did it! I can now avoid circular delegation. – Chaos Jul 20 '23 at 13:01

0 Answers0