- From: Sean B. Palmer <sean@mysterylights.com>
- Date: Sun, 21 Oct 2001 03:41:29 +0100
- To: <www-archive@w3.org>
# Vanilla version of Aaron's http://blogspace.com/rdf/rdfapi.txt
import urllib, string
def literalToURI(value):
return 'data:,' + urllib.quote(value)
def URIToLiteral(uri):
if uri[0:6] != 'data:,': raise 'Only parses URIs like: data:,somedata'
return urllib.unquote(uri[6:])
class Namespace:
def __init__(self, prefix): self.prefix = prefix
def __getattr__(self,name): return self.prefix + name
class Node:
nodeList = {}
def __init__(self, uri=None):
if uri is not None: self.uri = uri
def node(value=None):
if value == None: return Node()
if type(value) is type(u''): value = literalToURI(value)
if not Node.nodeList.has_key(value): Node.nodeList[value] = Node(value)
return Node.nodeList[value]
class Triple(Node):
def __init__(self, store, s, p, o):
if not hasattr(s, '__class__'): s = node(s)
if not hasattr(p, '__class__'): p = node(p)
if not hasattr(o, '__class__'): o = node(o)
self.subject, self.predicate, self.object = s, p, o
class Store:
def __init__(self): self.tripleList = []
def triple(self, s, p, o):
result = Triple(self, s, p, o)
self.tripleList.append(result); return result
def query(self, s, p, o):
if not hasattr(s, '__class__') and s is not None: s = node(s)
if not hasattr(p, '__class__') and p is not None: p = node(p)
if not hasattr(o, '__class__') and o is not None: o = node(o)
results = []
for t in self.tripleList:
if ( (s is None or t.subject is s)
and (p is None or t.predicate is p)
and (o is None or t.object is o) ): results.append(t)
return results
Cheers,
--
Kindest Regards,
Sean B. Palmer
@prefix : <http://webns.net/roughterms/> .
:Sean :hasHomepage <http://purl.org/net/sbp/> .
Received on Saturday, 20 October 2001 22:41:43 UTC