W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > April to June 2004

RE: Requirement: queries written as RDF

From: Rob Shearer <Rob.Shearer@networkinference.com>
Date: Mon, 5 Apr 2004 09:55:17 -0700
Message-ID: <CFE388CECDDB1E43AB1F60136BEB4973028067@rome.ad.networkinference.com>
To: "Patrick Stickler" <patrick.stickler@nokia.com>
Cc: <public-rdf-dawg@w3.org>

> 1. Our target is an RDF graph. The formal semantics for such a target
> graph is provided by the RDF MT. If our queries are also expressed
> as RDF graphs, we are able to (a) maximize the intersection of target
> and query semantics, and (b) get a head start in defining the complete
> semantics of a query.

I'm afraid I don't buy this one at all. RDF is nothing but a syntax for
encoding graphs. Believe it or not, just about *every* language encodes
graphs; they are simply less expressive than RDF, so they can't encode
every possible graph.
Unless we're talking about entailment, I don't think we're really
suggesting that *any* RDF graph is a query, we we're limiting the
possible graphs anyway.

If you're looking for semantics on RDF graphs, I'm afraid you've got to
turn to RDFS and OWL. 
Queries encoded as OWL really do have useful semantics: e.g. an instance
representing a variable which is a member of some class and inherits
from some existential to a nominal of another instance, etc., would then
have well-defined meaning in terms of what could fill that variable.

No semantics for RDF means no advantage to using it.

> 2. Clients submitting DAWG queries and processing DAWG results will
> (almost without exception) be capable of constructing, manipulating,
> and utilizing RDF graphs -- typically via a software API. By encoding
> queries (and results, BTW) as RDF, this results in reduced 
> implementational
> requirements for DAWG clients, as well as a more consistent solution
> environment (i.e. fewer parsers, serializations, APIs, logical 
> operations,
> etc.).

Whoah- giant giant leap here.
Just how do you see people getting this abstract "RDF processing"
functionality?
I was rather thinking that engineers armed with an RDF query language
wouldn't need any other RDF components to get at the data they want. If
you've got to be able to process RDF in order to use our language to
query RDF, then what's the bloody point?

> 3. By expressing queries in RDF, the queries themselves fall within
> the target scope of DAWG, which (barring careless syndication of
> query graphs with other graphs) will offer alot of utility.

This is the only argument I really understand, and I understand interest
in storing queries in RDF, which is the cool new way to store anything.
However,

1) This concern is academic; in real life users are unlikely to care
very deeply. Witness the world's complete lack of interest in XQueryX.

2) We still don't have any use cases at all demonstrating this user
need, and I think we should at the very least come up with a couple of
use cases for any requirement.

> 4. Clients which wish to submit a query to a DAWG repository which is
> known to not support any inference could employ a reasoner to 
> pre-expand
> the query into a set of alternates and submit each to the repository,
> syndicating the results (or this could be provided by a specialized
> proxy-based query broker). Granted, one could do this if queries were
> expressed in other ways, but one would first have to map the query to
> RDF, reason about it, and then remap it back to the other form. Much
> better to use RDF from the start.

I have architected both inference engines and query brokers to perform
the kinds of transformations you describe, and I have never been at all
tempted to use RDF internally as an intermediary.
Any query broker is going to have to be able to process the query
language, that language is going to be a lot more specific than RDF, and
you're going to need more custom logic than generic RDF processing.
Using RDF as syntax just means that you've got to parse RDF instead of
parsing something else, and to be honest RDF is one of the most awkward
languages to parse at this point in history. (Okay, Perl, but you get
the idea...)

> 5. Since RDF already provides for arbitrary datatypes, that 
> requirement
> is automatically met by using RDF to express queries.

That's not an excuse for a new requirement; it's a solution for a
different requirement. Don't confuse the two.

> Some use cases (already submitted):
> 
> http://lists.w3.org/Archives/Public/public-rdf-dawg/2004JanMar
> /0056.html

The words "let us assume that the input query is expressed in RDF" don't
make this use case demonstrate the requirement. Again, query brokering
can be performed quite independently of RDF. I can meet this use case
without encoding queries as RDF.

> http://lists.w3.org/Archives/Public/public-rdf-dawg/2004JanMar
> /0073.html

Again, I don't see how this demonstrates any requirement for queries in
RDF. Someone wants to know about people between 16 and 18 years of age.
There are a ridiculous number of ways to meet this use case which don't
encode queries in RDF.

> http://lists.w3.org/Archives/Public/public-rdf-dawg/2004JanMar
> /0074.html

This use case certainly seems to dictate that queries are RDF, but
that's the premise of the use case. It's like writing a use case saying
"a user writes a query in natural language French and gets some answers"
and then saying "see? we need a natural language processor for French!"

I actually don't really consider this a use case at all; it's just a
little proto-requirement. There's never any mention of just what the
user is trying to do; just the presumption that the query language will
work in a particular way. We might as well have use cases along the
lines of "a user writes a query in natural language French and gets the
answers she wants".

A use case is a real problem a user has *now*, in the absence of a query
language, that a query language could help solve. No user is using an
RDF API to write a query in our language, because there is no language.
Received on Monday, 5 April 2004 12:56:32 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:19 GMT