I fear that the design is becoming over complex.

We used to have two kinds of repetitions:

+ *   without loop in the path (except first step of + ...)
{n,m} with loop in the path

Now we would have three kinds of repetitions:

+ *     without loop, without duplicate
{+} {*} without loop, with duplicate
{n,m}   with loop with duplicate

In addition, {} notation is (in general) used for set but {+} enables 
duplicates so it is misleading
In addition {n,m} and {+} do not behave the same with loops, so it is 
not uniform

(By the way, our experience in my team is that loops in {n,m} are not 
welcome because very often {1,n} is used to limit the length of paths 
wrt +, but unfortunately paths are then trapped into loops (use case 
with symmetric relation, e.g.  foaf:knows{1,5}))

Concerning distinct, I am able to prototype distinct as a global 
operator on path expression:
?x distinct(path) ?y

I would support this design.


Received on Wednesday, 14 March 2012 13:45:25 UTC