Re: Text about SPARQL-star built-in functions ready


> On 2021-03-03, at 10:21:22, Olaf Hartig <> wrote:
> James,
> On tisdag 2 mars 2021 kl. 21:09:13 CET James Anderson wrote:
>> good evening;
>>> On 2021-03-02, at 18:56:40, Olaf Hartig <> wrote:
>>> Hi all,
>>> I have implemented the proposal [1] to add the five new built-in functions
>>> to the spec. See the following PR
>>> For your convenience, here is the link to the preview:
>>> The changes are in Section 4.2 (SPARQL-star Grammar) and in the new
>>> Section 4.4 (Function Definitions).
>>> As agreed during our telco last Friday, I will leave this PR open for
>>> three days so that your can take a look at it and raise concerns (if any).
>>> Unless anyone brings forward reasons that this PR should not be merged,
>>> I will merge it on Friday afternoon (CET).
>> i raise the concern, that the approach needs to comprehend quads before it
>> will be usable.
> Not sure what exactly you mean by "quads." There is no definition of such a 
> notion (neither in the RDF and SPARQL specs, nor in any draft of the RDF-star 
> spec).
> Also, I don't see what "quads" have to do with the PR which focuses on the 
> five new built-in functions.
> Please clarify.

[that the count of requests to our service which specify application/n-quads as the content and/or accept media type outnumber by a factor of ten to one those which specify a triples variant notwithstanding, and despite that for well longer than recent memory, i have implemented nothing which concerned rdf statements for which the respective operands were typed as “triples", rather than “quads”, for the sake of discussion, this note will defer to the notion of “triples in graphs”.]

the concern is that the description of the operator should describe its application and results in adequate detail, that it not be necessary to comprehend its behaviour “by transitivity”.

for example, given a target dataset with some given number of graphs and an excerpt such as

select (count(distinct ?t1) as ?t1Count)
          (count(distinct ?t2) as ?t2Count)
          (count(distinct ?t3) as ?t3Count) 
          (count(distinct ?t4) as ?t4Count)
where {
  graph ?g {
    bind ( triple(_:id , dcam:memberOf, ?g) as ?t1)
    bind ( triple(:id , dcam:memberOf, ?g) as ?t2)
    bind ( triple(_:id , dcam:memberOf, <>) as ?t3)
    bind ( triple(:id , dcam:memberOf, <>) as ?t4)

this reader would expect to be able to rely on the immediate text to unambiguously answer questions on the order of
- is it permitted to apply that function in this manner?
- what values of the count variables result?
- were the select clause to be replaced with a construct clause which combined a graph with a triples template and targeted an initially empty dataset, how many triples would there be in the respective graphs if the construct clause specified a constant graph and how many if it specified the ?g variable?

best regards, from berlin,

Received on Thursday, 4 March 2021 07:33:14 UTC