Python 在三元组中添加空白节点
下面编写的代码提供以下输出: 代码: 输出:Python 在三元组中添加空白节点,python,rdf,rdflib,blank-nodes,Python,Rdf,Rdflib,Blank Nodes,下面编写的代码提供以下输出: 代码: 输出: <rdf:Description rdf:about="http://www.iamresearcher.com/profiles/id/luc.moreau"> <foaf:knows rdf:nodeID="kdOAGjqG160"/> </rdf:Description> <rdf:Description rdf:nodeID="kdOAGjqG160"> <t:data>1
<rdf:Description rdf:about="http://www.iamresearcher.com/profiles/id/luc.moreau">
<foaf:knows rdf:nodeID="kdOAGjqG160"/>
</rdf:Description>
<rdf:Description rdf:nodeID="kdOAGjqG160">
<t:data>1</t:data>
<foaf:Person rdf:resource="http://www.iamresearcher.com/profiles/id/patrick.hayes"/>
<foaf:Person rdf:resource="http://www.iamresearcher.com/profiles/id/christian.queinnec"/>
<foaf:Person rdf:resource="http://www.iamresearcher.com/profiles/id/thanassis.tiropanis"/>
<foaf:Person rdf:resource="http://www.iamresearcher.com/profiles/id/ian.foster"/>
<foaf:Person rdf:resource="http://www.iamresearcher.com/profiles/id/nicholas.gibbins"/>
</rdf:Description>
1.
但我需要下面的输出,请您指导它有什么问题
<rdf:Description rdf:about="http://www.iamresearcher.com/profiles/id/luc.moreau">
<foaf:knows>
<foaf:Person rdf:resource="http://www.iamresearcher.com/profiles/id/patrick.hayes">
<t:data>1</t:data>
</foaf:Person>
<foaf:Person rdf:resource="http://www.iamresearcher.com/profiles/id/christian.queinnec">
<t:data>1</t:data>
</foaf:Person>
<foaf:Person rdf:resource="http://www.iamresearcher.com/profiles/id/thanassis.tiropanis">
<t:data>1</t:data>
</foaf:Person>
<foaf:Person rdf:resource="http://www.iamresearcher.com/profiles/id/ian.foster">
<t:data>1</t:data>
</foaf:Person>
<foaf:Person rdf:resource="http://www.iamresearcher.com/profiles/id/nicholas.gibbins">
<t:data>1</t:data>
</foaf:Person>
</foaf:knows>
</rdf:Description>
1.
1.
1.
1.
1.
提前感谢。您似乎在bNode
person
上错误地循环。您总是使用相同的bNode,这可能是导致错误的原因
所以如果你的代码看起来像
person = BNode()
for (fetchKnowsRowString, trustString) in friends:
dataStore.add((URIRef(stringrd),FOAF_NS['knows'],person))
dataStore.add((person,FOAF_NS['Person'],URIRef(fetchKnowsRowString)))
dataStore.add((person,TRUST_NS['hasValue'],Literal(trustString)))
那么错误是您使用的是同一个bNode实例。您的代码应该与下面的代码片段类似。请注意,bNode创建在循环内部,这是主要区别
for (fetchKnowsRowString, trustString) in friends:
person = BNode()
dataStore.add((URIRef(stringrd),FOAF_NS['knows'],person))
dataStore.add((person,FOAF_NS['Person'],URIRef(fetchKnowsRowString)))
dataStore.add((person,TRUST_NS['hasValue'],Literal(trustString)))
似乎您在bNode
person
上的循环有点错误。您总是使用相同的bNode,这可能是导致错误的原因
所以如果你的代码看起来像
person = BNode()
for (fetchKnowsRowString, trustString) in friends:
dataStore.add((URIRef(stringrd),FOAF_NS['knows'],person))
dataStore.add((person,FOAF_NS['Person'],URIRef(fetchKnowsRowString)))
dataStore.add((person,TRUST_NS['hasValue'],Literal(trustString)))
那么错误是您使用的是同一个bNode实例。您的代码应该与下面的代码片段类似。请注意,bNode创建在循环内部,这是主要区别
for (fetchKnowsRowString, trustString) in friends:
person = BNode()
dataStore.add((URIRef(stringrd),FOAF_NS['knows'],person))
dataStore.add((person,FOAF_NS['Person'],URIRef(fetchKnowsRowString)))
dataStore.add((person,TRUST_NS['hasValue'],Literal(trustString)))
您的问题在这里有点含糊,首先,您想要的输出实际上是无效的RDF/XML,所以即使您想要,也无法生成它。你有没有试着把它放在电脑里,它到底是从哪里来的 您试图生成适合特定模式的RDF/XML有什么原因吗 我认为这是一个非常糟糕的练习,你真的不应该尝试这样做。
RDF的全部要点在于它是一个基于三元组的数据模型,与数据的实际序列化是分开的。您真的不应该尝试基于所需的序列化创建RDF,您应该创建RDF三元组来表达您的数据,您所显示的最小代码片段似乎就是您正在做的事情
所以我要再次重申,为什么需要以特定的样式生成RDF/XML?假设你有这样的理由,可能有更好的方法来实现你的实际目标,如果你提供更多的细节,人们将有更好的机会来适当地帮助你,你的问题在这里有点模糊,首先,您想要的输出实际上是无效的RDF/XML,所以即使您想要,也无法生成它。你有没有试着把它放在电脑里,它到底是从哪里来的 您试图生成适合特定模式的RDF/XML有什么原因吗 我认为这是一个非常糟糕的练习,你真的不应该尝试这样做。
RDF的全部要点在于它是一个基于三元组的数据模型,与数据的实际序列化是分开的。您真的不应该尝试基于所需的序列化创建RDF,您应该创建RDF三元组来表达您的数据,您所显示的最小代码片段似乎就是您正在做的事情 所以我要再次重申,为什么需要以特定的样式生成RDF/XML?假设你有这样的理由,可能有更好的方法来实现你的实际目标,如果你提供更多的细节,人们将有更好的机会能够适当地帮助你