- From: Steve Harris <steve.harris@garlik.com>
- Date: Tue, 21 Dec 2010 12:18:17 +0000
- To: Andy Seaborne <andy.seaborne@epimorphics.com>
- Cc: Axel Polleres <axel.polleres@deri.org>, SPARQL Working Group <public-rdf-dawg@w3.org>
Quick summary, I think I get why this is defined this way now. I have some concerns, but don't have a better suggestion. Comments inline. On 2010-12-21, at 11:20, Andy Seaborne wrote: > > On 21/12/10 11:12, Steve Harris wrote: >> On 2010-12-20, at 17:23, Axel Polleres wrote: >> >>> Steve, >>> >>> I added a new use case pp16 along the lines you suggest, see details below. >>> >>> On 20 Dec 2010, at 16:46, Steve Harris wrote: >>> >>>> I think pp14 would be more enlightening if the pp14.ttl included a disconnected foaf:knows graph, and some triples using another predicate. Something like: >>>> >>>> @prefix :<http://example.org/> . >>>> @prefix foaf:<http://xmlns.com/foaf/0.1/> . >>>> >>>> :a foaf:knows :b . >>>> :b foaf:knows :c . >>>> :d foaf:knows :e . >>>> :f foaf:name "test" . >>>> :a foaf:homepage :h . >>>> >>>> Even after Axel's proposed changes I find the wording a bit impenetrable, though admittedly I haven't had time to study the algebra. >>>> >>>> Axel, can you tell mw what results you'd expect from pp14.rq with that data? >>>> >>> >>> your data returns, according to my understanding of the algebra: >>> >>> ------------------- >>> | X | Y | >>> =================== >>> | :a | :a | >>> | :a | :b | >>> | :a | :c | >>> | :b | :b | >>> | :b | :c | >>> | :c | :c | >>> | :d | :d | >>> | :d | :e | >>> | :e | :e | >>> | :f | :f | >>> | :h | :h | >>> | "test" | "test" | >>> ------------------- >> >> OK, thanks. Intuitively I find the :e/:e, :f, :h, and "test" results odd, but I've not given enough time to trying to understand the usecases. > > One example is: > > ?x rdf:type/rdfs:subClassOf* ?T I see, otherwise you'd have to write ?x (rdf:type|rdf:type/rdfs:subClassOf*) ?T, which looks a bit tautological. On the other hand, trying to find just the transitively closed subclass relationships with: ?C rdfs:subClassOf* ?SC . you will get many non-sensical results. I think you can write [] rdfs:subClassOf ?SC . ?C rdfs:subClassOf [] . ?C rdfs:subClassOf* ?SC . if you want just the transitively closed classes/superclasses, but that also looks odd. I'm also concerned that the relatively innocuous-looking expression like { ?s rdfs:subClassOf* ?o } will have a higher cardinality than { ?s ?p ?o }, but I guess users will learn not to do that after the first few hundred times they try it :) - Steve > which is > > ?x rdf:type ?Z > ?Z rdfs:subClassOf* ?T > > Under RDFS: > > <C> rdfs:subClassOf <C> > > If you are writing that over plain data, you need "a rdfs:subClassOf* a" (the {0} case) to get the subclass effect or a more complex query. > > Andy -- Steve Harris, CTO, Garlik Limited 1-3 Halford Road, Richmond, TW10 6AW, UK +44 20 8439 8203 http://www.garlik.com/ Registered in England and Wales 535 7233 VAT # 849 0517 11 Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10 9AD
Received on Tuesday, 21 December 2010 12:18:53 UTC