#!/bin/env python print "==== Example 5 - RDQL query: find author" print "==== NB we get matching subgraph - includes our anwser" import joseki import sys from joseki import JosekiRequest from rdflib.URIRef import URIRef from rdflib.Namespace import Namespace # A better name for the "wildcard" in a triple match ANY = None # Declare constants: better to use namespaces DC = Namespace("http://purl.org/dc/elements/1.1/") dcTitle = DC['title'] # The target model URL # This is the Joseki online demo modelURL = "http://jena.hpl.hp.com:2020/books" if len(sys.argv) > 1: modelURL = sys.argv[1] print "Data source =", modelURL book1 = URIRef("http://example.org/book/book1") book2 = URIRef("http://example.org/book/book2") book3 = URIRef("http://example.org/book/book3") book4 = URIRef("http://example.org/book/book4") book5 = URIRef("http://example.org/book/book5") # ---------------------------------------- # NB escaping of quote in literal value. rdql="SELECT ?z WHERE "+\ "(?x dc:title 'Harry Potter and the Philosopher\\'s Stone')"+ \ "(?x dc:creator ?z)" + \ "USING book for dc FOR " store = joseki.queryRDQL(modelURL, rdql) for s, p, o in store.triples((ANY,ANY,ANY)): print s, "->" ,p, "->", o