- From: Holger Knublauch <holger@topquadrant.com>
- Date: Fri, 11 Mar 2016 15:18:46 +1000
- To: public-data-shapes-wg@w3.org
Yes, we did not really investigate meta-shapes yet, and what the patterns of invalid shapes graphs are. This should be future work... Holger On 11/03/2016 15:16, Peter F. Patel-Schneider wrote: > There isn't anything that currently says that the object of a sh:property > triple can't be a sh:InversePropertyConstraint, i.e., this is a valid shapes > graph currently. It thus appears that this example would pass all inspections > and then work incorrectly. > > As you say, making this syntactically illegal will solve this particular > problem. I do wonder if there are any other cases like this. I just happened > to notice this because of what you said about different code being needed for > the different cases. > > peter > > > On 03/10/2016 08:32 PM, Holger Knublauch wrote: >> That would be a modeling error, i.e. an invalid shapes graph. The rules state >> what the sh:defaultValueType is for sh:property and sh:inverseProperty. >> However, the "range" of sh:property is limited to sh:PropertyConstraint only, >> so it cannot have an sh:InversePropertyConstraint as values. If someone >> creates such a situation then it would evaluate both. This case can easily be >> checked using SHACL constraints at "compile time", reporting an error in the >> shapes graph. We could also make sh:PropertyConstraint and >> sh:InversePropertyConstraint disjoint... >> >> Holger >> >> >> On 11/03/2016 14:22, Peter F. Patel-Schneider wrote: >>> Oops, I messed up the example. Sorry for the confusion. >>> >>> Here is what I meant >>> >>> ex:s a sh:Shape ; >>> sh:property _:c ; >>> sh:property [ sh:predicate ex:q ; >>> sh:valueShape [ sh:inverseProperty _:c ] ] . >>> >>> _:c [ sh:predicate ex:p ; >>> sh:minCount 5 ] . >>> >>> peter >>> >>> >>> >>> On 03/10/2016 08:12 PM, Holger Knublauch wrote: >>>> On 11/03/2016 13:38, Peter F. Patel-Schneider wrote: >>>>> _:c will be both a sh:PropertyConstraint and sh:InversePropertyConstraint. >>>>> Which SPARQL query will it pick? Both? In this case things might work out, >>>> Yes both. I am glad we agree. >>> We don't agree, even here. Doing both works only because _:c was used in the >>> same place. >>> >>>>> but what happens if the incoming links are from different places, as in >>>>> >>>>> ex:s a sh:Shape ; >>>>> sh:property _:c ; >>>>> sh:property [ sh:predicate ex:q ; >>>>> sh:valueShape [ sh:property _:c ] ] . >>>>> >>>>> _:c [ sh:predicate ex:p ; >>>>> sh:minCount 5 ] . >>>> I see no problem there. In both cases it's a sh:PropertyConstraint based on >>>> the sh:defaultValueType of sh:property. They are not executed at the same >>>> time, and on different focus nodes. >>>> >>>> Does this answer your ticket? >>>> >>>> Holger >>>> >>>> >>>>> peter >>>>> >>>>> >>>>> >>>>> On 03/10/2016 04:43 PM, Holger Knublauch wrote: >>>>>> In the current draft this is handled by sh:defaultValueType: >>>>>> >>>>>> ex:s a sh:Shape ; >>>>>> sh:property _:c ; >>>>>> sh:inverseProperty _:c . >>>>>> _:c [ sh:predicate ex:p ; >>>>>> sh:minCount 5 ] . >>>>>> >>>>>> >>>>>> The engine will "add" two type triples: >>>>>> >>>>>> _:c a sh:PropertyConstraint . >>>>>> _:c a sh:InversePropertyConstraint . >>>>>> >>>>>> The engine can then pick the correct validator (SPARQL query) for each >>>>>> rdf:type of that constraint. >>>>>> >>>>>> Holger >>>>>> >>>>>> >>>>>> On 11/03/2016 7:15, RDF Data Shapes Working Group Issue Tracker wrote: >>>>>>> shapes-ISSUE-134 (knowing inverse): does SHACL syntax distinguish inverse >>>>>>> property constraints [SHACL Spec] >>>>>>> >>>>>>> http://www.w3.org/2014/data-shapes/track/issues/134 >>>>>>> >>>>>>> Raised by: Peter Patel-Schneider >>>>>>> On product: SHACL Spec >>>>>>> >>>>>>>> From >>>>>>> https://lists.w3.org/Archives/Public/public-data-shapes-wg/2016Mar/0106.html >>>>>>> >>>>>>> >>>>>>> Some constraint types require different SPARQL queries (or JavaScript or >>>>>>> whatever) depending on the direction of a property (or even worse, for an >>>>>>> arbitrary path). For example sh:minCount needs to count subjects versus >>>>>>> objects. >>>>>>> >>>>>>> Is it possible to determine whether a sh:minCount constraint is an inverse >>>>>>> or not? Consider >>>>>>> >>>>>>> ex:s a sh:Shape ; >>>>>>> sh:property _:c ; >>>>>>> sh:inverseProperty _:c . >>>>>>> _:c [ sh:predicate ex:p ; >>>>>>> sh:minCount 5 ] . >>>>>>> >>>>>>> >>>>>>> >>
Received on Friday, 11 March 2016 05:19:22 UTC