W3C home > Mailing lists > Public > public-rdf-dawg-comments@w3.org > November 2005

Re: CONSTRUCT: allow *?

From: Richard Newman <r.newman@reading.ac.uk>
Date: Wed, 16 Nov 2005 17:30:18 -0800
Message-Id: <51A6B5DD-D028-4995-9DD2-4AFDCBAE8761@reading.ac.uk>
Cc: public-rdf-dawg-comments@w3.org
To: Leo Sauermann <leo@gnowsis.com>

I hit this in twinql -- you want to run a query, and return all of  
the triples that you used to build the bindings.

I termed this 'faux-construct', though I didn't layer the syntax on  
top ('*'). Essentially, the engine takes the query graph pattern and  
uses it again for the construction pattern, pushing the results back  
in to recreate the triples. The amount of effort for implementors is  
essentially nil -- I got faux-construct working before CONSTRUCT itself.

It's quite useful for interchange, and makes a certain amount of  
theoretical sense -- faux-construct returns the minimal graph  
required for the given query to produce the intermediate bindings  
(i.e., if you ran it as a SELECT, what's the smallest graph that  
would return those results).

-R

On 16 Nov 2005, at 12:17, Leo Sauermann wrote:

>
> Hi,
>
> I am just in the process of writing many describe queries, where I
> basically want to select certain subgraphs of the graph,
> but do not necessarily construct something new.
>
> example:
> PREFIX rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
> PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
> PREFIX org:     <http://km.dfki.de/model/org#>
> PREFIX retrieve: <http://www.gnowsis.org/ont/gnoretrieve#>
> CONSTRUCT   {
> <http://dfki.rdf.util.rdf2java/default#id_20050108_235544_41f227>
> org:containsMember ?m. ?m rdfs:label ?labelm. ?m rdf:type ?typem.
> }
> WHERE  {
> <http://dfki.rdf.util.rdf2java/default#id_20050108_235544_41f227>
> org:containsMember ?m. ?m rdfs:label ?labelm. ?m rdf:type ?typem.
> }
>
> so what I do, Is that I basically include all triples that were needed
> to evaluate the binding.
> In Jena, there used to be a method to get all the triples that were  
> used
> to determine a RDQL query, perhaps this would also work:
> PREFIX rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
> CONSTRUCT    *   WHERE      {
> <http://dfki.rdf.util.rdf2java/default#id_20050108_235544_41f227>
> org:containsMember ?m. ?m rdfs:label ?labelm. ?m rdf:type ?typem.
> }
>
> In the current spec, this is intended for SELECT:
> |'SELECT' 'DISTINCT'? ( Var
> <http://www.w3.org/TR/rdf-sparql-query/#rVar>+ | '*' )|
>
> but not for describe.
>
> Additionally, to construct more, it may be nice to have:
> PREFIX rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
> CONSTRUCT    *, {?m blah:blub 'Hello World' }
> WHERE      {
> <http://dfki.rdf.util.rdf2java/default#id_20050108_235544_41f227>
> org:containsMember ?m. ?m rdfs:label ?labelm. ?m rdf:type ?typem.
> }
>
> did anybody else stumble accross these implementation problem yet?
>
> cheers
> Leo
>
>
Received on Thursday, 17 November 2005 01:30:30 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:14:49 GMT