- From: Sandro Hawke <sandro@w3.org>
- Date: Tue, 20 Jul 2010 21:49:16 -0400
- To: Chimezie Ogbuji <ogbujic@ccf.org>
- Cc: SPARQL Working Group <public-rdf-dawg@w3.org>
It sounds you and I are in agreement on this, except perhaps for my
wanting to allow the entailment regime to be specified down in the graph
pattern, after the GRAPH keyword. Honestly, I don't understand that
part of SPARQL very well, so let me ask instead: how could you query for
ONLY the RDFS-entailed triples of a graph <g1>?
Here's a rough stab at it:
SELECT ?s ?p ?o
WHERE {
GRAPH <g1> ENTAILS USING ent:RDFS { ?s ?p ?o }
MINUS
GRAPH <g1> { ?s ?p ?o }
}
Do you at least see what I'm getting at, and why I want the be able to
signal entailment inside the graph pattern, not just up at the top?
Also, I really don't see anything non-declarative about this kind of
structuring. The question raised by the "ENTAILS" line about whether a
particular graph entails (via some regime) a particular graph pattern --
isn't that a perfectly mathematical/logical/declarative question?
-- Sandro
On Tue, 2010-07-20 at 21:16 -0400, Chimezie Ogbuji wrote:
> Sandro, a few comments below (it seems like there are at least 3 threads in
> the issue we discussed in today's telecon - I'll try to tease them out).
>
> On 7/20/10 2:22 PM, "Sandro Hawke" <sandro@w3.org> wrote:
> > The basic problem I have is this: I think people will be very confused
> > if SPARQL end points start to quietly do inference.
>
> I can sympathize with this and (if I understand
>
> > This confusion will
> > result in software doing the wrong thing, with possibly serious results.
> > Some of the blame will, rightly, land on "SPARQL inference".
> > Alternatively, for fear of this, public end points will just not do
> > inference.
>
> I can completely sympathize with this concern and think Souri as well as
> others echo this concern as well. Hopefully, I think we are better informed
> about why this is important than we were when we chose not to support the
> ability for the user to specify the entailment regime in the query and if we
> are willing to revisit the conversation about LET after deciding it was out
> of scope (for instance), then we should consider the same with this issue if
> there is critical mass.
>
> At a minimum, a query should be able to specify (by entailment regime URI)
> the entailment regime to use. I can imagine scenarios where - despite the
> fact that the service indicates a particular regime for its data - the user
> might prefer a different regime for one reason or another. Since we support
> an order of precedence in determining which dataset is used for a query
> (either it is specified in the query, or in the protocol) I don't see why we
> can't do the same for the entailment regime to use in determining answers
> beyond simple graph matching via a simple extension to the syntax, some
> backward compatible pragmas, or some other light weight mechanism.
>
> > What we've got so far is the idea that folks should look at the service
> > description. I think this is probably too "quiet".
>
> Not just too quiet but it also (unnecessarily) handicaps how entailment is
> used in SPARQL.
>
> > ..snip ..
> > Listening to
> > folks in the meeting talk about it, I thought of this:
> >
> > SELECT * FROM NAMED <g1>
> > WHERE { GRAPH <g1> ENTAILS { ?x rdfs:subClassOf ?y } }
> >
> > Here, the system making the query is explicitly asking for inference, so
> > no harm can be done by the end-point suddenly turning on inference, as
> > long as it still allows querying of the pre-inference graph.
>
> So this is where I think your issues may be tangled up. If issue (1) is the
> need to indicate an entailment regime to use for answers to a query, then
> this example also includes an issue (2). I'm not sure what to call it, but
> it seems you are interested in explicitly relating the scoping graph (which
> exists in the dataset) with another graph that it entails (rather than
> simply indicating an appropriate entailment regime alone).
>
> This seems to be a procedural interpretation of entailment and entailment is
> a purely declarative thing - i.e., it says *what* should follow from what
> you have and some axioms, but not *how* it is calculated (and there are a
> number of ways it can be calculated).
>
> By requiring that entailment be 'written down' in this way it seems that you
> are assuming a particular reasoning strategy (forward-chaining) which is
> completely independent from the entailments.
>
> So, I agree that the query should be able to indicate an entailment regime,
> but I don't agree with the mechanism you suggest above, which seems to make
> assumptions about entailment that are counter-intuitive to their declarative
> nature. The query should instead be.
>
> SELECT * FROM NAMED <g1>
> USING <http://www.w3.org/ns/entailment/RDFS>
> WHERE { GRAPH <g1> { ?x rdfs:subClassOf ?y } }
>
> >..snip...
> > In this design, the kind of entailment would be specified in the SD.
>
> I think the query should be able to specify the kind of entailment (as well
> as the SD) and that should be all it needs to specify. So if you think of
> querying as the evaluation of a function, the entailment regime is just
> another parameter:
>
> queryEvalation(query, dataset = ..specified in SD.., entailmentRegime =
> ..specified in SD..)
>
> Where the default dataset and entailment regime are those specified in the
> SD if they aren't given in the arguments to the query.
>
> > It's tempting to also allow parameterization of the entailment regime,
> > perhaps like this:
> >
> > PREFIX ent <http://www.w3.org/ns/entailment/>
> > SELECT * FROM NAMED <g1>
> > WHERE { GRAPH <g1> ENTAILS BY ent:RDFS { ?x
> > rdfs:subClassOf ?y } }
>
> This is what I prefer, but with the difference I mentioned above.
>
> > I understand this parameterization is similar to the out-of-scope
> > "Parameterized Inference" feature [1], but perhaps if it's really as
> > simple as this, it's okay to do anyway.
>
> I think it is rather simple. We have every thing in place to simply take
> advantage of a straight forward in-query syntax to indicate the entailment
> regime.
>
> > Finally, I wanted to thank folks for reminding me of the incorrectness
> > of thinking of the entailments of a graph as another graph. Under
> > entailment regime E, graph G will entail graphs G0, G1, ... Gn, rather
> > than a single graph GE. In many simple cases, the merge of G0...Gn is
> > also entailed and can be used as the single graph-of-all-entailments,
>
> It still does seem that conceptually thinking of *having* a single graph of
> all entailments (a procedural interpretation of entailment) is a motivation
> underlying your suggestions.
>
> -- Chime
>
>
> ===================================
>
> P Please consider the environment before printing this e-mail
>
> Cleveland Clinic is ranked one of the top hospitals
> in America by U.S.News & World Report (2009).
> Visit us online at http://www.clevelandclinic.org for
> a complete listing of our services, staff and
> locations.
>
>
> Confidentiality Note: This message is intended for use
> only by the individual or entity to which it is addressed
> and may contain information that is privileged,
> confidential, and exempt from disclosure under applicable
> law. If the reader of this message is not the intended
> recipient or the employee or agent responsible for
> delivering the message to the intended recipient, you are
> hereby notified that any dissemination, distribution or
> copying of this communication is strictly prohibited. If
> you have received this communication in error, please
> contact the sender immediately and destroy the material in
> its entirety, whether electronic or hard copy. Thank you.
>
>
Received on Wednesday, 21 July 2010 01:49:26 UTC