2009-07-10 75 views
1

我在我的語義Web項目中有一個RDF文件,我使用Rowlex處理它。 我需要從RDF刪除個人,所以我用從RDF中刪除個人和財產

<RDFDoc instance>.RemoveIndividual(new OwlThing(<individual URI>, <RDFDoc instance>)); 

有了這個代碼,我有我的個人走了,但它的性能仍然存在。所以我想通了,我應該先刪除它的屬性。此外,我沒有找到一個命令一起去除所有屬性。所以,問題1:有沒有辦法刪除個人及其所有的屬性?或者,我可以刪除一行代碼中的所有屬性而不是逐個刪除?我怎樣才能刪除多個值的屬性。例如三個StudyLists,在下面的例子中。

在另一方面,當我試圖從學生個體刪除一個屬性,例如 'useSudyList',通過這個代碼:

student.RemoveuseStudyList(student.useStudyList); 

我發現我的RDF文件:

<Ontologyowl:Student rdf:about="ehsanm"> 
//other properties 
    <Ontologyowl:useStudyList> 
     <Ontologyowl:StudyList rdf:about="stdl184516"/> 
    </Ontologyowl:useStudyList> 
</Ontologyowl:Student> 

...變成這樣:

<Ontologyowl:Student rdf:about="ehsanm"> 
    //other properties 

</Ontologyowl:Student> 
<Ontologyowl:StudyList rdf:about="stdl184516"/> 

因此,財產被拋出。我沒有這個問題的文字屬性。 Question2:有什麼問題?

感謝您的關注,並提前給予幫助。

回答

2

你的問題與ROWLEX無關,但它是一個典型的圖形問題:如果你刪除一個節點,你有多遠級聯刪除?當你用文字刪除一個屬性時,情況很簡單,因爲沒有圖的延續。當你刪除一個指向另一個節點的屬性時,你應該刪除該節點嗎?您的示例中的刪除看起來很明顯,因爲您的圖形既不包含循環引用也不包含共享關係。想象下面的圖:你有3個人:A(亞當),B(比爾)和他們的父親F(弗雷德)。你有A - F和B - F之間的父親關係。 你刪除了Adam和他父親之間的關係。是否應該刪除父節點並將Bill變爲不一致(孤立:)狀態?這裏的答案是「否」。你只能刪除關係。

在UML圖中,您可以選擇聚合關係來區分「擁有」和「共享」。它以行尾的菱形顏色(黑色或白色)表示。在關係數據庫中,您可以定義或忽略通過外鍵的「級聯刪除」。他們代表了相同的概念。不幸的是,RDF不提供此屬性的額外元數據。如果RDF具有這些信息,我們可以確定何時以及在多大程度上應該在圖上級聯刪除。但我們不。這爲壞消息設定了一個案例:你是獨立的,你可以在你認爲合適的時候實施刪除。

+0

您注意了這一點! – 2009-07-11 18:44:26

3

您確實刪除了該屬性,但是還有其他與您未刪除的<stdl184516>相關的聲明。

這裏有你有實際的語句(龜格式):

<ehsanm> a Ontologyowl:Student . 
## Other statements 
<ehsanm> Ontologyowl:useStudyList <stdl184516> . 
<stdl184516> a Ontologyowl:StudyList . 

所以它是有道理的,你<ehsanm>主題去除Ontologyowl:useStudyList謂詞(以及包含它的語句)將保留其餘斷言關於<stdl184516>的類型。

你沒有文字問題的原因是你沒有文字作爲語句的主題(它們只是語句的對象)。因此刪除該語句會刪除文字(以及對它的所有引用)。以資源作爲陳述的對象,可能會有關於該資源的其他陳述(如您的示例中的情況)。

RDF認爲文字不相交,意味着它們都是不同的(即使它們具有相同的值)。這就是爲什麼刪除一個謂詞到文字(如果你想這樣想的話,它的「鏈接」)也會刪除文字。

更新(添加到拉梅先生的迴應):概念,RDF是關於邊緣節點(資源)的圖表(關係/謂詞)。刪除節點的概念與RDF相反;它意味着節點(資源)本身具有意義。即使通過聲明其rdf:type來鍵入資源也是一個節點/邊緣/節點語句。單獨的節點URI被認爲是不透明的,並且除了作爲唯一標識符之外沒有任何語義。這就是爲什麼RDF不允許「裸」節點(一個節點之外的節點) - 它們沒有固有含義。

爲擴展Ehsan提出的問題,刪除節點實際上會刪除其所有傳入/傳出謂詞。這並不真正「刪除」節點,它實際上刪除了引用它的所有語句/斷言(當沒有語句引用它時,將其視爲「隱藏」)。

+0

非常感謝您的指導。我會再次檢查,並添加一些代碼,看看它是否工作。 再次感謝 – Ehsan 2009-07-11 09:43:47