diff options
Diffstat (limited to 'creactistore/_templates/lib/semanticxo/sparql.py')
-rw-r--r-- | creactistore/_templates/lib/semanticxo/sparql.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/creactistore/_templates/lib/semanticxo/sparql.py b/creactistore/_templates/lib/semanticxo/sparql.py new file mode 100644 index 0000000..fe873e9 --- /dev/null +++ b/creactistore/_templates/lib/semanticxo/sparql.py @@ -0,0 +1,42 @@ +''' +Created on 25 Aug 2011 + +@author: cgueret +''' +# python import +import httplib, urllib, cjson + +# rdflib import +from rdflib_ import URIRef, Literal + + +class SPARQL(object): + + def __init__(self, url): + self._url = url + + def execute_select(self, query): + results = [] + params = {'query': query, 'format' : 'json'} + headers = {'Content-Type': 'application/x-www-form-urlencoded'} + try: + # Open the connection + conn = httplib.HTTPConnection(self._url) + conn.request("POST", "/sparql", urllib.urlencode(params), headers=headers) + # Get the results + response = conn.getresponse() + r = cjson.decode(response.read(), all_unicode=False) + # Recode them + for entry in r['results']['bindings']: + result = {} + for (name,data) in entry.iteritems(): + value = Literal(data['value']) + if data['type']=='uri': + value = URIRef(data['value']) + result[name] = value + results.append(result) + conn.close() + except: + pass + # returns select results or empty list + return results |