Comment about implementation of property paths

Hi,

I just wanted to make an additional comment on this topic before the
LC deadline. The comment is about current implementations of property
paths.

There are some property path queries that are currently being
evaluated differently by some engines, in particular, KGRAM, Sesame
(2.6.3) and ARQ give different results for the following example.

data:

@prefix : <http://example.org/> .
:A0 :P :A1, :A2 .
:A1 :P :A0, :A2 .
:A2 :P :A0, :A1 .

query:

prefix : <http://example.org/>
select * where { :A0 ((:P)*)* ?X }

The following are the results in each case:

KGRAM:
-------
| X   |
=======
| :A0 |
| :A1 |
| :A2 |
| :A2 |
| :A1 |
-------

Sesame:
-------
| X   |
=======
| :A0 |
| :A0 |
| :A1 |
| :A2 |
-------

ARQ:
-------
| X   |
=======
| :A0 |
| :A2 |
| :A1 |
| :A1 |
| :A1 |
| :A2 |
| :A2 |
| :A1 |
| :A2 |
| :A2 |
| :A2 |
| :A1 |
| :A1 |
-------


Please notice that my point is not to report a bug in the particular
implementations, but to make an observation on the current semantics.
>From my point of view the above example shows that the semantics for
the star (*) operator in property paths is somehow unnatural as at
least three mayor engines that support SPARQL 1.1 evaluate expressions
in different ways. Beside, as far as I know, there is no test case
covering this example.

Cheers,
- jorge

Received on Sunday, 5 February 2012 21:12:15 UTC