Используя Python rdflib
, я пытаюсь вставить новые триплеты в граф на основе некоторых основных манипуляций с существующими триплетами. Например, в этом базовом примере я создаю график, который я заполняю, используя INSERT DATA
с 4 тройками. Затем я пытаюсь уравнять ситуацию с INSERT
, но это не удается. Что я делаю не так?
>>>
>>> import rdflib
>>> g = rdflib.Graph()
>>> g.update("INSERT DATA {<a> <b> <c>; <d> <e>.<f> <g> <h>; <i> <j>.}")
>>> print(list(g.triples((None, None, None))))
[(rdflib.term.URIRef('a'), rdflib.term.URIRef('d'), rdflib.term.URIRef('e')), (rdflib.term.URIRef('f'), rdflib.term.URIRef('g'), rdflib.term.URIRef('h')), (rdflib.term.URIRef('a'), rdflib.term.URIRef('b'), rdflib.term.URIRef('c')), (rdflib.term.URIRef('f'), rdflib.term.URIRef('i'), rdflib.term.URIRef('j'))]
>>> g.update("""INSERT {GRAPH {?c ?b ?a.}} WHERE {GRAPH {?a ?b ?c.}}""")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/rdflib/graph.py", line 1161, in update
return processor.update(update_object, initBindings, initNs, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/rdflib/plugins/sparql/processor.py", line 56, in update
strOrQuery = translateUpdate(parseUpdate(strOrQuery), initNs=initNs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/rdflib/plugins/sparql/parser.py", line 1071, in parseUpdate
return UpdateUnit.parseString(q, parseAll=True)[0]
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyparsing.py", line 1955, in parseString
raise exc
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyparsing.py", line 3814, in parseImpl
raise ParseException(instring, loc, self.errmsg, self)
pyparsing.ParseException: Expected end of text, found 'I' (at char 0), (line:1, col:1)
>>>