2011-09-05 80 views
0

此文件的人是由rowlex庫生成我的RDF文檔:Rowlex - 獲得唯一的「根」

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
     xmlns:ns="http://xmlns.com/foaf/0.1/" 
     xmlns:privateinfos="http://domain/privateinfos/"> 

    <ns:Person rdf:about="Node 1"> 
     <ns:depiction rdf:resource="Default.png" /> 
     <privateinfos:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Description</privateinfos:description> 
     <ns:knows> 
      <ns:Person rdf:about="6779ac10-210b-40d2-8111-711db6988bb9" /> 
     </ns:knows> 
    </ns:Person> 

    <ns:Person rdf:about="Node 2"> 
     <ns:depiction rdf:resource="Default.png" /> 
     <privateinfos:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Description 2</privateinfos:description> 
    </ns:Person> 

</rdf:RDF> 

,我試圖用這個代碼檢索節點1和節點2個人:

List<Person> person_list = new List<Document>(); 
OwlThing[] Persons = _rdfDocument.GetIndividuals(Person.Uri, true); 

foreach (Person item_found in Persons) 
{ 
    person_list.Add(item_found); 
} 

return person_list; 

不幸person_list返回數據如下:

[0] : Node 1 
[1] : 6779ac10-210b-40d2-8111-711db6988bb9 
[2] : Node 2 

那麼,有沒有一種方法/方法來獲得只有節點1和2沒有他們的子元素在列表中? (課程的個人ID是動態生成的,所以我無法搜索特定的ID)

謝謝。

回答

0

我相信這裏有一些關於RDF和XML的誤解。 RDF是一組可以用XML和其他序列化格式表示的三元組。與XML不同,RDF不是分層的,因此不存在RDF中的「子元素」。 Guid先生只是在Node_1下面這個事實是一個誤導性的XML節點層次結構所「暗示」的錯覺。爲了證明這一點,我列出你的例子(請記住,三元組的RDF順序無關緊要!)的三元組:

「節點1」的typeof人
「節點1」描繪「爲Default.png」
「節點1」 描述 「描述」
「節點1」 知道 「的Guid先生」
「GUID先生」 TYPEOF人
「節點2」 TYPEOF人
「節點2」 描繪 「爲Default.png」
「節點2」描述「描述」

請嘗試以下操作: 再添加一個三元組: 「Mr. GUID」知道‘節點1’用下面的代碼:

Person mrGuid = _rdfDocument.GetIndividual("6779ac10-210b-40d2-8111-711db6988bb9") as Person; 
Person mrNode1 = _rdfDocument.GetIndividual("Node 1") as Person; 
mrGuid.knows = mrNode1; 
Console.WriteLine(_rdfDocument.ToRdfXml()); 

現在,這兩個節點1知道GUID先生和GUID先生知道節點1,這是一個完全合法的情況下會是誰的根源,誰也。是否是子元素? XML序列化程序可能會選擇第一行作爲「根」,另一個作爲「子元素」,但它是任意的。嵌套只是由XML序列化創建的錯覺。

您用rdfDocument.GetIndividuals(Person.Uri, true);聲明觸發的查詢只是過濾掉所有類型爲Person的個人,因此它會正確返回所有這三個人。

+0

「沒有像RDF中的」子元素「那樣的事情」這實際上是我的錯誤,我太專注於xml了!我們通過改變一點點本體論來解決問題。 – yazer