- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Tue, 22 Nov 2016 14:32:04 -0800
- To: Holger Knublauch <holger@topquadrant.com>, public-rdf-shapes@w3.org
I don't think that the new wording conforms to that used in SPARQL, so there
are still changes required here. Furthermore, the "Furthermore" sentence is
still in the document.
peter
On 11/21/2016 10:49 PM, Holger Knublauch wrote:
> Hi Peter,
>
> FYI this issue has been recorded in our tracker as ISSUE-208:
>
> https://www.w3.org/2014/data-shapes/track/issues/208
>
> I have gone through all examples and definitions based on SELECT queries that
> I could find, and all of them already project ?this out of the query, so I
> believe the rule that you suggest is OK to adopt. I have added corresponding
> statements to the spec:
>
> https://github.com/w3c/data-shapes/commit/673b364ab68c68299b0fc6e902b6907af21cf8f9
>
>
> Questions: does this mean that I can delete the sentence on Aggregates?
> Anything else needed to close this issue from your perspective?
>
> Thanks
> Holger
>
>
>
> On 24/09/2016 4:11, Peter F. Patel-Schneider wrote:
>> Here are the requirements for SELECT queries:
>>
>> "The SPARQL queries linked to a constraint via sh:select must be string
>> literals that can be parsed into legal SPARQL 1.1 queries of the query form
>> SELECT after they have been treated with the prefix handling rules outlined
>> later."
>>
>> "The value of sh:select must be a valid SPARQL query using the
>> aforementioned prefix handling rules. This type of validator can be used as
>> values of sh:shapeValidator or sh:propertyValidator."
>>
>> "Furthermore, any query that uses the variable this as part of the
>> Expression used in a SPARQL 1.1 Aggregate is invalid."
>> [This is buried quite deep in 6.4.1.]
>>
>> "The SHACL Full processor must produce a failure if the resulting SPARQL query
>> string cannot be parsed into a valid SPARQL 1.1 query."
>>
>> There is no requirement that $this is returned from the query. Instead why
>> not just require that $this is returned from the query (maybe also not using
>> AS)? This would mean that any GROUP BY has to include $this and then there
>> is no problem using $this in aggregates.
>>
>> Currently allowed but newly disallowed:
>>
>> SELECT DISTINCT ?lang
>> WHERE {
>> { FILTER ($uniqueLang) . }
>> $this $PATH ?value .
>> BIND (lang(?value) AS ?lang) .
>> FILTER (bound(?lang) && ?lang != "") .
>> FILTER EXISTS {
>> $this $PATH ?otherValue .
>> FILTER (?otherValue != ?value && ?lang = lang(?otherValue)) .
>> }
>> }
>>
>> Currently disallowed but newly allowed:
>>
>> SELECT $this
>> WHERE { OPTIONAL { $this $PATH ?value . } }
>> GROUP BY $this
>> HAVING (COUNT(?value) < $minCount) && (COUNT(?this)<2)
>>
>> Both are somewhat silly but it seems to me that the new rules are simpler
>> than the current ones.
>>
>> peter
>>
>>
>> On 09/22/2016 09:52 PM, Holger Knublauch wrote:
>>> (In order to prevent a deeply nested email thread that goes across multiple
>>> topics, I am splitting the remaining issues into individual emails).
>>>
>>> On 23/09/2016 11:36, Peter F. Patel-Schneider wrote:
>>>>> aggregation
>>>>>
>>>>> The prohibition "Furthermore, any query that uses the variable $this in an
>>>> aggregation is invalid." is vague. It appears to disallow the use of $this
>>>> in any part of the SPARQL 1.1 aggregation machinery, as the pointer in the
>>>> sentence is to Section 11 of the SPARQL specification. This would rule out
>>>> all of the examples of aggregation in the SHACL document.
>>>>> Comment (HK): I have tried to clarify that this is only about the use
>>>> of ?this in expressions. This is allowing its use in GROUP BY, in case you
>>>> were referring to this. Apart from that I don't see uses of ?this in
>>>> aggregations in the SHACL document.
>>>> https://github.com/w3c/data-shapes/commit/0c6939ba95ffd6c7fee2285a3638c144a97f8528
>>>>
>>>>
>>>>
>>>> GROUP BY is part of aggregation. There were four examples of GROUP BY ?this
>>>> which the mentioned wording appears to prohibit. The current wording is no
>>>> better. "[T]he expression used in an aggregation" is an incorrect
>>>> description as there can be multiple expressions in the aggregation portion
>>>> of a query. The argument to GROUP BY itself is just as much an expression
>>>> as the argument to HAVING.
>>>>
>>>> This situation is indicative of the sloppiness of the current specification.
>>>> SPARQL has a complicated grammar. The argument to GROUP BY is a sequence of
>>>> GroupCondition; the argument to HAVING is a sequence of HavingCondition.
>>>> Using general words, like "expression", to describe bits of the SPARQL
>>>> grammar is generally incorrect. Where specific bits of SPARQL are used in
>>>> the SHACL definition they need to be described as they are in the SPARQL
>>>> definition.
>>> I have clarified this by pointing at the specific Aggregate construct in the
>>> SPARQL syntax:
>>>
>>> https://github.com/w3c/data-shapes/commit/6501260d135dde1ff05b86b71b8c3835dab9dd03
>>>
>>>
>>>
>>> Holger
>>>
>>>
>
Received on Tuesday, 22 November 2016 22:32:39 UTC