2011-09-15 6 views
2

で空白ノードを追加:以下に書かれたコードは、次の出力を与えるトリプル

コード:

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: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> 

しかし、私は次の出力を必要とし、あなたは何を案内してください可能性それは間違っています。

<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> 

ありがとうございます。

答えて

0

あなたは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の作成はループ内にあることに注意してください。これは主な違いです。

0

ご希望の出力は実際には無効なRDF/XMLであるため、ご希望の場合でも生成できません。あなたはW3C RDF Validatorでそれを実行しようとしましたが、それは正確にどこから来たのですか?

特定のパターンに適合するRDF/XMLを生成しようとする理由はありますか?

IMHOこれは非常に悪い習慣であり、実際にこれを行うべきではありません。
RDFの全体的なポイントは、データの実際のシリアル化とは別のトリプルベースのデータモデルであることです。あなたは本当に必要なシリアライゼーションに基づいてRDFを作成しようとは決して考えてはいけません。あなたが行っているような最小コードスニペットからあなたのデータを表現するRDFトリプルを作成する必要があります。

なぜなら、なぜ私は特定のスタイルでRDF/XMLを生成する必要があるのでしょうか?あなたには何らかの理由があると仮定すると、あなたの実際の目標が何であれ達成するためのより良い方法があるかもしれません。そして、あなたが詳細を提供すれば、人々はあなたを適切に助けるより良い機会を得ます。