0

Consider the following chain of reasoning:

 1. Simba is a lion.
 2. All lions have at least one parent.
 3. So, Simba has at least one parent.

This is a perfectly valid inference, and it can be represented in predicate logic as follows:

s = Simba
L = is a lion
P = is the parent of

1. Ls
2. (Ax)(Lx --> (Ey)(Pxy))
3. (Ey)(Pys)

In a natural deduction system, one would be permitted to infer 3 (via a series of inference rules) from the conjunction of 1 and 2.

I would expect to see a similar inference generated with OWL reasoners. Suppose we had the following triples (using Turtle syntax):

:Simba rdf:type :Lion .

:Lion a owl:Class ;
   rdfs:subClassOf
   [
      a owl:Restriction ;
      owl:onProperty :isParentOf ;
      owl:someValuesFrom owl:Thing ;
   ] ;
   .

These statements are translations of 1 and 2 into OWL. However, it appears that OWL reasoners do not infer something like 3. Is this right? Or can something like this inference be made using OWL reasoners?

da71
  • 25
  • 3
  • 2
    what do you mean by "see" it? In Protege? When computing all inferences in Java? Anyways, OWL reasoners won't return those class expressions for an obvious reason: there are infinite such expressions. What you can always do is to ask a reasoner whether such an inference holds - and then of course the reasoner will return `yes` – UninformedUser Aug 03 '22 at 04:54
  • 1
    As @UniformedUser said, the inferences that follow from an ontology is infinite. See [this paper](http://ceur-ws.org/Vol-745/paper_22.pdf) for example. You can potentially address this by introducing a named class, i.e.: `OffSpringHasParent \equiv \exists isParentOf owl:Thing` – Henriette Harmse Aug 03 '22 at 10:13
  • @Henriette Harmse - Your comment is helpful. I suppose what I was looking for was a reasoner to generate the following, which is more or less a translation of (3) in my original post: `:Simba rdf:type _:bnode ; _:bnode a owl:Restriction ; _:bnode owl:someValuesFrom owl:Thing; _:bnode owl:onProperty :isParentOf` This set of triples is indeed inferred in the triplestore I am using, which is what I was looking for. And as you say, I could name the class to simplify things. Thanks! – da71 Aug 04 '22 at 14:18

0 Answers0