1

我的语义 Web 项目中有一个 RDF 文件,我使用 Rowlex 来操作它。我需要从 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"/>

因此,财产被扔掉了。我对文字属性没有这个问题。问题2:有什么问题?

提前感谢您的关注和帮助。

4

2 回答 2

3

您确实删除了该属性,但是还有其他相关的声明<stdl184516>您没有删除。

以下是您拥有的实际语句(Turtle 格式):

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

Ontologyowl:useStudyList因此,删除主题的谓词<ehsanm>(以及包含它的语句)将留下关于<stdl184516>' 类型的剩余断言是有道理的。

文字没有这个问题的原因是您没有文字作为陈述的主题(它们只是陈述的对象)。因此,删除该语句会删除文字(以及对它的所有引用)。将资源作为语句的对象,可能会有关于该资源的附加语句(如您的示例中的情况)。

RDF 认为文字是不相交的,这意味着它们都是不同的(即使它们具有相同的值)。这就是为什么删除一个文字的谓词(如果你想这样想的话,就是它的“链接”)也会删除文字。

更新(添加到 Lame 先生的回复中):从概念上讲,RDF 是关于节点(资源)图中的边(关系/谓词)。删除节点的概念与 RDF 相悖;它意味着节点(资源)本身就具有意义。即使通过断言资源来键入资源rdf:type也是一个节点/边缘/节点语句。单独的节点 URI 被认为是不透明的,除了作为唯一标识符之外没有任何语义。这就是 RDF 不允许“裸”节点(语句之外的节点)的原因——它们没有内在含义。

为了扩展 Ehsan 提出的问题,删除节点实际上会删除其所有传入/传出谓词。这并没有真正“删除”节点,它实际上删除了所有引用它的语句/断言(当没有语句引用它时,将其视为“隐藏”)。

于 2009-07-10T20:46:20.080 回答
2

您的问题与 ROWLEX 无关,但它是一个典型的图问题:如果您删除一个节点,您将删除级联到多远?当您删除带有文字的属性时,这种情况很容易,因为图没有延续。当您删除指向另一个节点的属性时,您应该删除该节点吗?您的示例中的删除看起来很明显,因为您的图表既不包含循环引用,也不包含共享关系。

想象下图:您有 3 个人:A(亚当)、B(比尔)和他们的父亲 F(弗雷德)。您在 A - F 和 B - F 之间有父关系。您删除了亚当和他父亲之间的关系。您是否应该删除父节点并使比尔进入不一致(孤儿:) 状态?这里的答案是“不”。您只删除关系。

在 UML 图中,您可以选择聚合关系来区分“拥有”和“共享”。它以线条末端的钻石颜色(黑色或白色)表示。在关系数据库中,您可以在外键上定义或忽略“级联删除”。它们代表相同的概念。不幸的是,RDF 没有在属性上提供这种额外的元数据。如果 RDF 有这些信息可用,我们就可以确定我们应该在何时以及在多远的范围内对图进行级联删除。但我们没有。这为坏消息奠定了基础:你是一个人,你可以按照你认为合适的方式实施删除。

于 2009-07-11T18:37:59.980 回答