# Re: Detecting cycles in OWL

• Date: Fri, 24 Apr 2020 09:01:11 -0500
```You probably find more about these matter than you care about here:
http://people.cs.ksu.edu/~hitzler/resources/publications/OWL-Rules-2011.pdf

But let me break down your example.

you want to say something like the following:

A(x) AND p1(x,y) AND C(y) AND p2(y,z) AND B(z) AND p4(w,z) AND D(w) AND
p3(x,w) --> E(x)

And essentially you want to know whether there is anything in the class E.

With the rolification technique in the above referenced paper, yo would
come up with the following to express the axiom:

A equiv exists R_A.Self
B equiv exist R_B.Self
C equiv exists R_C.Self
D equiv exists R_D.Self
R_A o p1 o R_C o p2 o R_B o p4- o R_D o p3- subPropertyOf R
exists R.Self subClassOf E

Now, these six axioms *syntactically* translated into first-order
predicate logic do the trick.

HOWEVER, you would use Self with a non-simple role, which is not allowed
under OWL DL.

So the short answer is: it doesn't look like it's possible.

The above paper discusses a construct called nominal schemas, which is
(very complex) syntactic sugar on top of OWL, an which allows you to
express the rule above, provided that the variable x can bind only to
individuals actually occurring in the knowledge base.

Best Regards,

Pascal.

--
Pascal Hitzler
Lloyd T. Smith Creativity in Engineering Chair
Director, Center for AI and Data Science
Kansas State University   http://www.pascal-hitzler.de
http://www.daselab.org    http://www.semantic-web-journal.net

On 4/24/2020 8:23 AM, Mikael Pesonen wrote:
>
> Hi,
>
> I would like to find out wheather data contains a cycle so that some
> individuals of two different classes are connected together with 2 or
> more property paths.
>
> So there are two paths in the data (--x--> denoting property):
>
> a:A --p1--> c:C --p2--> b:B
>
> a:A --p3--> d:D --p4--> b:B
>
> Is it possible to express in OWL  that some individual of type A is
> connected to some individual of type B through these two property paths
> (p1 o p2) and (p3 o p4)?
>
>
> Closest I've come up is this
>
> Class: CycleFromA
>      EquivalentTo: p1 o p2 SOME B AND p3 o p4 SOME :B
>
> but this doesn't force b to be same individual. And how this CycleFromA
> could be used for reasoning and finding out if such double connection
> exists?
>
> Thank you.
>
```

Received on Friday, 24 April 2020 14:01:52 UTC