以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  如何检测循环继承关系?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=68510)


--  作者:hyue2009
--  发布时间:10/19/2008 9:33:00 PM

--  如何检测循环继承关系?
我想检测循环继承关系,例如: 有三个累ABC,A是B的子类,B是C的子类,C是A的子类。那肯定可以推理出A是A的子类,也就是循环继承关系。
在我的工程上,存在循环继承关系是矛盾的,
我想有Pellet检测该关系,
但Pellet仅能推出这三个累是相同的,不能推出本体的不一致性,我想通过SPARQL查询来实现,可是查询结果是每个类都是自身的子类,我的查询如下:
SELECT ?x
WHERE
{
   ?x rdfs:subClassOf ?x.
}
or
SELECT ?x  
WHERE
{
   ?x rdfs:subClassOf ?y.
   ?y rdfs:subClassOf ?x.
}
是不是查询写的不正确?还是这种问题不能通过查询来解决?
请高手指点一下。谢谢!
--  作者:hyue2009
--  发布时间:10/19/2008 9:35:00 PM

--  
真不好意思,由于发帖时比较着急,写错了好多字,请大家原谅!
--  作者:srrc
--  发布时间:10/20/2008 4:17:00 PM

--  
subClassOf这个关系本来就是自反的,所以每个类都是自身的子类;subClassOf也具有传递性。
subClassOf没有对称性。
所以SELECT ?x
WHERE
{
   ?x rdfs:subClassOf ?x.
}这个应该去掉,仅留下后面那个。

--  作者:hyue2009
--  发布时间:10/20/2008 4:57:00 PM

--  
我也用后面那个查询试过了,但结果和前面的一样,也是返回定义过的所有类。
--  作者:雪褥织影
--  发布时间:10/20/2008 5:55:00 PM

--  
循环继承并不是矛盾的,只是看起来比较奇怪而已
如果只是想找圈的话,简单用DFS就可以了
--  作者:hyue2009
--  发布时间:10/20/2008 6:06:00 PM

--  
但项目中不要求存在循环继承,
请高手指点一下如何用DFS找圈啊?
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
61.035ms