Beispiel #1
0
 def generate_annotation_id(self, collection_uri):
     collection_id = self._get_id(collection_uri)
     prefix = collection_uri + "/annotation/"
     if API.last_generated_ann_id is None:
         query = prepareQuery('select ?annotation where {?annotation a ?type}')
         annotations = []
         g = Store()
         g.attach_directory(os.path.join(self.basedir, collection_id))
         results = g.graph.query(query, initBindings={'type': DADA.Annotation})
         for result in results.bindings:
             annotations.append(int(result["annotation"].toPython().replace(prefix, "")))
 
         API.last_generated_ann_id = max(annotations)
     API.last_generated_ann_id += 1
     return prefix + str(API.last_generated_ann_id)
Beispiel #2
0
 def search_sparql(self, collection_uri, query):
     collection_id = self._get_id(collection_uri)
     output = {"head":{"vars":[]}, "results":{"bindings":[]}}
     subgraph = Store()
     subgraph.attach_directory(os.path.join(self.basedir, collection_id))
     subgraph.graph.parse(os.path.join(self.basedir, collection_id+".n3"), format='n3')
     result = subgraph.graph.query(query)        
     for var in result.vars:
         output["head"]["vars"].append(str(var))
     for binding in result.bindings:
         temp = {}
         for var in output["head"]["vars"]:
             temp[var] = {"type":type(binding[var]).__name__, "value":binding[var].toPython()}
         output["results"]["bindings"].append(temp)
     return output