- From: Dimitris Kontokostas <kontokostas@informatik.uni-leipzig.de>
- Date: Wed, 15 Jun 2016 08:34:04 +0300
- To: Holger Knublauch <holger@topquadrant.com>
- Cc: public-data-shapes-wg <public-data-shapes-wg@w3.org>
- Message-ID: <CA+u4+a0CJZiU4h9HWME1DwfUFeVVgdhc0ufHZt5LvBwatM8daA@mail.gmail.com>
On Wed, Jun 15, 2016 at 1:57 AM, Holger Knublauch <holger@topquadrant.com>
wrote:
> I am not keen on macros - people should still be able to understand what's
> happening, and have valid SPARQL queries in front of them. However, since
> the introduction of path constraints we are already in the code injection
> business anyway, so we could just as well do it right.
>
> The boilerplate solution is basically a generalization of the templates
> used for ASK queries. We all share the goal of reusing code. At the same
> time, I am against limiting what people can express because the framework
> would only support certain patterns. For example there are cases where
> queries need to iterate over the same value set twice (comparing values),
> or to do existential checks instead of allValues iteration, see sh:hasValue.
>
> With all this said, here is what I believe may work well. I have not tried
> this out yet, so I may be missing something.
>
> As placeholder for the path, let's use a special variable $path that can
> only be used as predicate of triple patterns. Depending on the context, the
> engine would replace those triple patterns with suitable code. For node
> constraints, this path is interpreted as "the empty path starting at the
> focus node, i.e. the focus node itself".
>
> The standard placeholder line would be
>
>     $this $path ?value .
>
> which for example would be replaced with
>
>     $this ex:parent ?value .   (property)
>     ?value ex:parent $this .   (inv property)
>     $this ex:parent/ex:parent ?value   . (path)
>     BIND ($this AS ?value) .     (node constraint)
>
What would be fine for me is
    $this ex:parent ?value .   (property)
    $this ^ex:parent ?value .   (inv property)
    $this ex:parent/ex:parent ?value   . (path)
which could be an extension of pre-binding (and possibly rename pre-binding
to something more fitting)
Maybe this should be accompanied with related syntax changes as well
    BIND ($this AS ?value) .     (node constraint)
this get's too complicated imho
Dimitris
-- 
Dimitris Kontokostas
Department of Computer Science, University of Leipzig & DBpedia Association
Projects: http://dbpedia.org, http://rdfunit.aksw.org,
http://aligned-project.eu
Homepage: http://aksw.org/DimitrisKontokostas
Research Group: AKSW/KILT http://aksw.org/Groups/KILT
Received on Wednesday, 15 June 2016 05:34:59 UTC