- From: Axel Polleres <axel.polleres@deri.org>
- Date: Wed, 7 Oct 2009 23:54:36 +0100
- To: "Seaborne, Andy" <andy.seaborne@hp.com>
- Cc: Birte Glimm <birte.glimm@comlab.ox.ac.uk>, SPARQL Working Group <public-rdf-dawg@w3.org>
On 7 Oct 2009, at 13:46, Seaborne, Andy wrote:
>
>
>> -----Original Message-----
>> From: public-rdf-dawg-request@w3.org [mailto:public-rdf-dawg-
>> request@w3.org]
>> On Behalf Of Birte Glimm
>> Sent: 07 October 2009 12:53
>> To: SPARQL Working Group
>> Subject: [TF-ENT] Querying datasets with default plus named graphs
>>
>> Hi all,
>> I skimmed the minutes of yesterday's telecon and I updated the
>> entailment doc to include the newly generated issues. I would like to
>> start collecting opinions for the issue of querying data sets that
>> have more than the default graph and whether inferences work on all
>> graphs in the datasets or are local to their particular graph. Here
>> is
>> an example that Steve originally created:
>> We have a data set with the two named graphs http://example.org/a.rfd
>> and http://example.org/b.rdf (empty default graph).
>> http://example.org/a.rdf:
>> :p rdfs:domain :A .
>> http://example.org/b.rdf:
>> :x :p :y .
>
> Is anyone advocating this should be covered?
>
>>
>> The question is, what bindings ?g should take if we query:
>> SELECT ?g WHERE { GRAPH ?g { :x a ?type . } }
>>
>> If we assume that entailments always work over all graphs in the DS,
>> then ?type can be mapped to :A,
I can't see how that would be an entailment, as these graphs are
separate.
FWIW, as announced in the last TC, I added an issue (ISSUE-43) to our
tracker on that.
>> but this entailment depends on both
>> graphs. Taking any one out, means the entailment no longer holds, so
>> ?g must be both a.rdf and b.rdf and possibly the default graph since
>> there is no from clause in the query and we in fact query the default
>> graph. .
>>
>> Just to check that I get this right: If we take the same datat set
>> and
>> issue the query
>> SELECT ?o WHERE { :x :p ?o . }
>> I would get no answer under simple entailment because the default
>> graph is empty.
>
> Not quite - there is no dataset description so it will be whatever
> the processor provides as the dataset (i.e. it's set externally -
> common case).
I think Birte asks what should be the semantics, with that special
data set given.
>> We have a data set with the two named graphs http://example.org/a.rfd
>> and http://example.org/b.rdf (empty default graph).
>> http://example.org/a.rdf:
>> :p rdfs:domain :A .
>> http://example.org/b.rdf:
>> :x :p :y .
>
>> If I ask
>> SELECT ?o FROM NAMED <http://example.org/b.rdf> WHERE { :x :p ?o . }
>> I would get { (o, y) }, right?
>
> There is a dataset description, it does not mention the default
> graph, so it is empty. So { :x :p ?o . } is on the empty graph and
> does not match.
>
> { GRAPH <http://example.org/b.rdf> {:x :p ?o . } }
>
> returns { (?o, y) }
>
>> If I ask
>> SELECT ?o FROM <http://example.org/b.rdf> WHERE { :x :p ?o . }
>> I would get { (o, y) } again, but this time I implicitly created a
>> default graph that contains all triples from b.rdf, right?
>
> Yes - although I'd say 'explicit' because you used FROM.
>
>> I guess
>> this default graph would be temporary, right and if I query again
>> without the from clause, I would again get no results, right?
>>
>> Ok, assuming I understand that right, I would much prefer to keep
>> entailments local to the graph.
>
> +1
+1 to keep entailments local to the separate graphs in the DS
(<chairhatoff> although I personally consider it a drawback that you
can't refer to ontologies from named graphs)
>
> And I believe this follows from "12.6 Extending SPARQL Basic Graph
> Matching" which does not mention datasets.
>
> ----
>
> Mixed entailment regimes in one query do happen already. I don't
> see any sensible way to specify entailment across graphs and have a
> mix.
agreed. My question in one of the earlier mails was actually whether
there was any... I didn't see that either, that would be only possible
with extending the notion of dataset, and I didn't so far sense
support for this idea (would be a separate feature not on our list)....
>
> This is not to say that matching a BGP under entailment can't take
> into account information not in the graph (presumably, rules
> entailment do this anyway - the rules are not in the graph). We
> don't necessary need to make the T-Box visible do we?
... well, wouldn't the T-Box be a graph like any other? e.g. say <http://xmlns.com/foaf/spec/20071002.rdf
>
or, if not, what would be the machanism to refer to which ontologies/T-
Boxes are taken into account?
Could that be part of the service description? e.g. "I am a sparql
endpoint doing OWL entailment using the
Foaf ontology".
> Then "GRAPH <b.rdf> { :x a ?type . }" works if <b.rdf> is set up in
> some way (not part of the spec) to use the vocabulary in <a.rdf>.
> The fact the information used for matching <b.rdf> happens to also
> be accessible via <a.rdf> is neither here nor there.
>
If we'd leave that as part of SD, then it could go into the
extensibility of SD possibly.
Axel
>> I think this goes well with SPARQL 1.0
>> because it says in Sec 8.1
>> (http://www.w3.org/TR/rdf-sparql-query/#exampleDatasets) below
>> Example
>> 1: In this example, the default graph contains the names of the
>> publishers of two named graphs. The triples in the named graphs are
>> not visible in the default graph in this example.
>>
>> Let me also argue from an OWL viewpoint (because I am an OWL person):
>> I would see the IRIs in a FROM (NAMED) clause as ontology IRIs. An
>> ontology contains everything it needs and might use imports to
>> include
>> resources that it does not physically contain. I have to load those
>> imported rsources anyway as part of the graph. As I understand it, an
>> implementor can now choose to have several ontologies loaded more or
>> less permanently as (named) graphs/ontologies (which means one can do
>> all preprocessing to them, check them for consistency, and possibly
>> classify them (build the sub-/superclass hierarchy), so that most
>> queries can be answered quickly). If I decide to have the pizza
>> ontology (often used for Protege tutorials) and Snomded (large
>> medical
>> ontology) loaded as named graphs, then I do not want that pizzas have
>> any effect on my medical ontology and I do want entailments to be
>> local to the ontology. If users wants to merge two ontologies on the
>> fly for querying, they can ask
>> SELECT ?x FROM IRI_1, IRI_2 WHERE { some_BGP }
>> which would (according to Sec 8.2 of the SPARQL spec) result in the
>> query being valuated over a default graph that contains the RDF merge
>> of tuples from IRIR_1 and IRI_2.
>>
>> This would also allow for removing (named) graphs without having to
>> do
>> soething like belief revision to find out what inferences are no
>> longer valid after the delete or having to reload and redo all
>> infrences for the remaining graphs.
>>
>> What would that mean for Steve's example? It has an empty answer, but
>> be no longer have to assign a.rf, b.rdf, and the default graph all
>> atthe same time to ?g.
>>
>> If there are no major objections, I can go and add a section about
>> data sets to the entailment doc similar to Sec 8 in the SPARQL doc,
>> which outlines how one can query a merge of resources and that
>> normally entailments are local to the graph. If you have
>> objections, I
>> would be happy about suggestions for different ways of doing it.
>
> If it helps for clarity, then fine but it seems redundant to me once
> 12.6 is referenced.
>
> Andy
>
>>
>> Cheers,
>> Birte
--
Dr. Axel Polleres
Digital Enterprise Research Institute, National University of Ireland,
Galway
email: axel.polleres@deri.org url: http://www.polleres.net/
Received on Wednesday, 7 October 2009 22:55:13 UTC