"""Helper features for working with librdf
"""
+import logging
import os
import types
import RDF
+logger = logging.getLogger(__name__)
+
# standard ontology namespaces
owlNS = RDF.NS('http://www.w3.org/2002/07/owl#')
dublinCoreNS = RDF.NS("http://purl.org/dc/elements/1.1/")
libraryOntology = RDF.NS("http://jumpgate.caltech.edu/wiki/LibraryOntology#")
submissionLog = RDF.NS("http://jumpgate.caltech.edu/wiki/SubmissionsLog/")
+def sparql_query(model, query_filename):
+ """Execute sparql query from file
+ """
+ logger.info("Opening: %s" % (query_filename,))
+ query_body = open(query_filename,'r').read()
+ query = RDF.SPARQLQuery(query_body)
+ results = query.execute(model)
+ for row in results:
+ output = []
+ for k,v in row.items()[::-1]:
+ print "{0}: {1}".format(k,v)
+ print
+
+
def blankOrUri(value=None):
node = None
if value is None:
elif type(value) == types.FloatType:
value_type = xsdNS['float'].uri
value = unicode(value)
- elif type(value) in types.StringTypes:
- value_type = xsdNS['string'].uri
else:
value_type = None
value = unicode(value)
- return RDF.Node(literal=value, datatype=value_type)
+ if value_type is not None:
+ node = RDF.Node(literal=value, datatype=value_type)
+ else:
+ node = RDF.Node(literal=value)
+ return node
def fromTypedNode(node):
if node is None:
return literal
-
+
def get_model(model_name=None, directory=None):
if directory is None:
directory = os.getcwd()
if model_name is None:
storage = RDF.MemoryStorage()
+ logger.info("Using RDF Memory model")
else:
+ options = "hash-type='bdb',dir='{0}'".format(directory)
storage = RDF.HashStorage(model_name,
- options="hash-type='bdb',dir='{0}'".format(directory))
+ options=options)
+ logger.info("Using {0} with options {1}".format(model_name, options))
model = RDF.Model(storage)
return model