以文本方式查看主题 - 中文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 |