Я пытаюсь добавить имена наборов данных в объект графа, а затем получить их, почти уверен, что должен быть простой способ сделать это, но пока не смог найти ничего ... спасибо
Я думаю, что вы ищете, чтобы прикрепить контекст к графику. Это похоже на создание графа для разбора в нем подграфов, каждый из которых имеет имя - a URIRef в случае rdflib.
URIRef
Представьте, что вам нужны графики, представленные двумя следующими файлами:
dataA.nt
<http://data.org/inst1> <http://xmlns.com/foaf/0.1/name> "david" . <http://data.org/inst2> <http://xmlns.com/foaf/0.1/name> "luis" . <http://data.org/inst3> <http://xmlns.com/foaf/0.1/name> "max" .
dataB.nt
<http://data.org/inst1> <http://xmlns.com/foaf/0.1/knows> <http://data.org/inst2> . <http://data.org/inst2> <http://xmlns.com/foaf/0.1/knows> <http://data.org/inst3> . <http://data.org/inst3> <http://xmlns.com/foaf/0.1/knows> <http://data.org/inst1> .
И следующий фрагмент кода:
import rdflib g = rdflib.ConjunctiveGraph("IOMemory",) #g is made of two sub-graphs or triples gathered in two different contexts. #the second paramaters identifies the URIRef for each subgraph. g.parse("dataA.nt",rdflib.URIRef("http://mygraphs.org/names"),format="n3") g.parse("dataB.nt",rdflib.URIRef("http://mygraphs.org/relations"),format="n3") print "traverse all contexts and all triples for each context" for subgraph in g.contexts(): print "Graph name",subgraph.identifier for triple in subgraph.triples((None,None,None)): print triple print "traverse all contexts where a triple appears" for subgraph in g.contexts(triple=(rdflib.URIRef('http://data.org/inst1'),rdflib.URIRef("http://xmlns.com/foaf/0.1/name"),rdflib.Literal(u'david'))): print "Graph name",subgraph.identifier for triple in subgraph.triples((None,None,None)): print triple print "traverse a triple pattern regardless the context is in" for t in g.triples((None,rdflib.URIRef("http://xmlns.com/foaf/0.1/name"),None)): print t