Using XQuery RDF Libraries


Squish

SELECT ?museum ?artist ?artifact
WHERE (?artist c:creates ?artifact)
      (?museum c:exhibits ?artifact)
      

Syntactic Web Paper (modernized)

declare namespace rdf = "rdf.tagsalad.org";

for $artist in rdf:instance-of-class(rdf:predicate-domain("c:creates"))
let $artifact := rdf:join-on-property($artist, "c:creates"),
    $museum := rdf:join-on-property($artifact, "c:exhibited")
return 
    <result>
       <artist>{ $artist }</artist>
       <artifact>{ $artifact }</artifact>
       <museum>{ $museum }</museum>
    </result>
      

This can be improved...

declare namespace rdf = "rdf.tagsalad.org"; for $artist in rdf:subject("c:creates", ()), $artifact := rdf:object($artist, "c:creates"), $museum := rdf:subject("c:exhibits", $artifact) return <result> <artist>{ $artist }</artist> <artifact>{ $artifact }</artifact> <museum>{ $museum }</museum> </result>