- From: Graham Klyne <gk@ninebynine.org>
- Date: Wed, 23 Apr 2003 21:19:13 +0100
- To: Alberto Reggiori <alberto@asemantics.com>, "'www-rdf-rules@w3.org'" <www-rdf-rules@w3.org>
FWIW, I found optional sections in queries to be useful, and included them
in my implementation. (As for syntax, I have little to offer as I use an
RDF encoding of the query.)
#g
--
At 17:41 23/04/2003 +0200, Alberto Reggiori wrote:
>I forward this message to the list because it is quite relevant to the
>ongoing work about RDF Query interoperability
>
>I invite people here to comment/discuss on it perhaps splitting up the
>replies into different threads
>
>cheers
>
>Alberto
>
>Begin forwarded message:
>
>>From: Alberto Reggiori <alberto@asemantics.com>
>>Date: Sun Apr 20, 2003 11:13:41 PM Europe/Rome
>>To: danbri@w3.org, Andy Seaborne <Andy_Seaborne@hplb.hpl.hp.com>
>>Cc: Alberto Reggiori <alberto@asemantics.com>, Libby Miller
>><libby.miller@bristol.ac.uk>, staff@asemantics.com
>>Subject: optionals, provenance and transformation into RDF queries
>>
>>
>>hi there!
>>
>>I have been reading through your IRC/chump [1] emailed to www-archive
>>[2] - my strong feeling is that sooner or later we will need to add
>>support at the SquishQL/RDQL syntax level for optional matching
>>triples (or bindings). In addition, while developing some RDF apps I
>>also found out the importance and usefulness to SELECT triples using
>>one more dimension/component (s,p,o + c) aka kind of
>>provenance/source/context/scope/quads information (whatever that is
>>called or means in RDF :)
>>
>>I would like to discuss the possibility to come up with a common
>>(JDBC/ODBC/DBI friendly :) syntax how to express such extensions in
>>our SQL-ish query languages - I am also wondering about the use of
>>some kind of CONSTRUCT clause ala SeRQL [3] to "transform" or format
>>the actual bound vars. IMO this could also help the integration of RDF
>>query languages with XML semi-structured ones [4] and developers would
>>love that :)
>>
>>here, I will just quickly summarize some aspects related to this
>>extensions (perhaps need to put them on the RDFQR Wiki page [5] later)
>>
>>optional matches
>>------------------------
>>- as soon as you start writing real-world RDF applications you need
>>those, otherwise you have to go back to API and "build the query by
>>hand"; because RDF data nature is generally irregular, incomplete,
>>perhaps expressed using different data granularity, deeply nested
>>- DQL supports it and perhaps others (???)
>>- RDF is flexible and tolerant and an RDF query language must be so too
>>- implementation problems?
>>- possible syntax
>>
>>---> Andy's idea about "locating data" and "extracting data" - is it
>>about splitting up the RDQL/SquishQL statement SELECT and WHERE parts
>>in two?
>>---> use some special char on SELECTed vars to say they are "optional"
>>(question mark at the end is not a good choice for JDBC/ODBC
>>compatibility)
>>---> use square brackets (we are thinking about supporting this syntax
>>perhaps flagging the SELECTed vars as optional too)
>> WHERE
>> (?x,<some:mandatoryProp>,?y),
>> [ (?x, <some:optionalProp>, ?z)]
>>
>>---> use full-blown SQL style syntax (really too verbose to me)
>> WHERE
>> ( (?x,<some:mandatoryProp>,?y) ) OR
>> ( (?x,<some:mandatoryProp>,?y),
>> (?x, <some:optionalProp>, ?z) )
>>
>>provenance information
>>--------------------------------
>>- RDF sources once parsed and stored into an RDF database are flatten
>>down and at the query time you very often need to filter them based on
>> the "context" where they have been asserted - i.e. source URL or some
>>other RDF resource which could be further described. This information
>>can not be generally represented with triples, perhaps with
>>reification, but I do not understand it much :-)
>>- N3 formulae are something similar
>>- Quads [6] use that extra component for that IMU
>>- possible syntax
>>
>>---> Allow one more component on the triple-pattern ala Quads (we
>>already support such a syntax in our implementation of RDQL)
>>
>> WHERE
>> (?x, <some:prop>,?y, ?context),
>> (?context, <rdf:type>,
>><some:MeaningfulContext>)
>>
>>---> Allow N3 style curly brackets (ugly) - or is there any better
>>syntax?
>>
>> WHERE ( { (?x, <some:prop>,?y, ?context) } <rdf:type>,
>><some:MeaningfulContext> )
>>
>>---> Use some other special CONTEXT clause
>>
>>results constructors
>>--------------------------
>>- most applications need to use RDF just to "grep" the Web to some
>>kind of XML-ish syntax - RDBMS DBI/JDBC/ODBC are also fine. But having
>>an XML result allows to play a lot more with it (e.g. XSLT) and
>>pipe/chain things better; and developers would feel more familiar.
>>- Andy RDF Query result set could also benefit from this
>>- soon people will start to nest SquisQL/RDQL statements i.e. RDF --->
>>RDF transformation
>>- XQuery supports it already
>>- SeRQL uses it
>>- possible syntax
>>
>>---> ala XQuery using CONSTRUCT or TRANFORM clause
>>
>> SELECT
>> ?x,?y
>> WHERE
>> (?res, <some:px>, ?x),
>> (?res, <some:py>, ?y)
>> CONSTRUCT
>> <rs:ResultSet>
>> <rs:resultVariable>x</rs:resultVariable>
>> <rs:resultVariable>y</rs:resultVariable>
>> <rs:size
>>rdf:datatype='http://www.w3.org/2000/10/XMLSchema#integer'>1</rs:size>
>> <rs:solution>
>> <rs:ResultSolution>
>> <rs:binding rdf:parseType='Resource'>
>> <rs:variable>x</rs:variable>
>> <rs:value
>>rdf:datatype='{$x/rdf:datatype}'>$x</rs:value>
>> </rs:binding>
>> <rs:binding rdf:parseType='Resource'>
>> <rs:variable>y</rs:variable>
>> <rs:value rdf:resource='$y'/>
>> </rs:binding>
>> </rs:ResultSolution>
>> </rs:solution>
>> <rs:ResultSet>
>> USING
>> some FOR <http://somevoc.org/mine/>,
>> rs FOR <http://jena.hpl.hp.com/2003/03/result-set#>
>>
>>---> ala SeRQL (see spec)
>>---> any better syntax?
>>
>>IMO this TRANSFORM thingie would be extremely useful, especially to
>>dynamically generate XML Web content out of an RDF database - it would
>>also open the doors to all the others XML tools already deployed.
>>
>>Just give some thoughts to all this - in the meantime I will set up
>>some use cases for this onto the RDF Query and Rules survey page [7]
>>to see if some developer will pick it up
>>
>>cheers
>>
>>Alberto
>>
>>[1]
>>http://rdfig.xmlhack.com/2003/04/20/2003-04-20.html#1050846336.312674
>>[2] http://lists.w3.org/Archives/Public/www-archive/2003Apr/0052.html
>>[3] http://lists.w3.org/Archives/Public/www-rdf-rules/2003Apr/0013.html
>>[4] http://www.w3.org/TR/xquery/
>>[5] http://esw.w3.org/topic/RDFQueryTestcasesRequirements
>>[6] http://robustai.net/sailor/grammar/Quads.html
>>[7]
>>http://rdfstore.sourceforge.net/2002/06/24/rdf-query/query-use- cases.html
>
>-------------------
>Graham Klyne
><GK@NineByNine.org>
>PGP: 0FAA 69FF C083 000B A2E9 A131 01B9 1C7A DBCA CB5E
Received on Thursday, 24 April 2003 03:33:48 UTC