本文整理汇总了Python中rdflib.store.Store.remove方法的典型用法代码示例。如果您正苦于以下问题:Python Store.remove方法的具体用法?Python Store.remove怎么用?Python Store.remove使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rdflib.store.Store
的用法示例。
在下文中一共展示了Store.remove方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: remove
# 需要导入模块: from rdflib.store import Store [as 别名]
# 或者: from rdflib.store.Store import remove [as 别名]
def remove(self, triple, context=None):
Store.remove(self, triple, context)
if context is not None:
if context == self:
context = None
# f = self.forward
r = self.reverse
if context is None:
for triple, cg in self.triples(triple):
subject, predicate, object = triple
si, pi, oi = self.identifierToInt((subject, predicate, object))
contexts = list(self.contexts(triple))
for context in contexts:
ci = r[context]
del self.cspo[ci][si][pi][oi]
del self.cpos[ci][pi][oi][si]
del self.cosp[ci][oi][si][pi]
self._removeNestedIndex(self.spo, si, pi, oi, ci)
self._removeNestedIndex(self.pos, pi, oi, si, ci)
self._removeNestedIndex(self.osp, oi, si, pi, ci)
# grr!! hafta ref-count these before you can collect
# them dumbass!
# del f[si], f[pi], f[oi]
# del r[subject], r[predicate], r[object]
else:
subject, predicate, object = triple
ci = r.get(context, None)
if ci:
for triple, cg in self.triples(triple, context):
si, pi, oi = self.identifierToInt(triple)
del self.cspo[ci][si][pi][oi]
del self.cpos[ci][pi][oi][si]
del self.cosp[ci][oi][si][pi]
try:
self._removeNestedIndex(self.spo, si, pi, oi, ci)
self._removeNestedIndex(self.pos, pi, oi, si, ci)
self._removeNestedIndex(self.osp, oi, si, pi, ci)
except KeyError:
# the context may be a quoted one in which
# there will not be a triple in spo, pos or
# osp. So ignore any KeyErrors
pass
# TODO delete references to resources in
# self.forward/self.reverse that are not in use anymore...
if subject is None and predicate is None and object is None:
# remove context
try:
ci = self.reverse[context]
del self.cspo[ci], self.cpos[ci], self.cosp[ci]
except KeyError:
# TODO: no exception when removing non-existant context?
pass
示例2: remove
# 需要导入模块: from rdflib.store import Store [as 别名]
# 或者: from rdflib.store.Store import remove [as 别名]
def remove(self, triple, context):
(subject, predicate, object) = triple
assert self.__open, "The Store must be open."
Store.remove(self, (subject, predicate, object), context)
_to_string = self._to_string
if context is not None:
if context == self:
context = None
if subject is not None \
and predicate is not None \
and object is not None \
and context is not None:
s = _to_string(subject)
p = _to_string(predicate)
o = _to_string(object)
c = _to_string(context)
value = self.__indices[0].get(bb("%s^%s^%s^%s^" % (c, s, p, o)))
if value is not None:
self.__remove((bb(s), bb(p), bb(o)), bb(c))
self.__needs_sync = True
else:
cspo, cpos, cosp = self.__indices
index, prefix, from_key, results_from_key = self.__lookup(
(subject, predicate, object), context)
needs_sync = False
for key in index.match_prefix(prefix):
c, s, p, o = from_key(key)
if context is None:
contexts_value = index.get(key) or b("")
# remove triple from all non quoted contexts
contexts = set(contexts_value.split(b("^")))
contexts.add(b("")) # and from the conjunctive index
for c in contexts:
for i, _to_key, _ in self.__indices_info:
i.remove(_to_key((s, p, o), c))
else:
self.__remove((s, p, o), c)
needs_sync = True
if context is not None:
if subject is None and predicate is None and object is None:
# TODO: also if context becomes empty and not just on
# remove((None, None, None), c)
try:
self.__contexts.remove(bb(_to_string(context)))
# except db.DBNotFoundError, e:
# pass
except Exception as e: # pragma: NO COVER
print("%s, Failed to delete %s" % (
e, context)) # pragma: NO COVER
pass # pragma: NO COVER
self.__needs_sync = needs_sync
示例3: remove
# 需要导入模块: from rdflib.store import Store [as 别名]
# 或者: from rdflib.store.Store import remove [as 别名]
def remove(self, triple, context):
"""Remove the set of triples matching the pattern from the store
:param triple: Triple (subject, predicate, object) to remove.
:param context:
:returns:
"""
# pylint: disable-msg=W0222
# Signature differs from overriden method
LOG.debug("-- ProxyStore.remove(triple=%s, context=%s) --",
triple, context)
Store.remove(self, triple, context)
if triple == (None, None, None):
self._graph = Graph()
# the default implementation of Graph is not efficient in doing
# this, so better create a new empty one
else:
self._graph.store.remove(triple)
示例4: b
# 需要导入模块: from rdflib.store import Store [as 别名]
# 或者: from rdflib.store.Store import remove [as 别名]
i.remove(_to_key((s, p, o), c))
if not quoted:
if contexts_value:
for i, _to_key, _from_key in self.__indices_info:
i.set(_to_key((s, p, o), b("")), contexts_value)
else:
for i, _to_key, _from_key in self.__indices_info:
try:
i.remove(_to_key((s, p, o), b("")))
except self.db.DBNotFoundError, e: #pragma: NO COVER
_logger.debug("__remove failed with %s" % e) #pragma: NO COVER
pass # TODO: is it okay to ignore these?
def remove(self, (subject, predicate, object), context):
assert self.__open, "The Store must be open."
Store.remove(self, (subject, predicate, object), context)
_to_string = self._to_string
if context is not None:
if context == self:
context = None
if subject is not None \
and predicate is not None \
and object is not None \
and context is not None:
s = _to_string(subject)
p = _to_string(predicate)
o = _to_string(object)
c = _to_string(context)
value = self.__indices[0].get(bb("%s^%s^%s^%s^" % (c, s, p, o)))
if value is not None:
示例5: remove
# 需要导入模块: from rdflib.store import Store [as 别名]
# 或者: from rdflib.store.Store import remove [as 别名]
def remove(self, spo, context, txn=None):
subject, predicate, object = spo
assert self.__open, "The Store must be open."
Store.remove(self, (subject, predicate, object), context)
_to_string = self._to_string
if context is not None:
if context == self:
context = None
if subject is not None \
and predicate is not None \
and object is not None \
and context is not None:
s = _to_string(subject, txn=txn)
p = _to_string(predicate, txn=txn)
o = _to_string(object, txn=txn)
c = _to_string(context, txn=txn)
value = self.__indicies[0].get(bb("%s^%s^%s^%s^" %
(c, s, p, o)), txn=txn)
if value is not None:
self.__remove((bb(s), bb(p), bb(o)), bb(c), txn=txn)
self.__needs_sync = True
else:
cspo, cpos, cosp = self.__indicies
index, prefix, from_key, results_from_key = self.__lookup(
(subject, predicate, object), context, txn=txn)
cursor = index.cursor(txn=txn)
try:
current = cursor.set_range(prefix)
needs_sync = True
except db.DBNotFoundError:
current = None
needs_sync = False
cursor.close()
while current:
key, value = current
cursor = index.cursor(txn=txn)
try:
cursor.set_range(key)
# Hack to stop 2to3 converting this to next(cursor)
current = getattr(cursor, 'next')()
except db.DBNotFoundError:
current = None
cursor.close()
if key.startswith(prefix):
c, s, p, o = from_key(key)
if context is None:
contexts_value = index.get(key, txn=txn) or b("")
# remove triple from all non quoted contexts
contexts = set(contexts_value.split(b("^")))
# and from the conjunctive index
contexts.add(b(""))
for c in contexts:
for i, _to_key, _ in self.__indicies_info:
i.delete(_to_key((s, p, o), c), txn=txn)
else:
self.__remove((s, p, o), c, txn=txn)
else:
break
if context is not None:
if subject is None and predicate is None and object is None:
# TODO: also if context becomes empty and not just on
# remove((None, None, None), c)
try:
self.__contexts.delete(
bb(_to_string(context, txn=txn)), txn=txn)
except db.DBNotFoundError:
pass
self.__needs_sync = needs_sync