- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Tue, 21 Dec 2010 12:39:33 +0000
- To: Steve Harris <steve.harris@garlik.com>
- CC: Axel Polleres <axel.polleres@deri.org>, SPARQL Working Group <public-rdf-dawg@w3.org>
>>
>> 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.
Yes.
> 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.
Isn't transitive closure "+"
?C rdfs:subClassOf+ ?SC .
> 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 :)
?s rdfs:subClassOf* ?o will have ?s = ?o, not the cross product of the
subjects and objects.
{ ?s ?p ?o } could have more cardinality.
:x :p1 :y .
:x :p2 :y .
:x :p3 :y .
:x :p4 :y .
{ ?s rdfs:subClassOf* ?o } => cardinality 2
?s=:x, ?o=:x
?s=:y, ?o=:y
and
{?s ?p ?o } is 4 rows.
It can be odd that "?x :p* ?o" does not depend on :p but it's similar to
string regex:
"xyz" is matched by "a*"
Given
:x :p* ?x => ?x = :p
then
?y :p* ?x => ?x = ?y = nodes set of subjects and objects is the point we
get to.
Andy
>
> - 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
>
Received on Tuesday, 21 December 2010 12:40:13 UTC