RE: RDFQ - RDF Queries in RDF

Hi,

Here are some notes and ideas about using RDFS and its semantics as the
kernel of a query language. Intentionally, there is not much here on
precise syntax for the language. Must it be all RDF/XML? The basic idea
is that the kernel of the query must be an RDFS document, and that the
answers to that basic query must be determined by RDFS semantics (or
else, we don't work on top of RDFS...)

Elementary query
----------------

DATA:
- The RDF Web (i.e. the set U = {D_1, ..., D_N} of all RDFS documents
that can be found on the web)
- The query 
	- a RDFS document Q
	- A way to restrict U to one of its subsets (usefull for
efficiency
, thrust, ...)

RESULT: A stream of answers
An answer is:
	- A minimal subset A of the triples in the merge of U (or its
obtained restriction) that is semantically valid and such that Q is a
semantic consequence of A (in the sense of RDFS MT)
	- A way to check where do these triples in A come from (because
thrust can be an issue)
	- Since entailment can be seen as a matching[*], the mapping
from blanks in Q to terms of A (this is the proof of the entailment, and
the way to retrieve the result for an SQL-like query).
	
[*] More precisely a graph homomorphism, the minimal subset is the
homomorphic image, and the mapping the homomorphism itself.

Building more complex queries
-----------------------------

Some things that we could do:

FILTER THE STREAM OF ANSWERS
Data: the answers stream
By example by removing the answers where the image of a given blank in
the query does not satisfy a given predicate.
Result: a modified stream

REORDER THE STREAM?
In that case, should wait for its end...

FORMAT THE STREAM OF ANSWERS
	- Extract the set of RDFS graphs from the stream (now we can
compose queries)
	- Merge graphs
	- View the result as triples, graphs, tables,...

...

Other ideas are welcome... Where to put disjunction, negation in this
framework?
	

Example: Find the email address of "John Smith"
-----------------------------------------------

The query is:

_john foaf:name "John Smith".
_john foaf:mbox _johnmail.

The universe to explore is limited to the file where the user has its
addresses.

Hopefully the stream of answers returns a single answer[*]

_x345 foaf:name "John Smith" .
_x345 foaf:mbox john.smith@example.org .

[*] May be an interesting feature would be to declare that a single
answer (up to equivalence) is expected, otherwise a warning could be
given.

All triples come from the same source

_john is mapped to _x345 and _johnmail is mapped to
john.smith@example.org

We extract _x345 (i.e. the thing it is mappeded to), and obtain the
address.


I should write that properly, and look at more significant (difficult)
examples...



Jean-François Baget

INRIA Rhône-Alpes
jean-francois.baget@inrialpes.fr
Tel: 04 76 61 53 27

Received on Thursday, 8 April 2004 10:42:25 UTC