#!/bin/env python print "==== Example 4 - Find all the books with a given title (a string)" 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") # ---------------------------------------- store = joseki.triples(modelURL, None, dcTitle, "Harry Potter and the Goblet of Fire") for s, p, o in store.triples((ANY,ANY,ANY)): if str(p) == str(dcTitle): print s, "->", o else: print s, "->" ,p, "->", o bookDetails = joseki.fetch(modelURL, book2) bookDetails.prefix_mapping("dc", "http://purl.org/dc/elements/1.1/") bookDetails.prefix_mapping("vcard", "http://www.w3.org/2001/vcard-rdf/3.0#") if bookDetails.__dict__.has_key('serialize'): # RDFlib v2 print bookDetails.serialize() else: # RDFlib v1 bookDetails.output(sys.stdout)