- From: Steve Harris <S.W.Harris@ecs.soton.ac.uk>
- Date: Thu, 19 Aug 2004 09:22:05 +0100
- To: www-rdf-interest@w3.org
Hi Phil,
On Thu, Aug 19, 2004 at 07:45:56 +0100, phil@phildawes.net wrote:
> E.g. take the following query, which gets all http://example.com/foo's
> props and objects, and if the object is a resource also gets an
> rdfs:label for it:
>
> select ?obj, objlabel
> where (<http://example.com/foo> ?prop ?obj)
> OPTIONAL (?obj rdfs:label ?objlabel)
>
> I want to do subproperty inferencing on the optional pattern to return
> e.g. foaf:name labels (foaf:name is a subproperty of rdfs:label).
> As in the 3store paper[1], I am using the idiom:
>
> ?subj ?prop ?obj
> ->
> ?subj ?tmp ?obj
> ?tmp SUBPROPERTYOF ?prop
>
>
> But that yields:
>
> select ?obj, ?objlabel
> where (<http://example.com/foo> ?prop ?obj)
> OPTIONAL (?obj ?tmp ?objlabel)
> OPTIONAL (?tmp rdfs:subPropertyOf rdfs:label)
I think it actually becomes:
select ?obj, ?objlabel
where (<http://example.com/foo> ?prop ?obj)
OPTIONAL (?obj ?tmp ?objlabel)
(?tmp rdfs:subPropertyOf rdfs:label)
an optional subgraph, c.f. http://www.w3.org/2001/sw/DataAccess/tests/
but that still breaks the rule of having variables that can only be bound
in the optional part, but can, I think be expanded to something like:
[using SQL+RDF and a subset of 3stores schema]
SELECT t1.object, t2.object
FROM triples t1
LEFT JOIN triples t2 ON
(t2.subject = t1.object)
LEFT JOIN triples t3 ON
(t3.subject = t2.predicate AND
t3.predicate = <rdfs:subPropertyOf> AND
t3.object = <rdfs:label>)
WHERE t1.subject = <http://example.com/foo>
- Steve
Received on Thursday, 19 August 2004 08:22:08 UTC