Skip to content

Commit

Permalink
use addN for iadd - fixes #181
Browse files Browse the repository at this point in the history
 Added query method to store "interface", fixes #182
Removed test before add, fixes #207
  • Loading branch information
gromgull committed Jul 21, 2012
1 parent 8491319 commit ca4085f
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
14 changes: 8 additions & 6 deletions rdflib/graph.py
Original file line number Diff line number Diff line change
Expand Up @@ -308,11 +308,11 @@ def __init__(self, store='default', identifier=None,

def __get_store(self):
return self.__store
store = property(__get_store)
store = property(__get_store) # read-only attr

def __get_identifier(self):
return self.__identifier
identifier = property(__get_identifier)
identifier = property(__get_identifier) # read-only attr

def _get_namespace_manager(self):
if self.__namespace_manager is None:
Expand Down Expand Up @@ -446,8 +446,7 @@ def __ge__(self, other): return self > other or self == other
def __iadd__(self, other):
"""Add all triples in Graph other to Graph.
BNode IDs are not changed."""
for triple in other:
self.add(triple)
self.addN((s,p,o,self) for s,p,o in other)
return self

def __isub__(self, other):
Expand Down Expand Up @@ -910,7 +909,10 @@ def query(self, query_object, processor='sparql', result='sparql', initNs={}, in
"""
"""
if hasattr(self.store, "query") and use_store_provided:
return self.store.query(self, query_object, initNs, initBindings, **kwargs)
try:
return self.store.query(self, query_object, initNs, initBindings, **kwargs)
except NotImplemented:
pass # store has no own implementation

if not isinstance(result, query.Result):
result = plugin.get(result, query.Result)
Expand Down Expand Up @@ -1051,7 +1053,7 @@ def add(self, (s, p, o)):

def addN(self, quads):
"""Add a sequence of triples with context"""
self.store.addN(quad for quad in quads if quad not in self)
self.store.addN(quads)

def remove(self, (s, p, o)):
"""Removes from all its contexts"""
Expand Down
7 changes: 7 additions & 0 deletions rdflib/store.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,13 @@ def contexts(self, triple=None):
contexts the triple is in.
"""

def query(self, query, initNs, initBindings, **kwargs):
"""
If stores provide their own SPARQL implementation, override this.
"""

raise NotImplemented

# Optional Namespace methods

def bind(self, prefix, namespace):
Expand Down

0 comments on commit ca4085f

Please sign in to comment.