以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  关于构建ontology的一点个人思想(debugging of ontology)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=31112)


--  作者:wason21cn
--  发布时间:4/23/2006 8:02:00 PM

--  关于构建ontology的一点个人思想(debugging of ontology)
来这个论坛很长时间,从来没有发过贴,感觉现在虽然论坛的人气不错,但是很多帖子都是提问性质的,技术交流的帖子好像很少,做论文做了一些时间,想写一些关于自己论文的东东,希望大家能够交流。
当我们构建ontology的时候,能不能有一个标准的构建方法能使之是一个正确的ontology?当分类的时候,引用lan Horrock的话说,”Take a group of things and ask what they have in common.” 什么叫in common?也许从不同的角度有不同的in common, 所以说如何构建一个完美(consistency)的ontology从来没有给出一个非常统一的标准,而且也不好给出一个标准。  再者,现在的reasoner都是先给出一个ontology,然后在基于这个ontology上进行推理。 所以我们的方法是, 在构建ontology的过程中先不考虑正确性,当我们构建完这个ontology,先利用现在的reasoner比如racer,fact对于所有出现在这个ontology的concept找出所有的unsatisfiable concept。为什么这样做? 因为如果这个ontology是不正确的,就是因为在定义一些concept的时候出现了问题,比如说多定义或者不正确的定义,即导致这个ontology的原因就是因为这些unsatisfiable concept。所以说如果能够修改这些unsatisfiable concept使之正确,那么ontology也就是正确的了。
首先给出两个关键字:explaination和correction。通常来说,当我们debugging一个ontology的时候,首先找出explaination(即导致这个ontology不正确的原因),然后在进行correction(修改这个ontology使之正确), 这里我们先讨论第一步,找出explaination。首先看一个例子:

按此在新窗口浏览图片
可以知道这是一个inconsistent的ALC的Tbox,通过已有的一些reasoner,我们可以找出unsatisfiable concept是{A1, A3, A6, A7}, 对于这个reasoner来说,我们只能找出这些不正确的概念,但是有一些信息我们是很感兴趣的,比如说A1的不正确性是因为A3,A3的不正确性是因为在定义A4和A5有冲突,这些信息在debugging这个Tbox的时候是非常有用的,因为这就是导致这个ontology错误的原因。 所有我们需要有一个算法能找出这一类的信息(explaination)。

我们要做的是什么?比如给这一个Tbox,和一个unsatisfiable concept  A3,算法给出的这个Tbox的最小的子Tbox,它包含了导致这个 A3不正确的原因,而且是最小的, 在这个例子中是{Ax3, Ax4, Ax5}。 很明显,当我们要修改这个Tbox一些的axion的时候,我们不需要考虑这个Tbox所有的axiom,比如这里的A7,根本和A3没有关系。具体说到这个算法, 过程说起来就比较复杂了,而且对于不同的Tbox而言,会有不同的算法定义, 发这个帖子的目的只是给出关于debugging一些大概的思想。可以给点这个算法的思想,输入是(a: A3)(label), 这里a是一个新的individual name,A3是concept name, label就是我们需要的explaination,通过一个tableau算法,我们要考虑到所有的分支使之不正确, 当关于a的信息出现冲突是,这个时候的label就是我们需要的。而label的产生就是当执行tableau算法的时候,加入一些相关的axiom。
对于debugging一个ontology来说,上面提到的仅仅只是第一步找到错误的过程,而且现在关于这类问题也都是在这个阶段,我现在的论文也是找一个DL语言的explaination,算法跟上面提到的差不多。 至于第二个阶段correction,也会是一个很有兴趣的问题,如何修改explaination使之正确,修改的过程也许会影响到其他concept的正确性问题,都是需要考虑的问题。
Ok, 第一次发帖,希望大家支持。

[此贴子已经被作者于2006-4-23 22:11:33编辑过]

--  作者:admin
--  发布时间:4/23/2006 10:01:00 PM

--  
但是很多帖子都是提问性质的,技术交流的帖子好像很少
~~~~~~~~~~
的确如此。

希望大家能够少些提问,多谢交流。
这并不是说禁止大家问问题,而是建议大家在问问题时,自己先想一下,给出自己的想法。我觉得这样的交流才是有效的,积极的。相信大家都能理解这个道理。


--  作者:wolfel
--  发布时间:4/24/2006 12:43:00 AM

--  
多谢!我下一步正准备涉足本体的diagonosis,debugging方面,楼主给我做了一个科普了。
--  作者:iamwym
--  发布时间:4/24/2006 4:01:00 AM

--  
debug ontology是个很有意思的topic,而且很多事情可以做的,楼主可以和alan组里的人多交流一下
--  作者:evenbetter
--  发布时间:4/24/2006 8:51:00 AM

--  
呵呵,看到楼主的帖子的时候突然有一个想法,如果现在的OWL编辑器能够作到像现在的eclipse这种计算机语言编辑环境一样就好了,也就是说,当我在使用编辑器构建本体的时候,每作一步都有像eclipse那样给出可能会出错的地方,也就是说错误提示功能

或许这个是个不错的方向,嘿嘿,个人之言~!


--  作者:kangping_sun
--  发布时间:4/24/2006 9:04:00 AM

--  
"一个正确的ontology"可以有两层意思:一是符合一种逻辑;二是表达了"客观"知识.debugging 也许能够解决逻辑问题."表达"问题也许要复杂一些.
--  作者:gwj_77_77_77
--  发布时间:4/24/2006 2:23:00 PM

--  
有些收获,感谢搂主了!!
我觉得一楼说的很对,支持呀!大家都在关注,可很少提出自己的技术思想!
可能还在学习过程中巴!!
--  作者:wason21cn
--  发布时间:4/24/2006 2:43:00 PM

--  
以下是引用evenbetter在2006-4-24 8:51:00的发言:
呵呵,看到楼主的帖子的时候突然有一个想法,如果现在的OWL编辑器能够作到像现在的eclipse这种计算机语言编辑环境一样就好了,也就是说,当我在使用编辑器构建本体的时候,每作一步都有像eclipse那样给出可能会出错的地方,也就是说错误提示功能

或许这个是个不错的方向,嘿嘿,个人之言~!



像eclipse一样每一步构建ontology提示错误也许能够提供语法结构上的错误,但是很难找到语义上的错误,从完整性的角度来说,找出这样的错误无疑是徒劳的。


--  作者:wolfel
--  发布时间:4/24/2006 3:38:00 PM

--  
WWW2005上的论文,可以参考一下

Debugging OWL Ontologies
B. Parsia, E. Sirin, A. Kalyanpur, (University of Maryland)

http://citeseer.ist.psu.edu/733940.html


--  作者:wolfel
--  发布时间:4/24/2006 3:40:00 PM

--  
以下是引用wason21cn在2006-4-24 14:43:00的发言:
[quote]以下是引用evenbetter在2006-4-24 8:51:00的发言:
呵呵,看到楼主的帖子的时候突然有一个想法,如果现在的OWL编辑器能够作到像现在的eclipse这种计算机语言编辑环境一样就好了,也就是说,当我在使用编辑器构建本体的时候,每作一步都有像eclipse那样给出可能会出错的地方,也就是说错误提示功能

  或许这个是个不错的方向,嘿嘿,个人之言~!
[/quote]


像eclipse一样每一步构建ontology提示错误也许能够提供语法结构上的错误,但是很难找到语义上的错误,从完整性的角度来说,找出这样的错误无疑是徒劳的。


是啊,就像VS在编写C++程序的时候也是可以提示语法错误的,但这个和本体debugging是两码事


--  作者:ganmin
--  发布时间:4/24/2006 4:37:00 PM

--  
以下是引用admin在2006-4-23 22:01:00的发言:
但是很多帖子都是提问性质的,技术交流的帖子好像很少
~~~~~~~~~~
的确如此。

希望大家能够少些提问,多谢交流。
这并不是说禁止大家问问题,而是建议大家在问问题时,自己先想一下,给出自己的想法。我觉得这样的交流才是有效的,积极的。相信大家都能理解这个道理。


不同意admin的观点,,,问问题不是交流么??问问题之前,问问题的人肯定想过啊。再说,上这个网站的人大多数都是新手,(语义网本来就刚刚起步),他们希望能得到高手的指点,帮助,。提问可以节省时间,如果有人提问了,你不想回答,你可以不看啊。。又没有碍你什么事。(没有恶意,只是找不到更好的词)

“技术交流的帖子好像很少”,不关“很多帖子都是提问性质的”事。CSDN上面都是在人提问,,觉得很好啊。。如果有人想把自己的研究成果心得给别人看可以发表文档,文章。

有人提问是好事,,不然,这个论坛就冷清了,,有一个“语义网研究论坛”上面没有什么人气,大家就都不想进出了。你喜欢一个冷清的论坛么??

以上只是发表个人观点,不是搞攻击。。



--  作者:ganmin
--  发布时间:4/24/2006 4:41:00 PM

--  
1
--  作者:wolfel
--  发布时间:4/24/2006 8:05:00 PM

--  
admin的意思是有了自己的一些工作和想法,拿到这里来交流,请别人提供意见和建议。这样的帖子应该更有质量,比简单的提问帖子要好很多。

因为SW在国内是刚刚起步,这里的大部分问题只要稍微查查资料,读读文献都是可以解决的。


--  作者:admin
--  发布时间:4/24/2006 11:24:00 PM

--  
回第11楼和第13楼

sorry,  我没表达清楚。

其实我只是建议大家不要发只包含 “什么是...”,“如何....” 这样内容的帖子。
希望大家在发问题的时候,能够描述一下自己目前的看法、理解,或者目前对那些方面存有疑问,看过那些资料,那些资料说了些什么。而不是把这里当成baidu知道,只为求一个答案,而不是为了真正的问题(以及延伸的问题)搞懂。

再次重申,论坛从不禁止发表哪怕是看起来再简单不过的问题。不过如果能在提问题的时候,多给一点信息,多给出反馈,这样就从单纯的问-答,变成我们所提倡的交流了。


--  作者:evenbetter
--  发布时间:4/25/2006 9:14:00 AM

--  
以下是引用wolfel在2006-4-24 15:40:00的发言:
[quote]以下是引用wason21cn在2006-4-24 14:43:00的发言:
[quote]以下是引用evenbetter在2006-4-24 8:51:00的发言:
  呵呵,看到楼主的帖子的时候突然有一个想法,如果现在的OWL编辑器能够作到像现在的eclipse这种计算机语言编辑环境一样就好了,也就是说,当我在使用编辑器构建本体的时候,每作一步都有像eclipse那样给出可能会出错的地方,也就是说错误提示功能

   或许这个是个不错的方向,嘿嘿,个人之言~!
  [/quote]

  
  像eclipse一样每一步构建ontology提示错误也许能够提供语法结构上的错误,但是很难找到语义上的错误,从完整性的角度来说,找出这样的错误无疑是徒劳的。
[/quote]

是啊,就像VS在编写C++程序的时候也是可以提示语法错误的,但这个和本体debugging是两码事


我得意思是说:在你构建本体的时候提供一些基本的检查功能,譬如我们现在用protege建本体之后,如果想检测自己的本体是否一致性满足,就需要下载racer,打开racer然后再从菜单里选择执行一致性检查, 但是我觉得完全可以把一致性检查的集成到protege里面,当你在你的本体库中添加一个新类的时候,如果引起了一致性冲突可以自动提示

以上想法的实现我觉得应该是比较容易的

这个想法只是看了楼主的帖子突然想到的,和ontology debugging没有什么联系,
是我没有说清楚,:)。


--  作者:wolfel
--  发布时间:4/25/2006 11:22:00 AM

--  
目前的一些工作还是使用racer作为推理后台的,其实这倒也无所谓,顶多就是稍微麻烦了一点。

Maryland University的James Hendler小组把这个功能集成在他们的Swoop本体编辑系统中,但是可能不是实时的检查,因为racer对本体做一个相容性检查是非常耗时的。


--  作者:Ambrosia
--  发布时间:4/25/2006 12:10:00 PM

--  
清一色的boy……
好文!顶一下
--  作者:wolfel
--  发布时间:4/25/2006 1:35:00 PM

--  
嗯,难得有本体MM出现,顶一下~;p
--  作者:Ambrosia
--  发布时间:4/25/2006 4:23:00 PM

--  
to 18 stairs

handshake

下回审我的文章高抬贵手;P


--  作者:iamwym
--  发布时间:4/25/2006 5:07:00 PM

--  
汗楼上
--  作者:Ambrosia
--  发布时间:4/25/2006 5:53:00 PM

--  
开玩笑,呵呵。谁知道谁是谁,不过我知道你是谁,呵呵
--  作者:wolfel
--  发布时间:4/25/2006 7:08:00 PM

--  
啊??你怎么知道我是谁??
--  作者:Ambrosia
--  发布时间:4/25/2006 7:54:00 PM

--  
faint, it refers to iamxxx. 瞧某人紧张得,哈哈
--  作者:wolfel
--  发布时间:4/25/2006 10:19:00 PM

--  
呵呵,要讲清楚嘛
--  作者:baojie
--  发布时间:12/1/2006 8:10:00 PM

--  
欢迎提问题. 不过也有很多问题, 用google查一下就有了, 或者直接去看看最近的论文集就可以了. 最讨厌的是直接要代码的. Google都不愿意用的人实在是...

以下是引用ganmin在2006-4-24 16:37:00的发言:

不同意admin的观点,,,问问题不是交流么??问问题之前,问问题的人肯定想过啊。再说,上这个网站的人大多数都是新手,(语义网本来就刚刚起步),他们希望能得到高手的指点,帮助,。提问可以节省时间,如果有人提问了,你不想回答,你可以不看啊。。又没有碍你什么事。(没有恶意,只是找不到更好的词)

“技术交流的帖子好像很少”,不关“很多帖子都是提问性质的”事。CSDN上面都是在人提问,,觉得很好啊。。如果有人想把自己的研究成果心得给别人看可以发表文档,文章。
  
有人提问是好事,,不然,这个论坛就冷清了,,有一个“语义网研究论坛”上面没有什么人气,大家就都不想进出了。你喜欢一个冷清的论坛么??

以上只是发表个人观点,不是搞攻击。。





--  作者:coco
--  发布时间:12/1/2006 8:45:00 PM

--  
支持啊。学习中
--  作者:northenstar
--  发布时间:4/20/2007 4:57:00 PM

--  
想问一下楼主,为什么是找最小公理集,通过公理集来说明是导致本体错误呢
--  作者:wason21cn
--  发布时间:4/22/2007 7:48:00 PM

--  
如果你输入的一个tbox本身就是一个正确的,那么整个tbox可以说是一个explanation对于一个subsumption来说,所以找最小的。
--  作者:pig-can
--  发布时间:4/23/2007 2:37:00 PM

--  
俺刚读了 handbook 的第二章推理算法之前的部分,一点浅见,期待批评:找一个语义图中导致不一致的节点/关系的错。

首先,考虑在编辑状态下的时候,你很难说当你加入一个概念节点的时候出现Inconsistent 就说明了当前的节点的公理或者断言就一定是错误的,因为还有可能是由于在前面出现的错误没有足够的条件被发现出来。

其次,当在一个图中出现一个不一致节点的时候,这个不一致的关系会辐射波及出去,直道形成一个原语义图的一个子图。因此,在建设本体的时候,“不一致” 的不是某一个概念的公理或断言,而且是一个子图。

第三,对一个子图中,考虑修改的代价,比方说按照修改公理或断言的数目和其权值之积来考虑。能使不一致到一致经过最小修改代价所涉及到的公理定义或断言,可以assumption为最有可能出问题的节点。

以下是引用wason21cn在2006-4-23 20:02:00的发言:
来这个论坛很长时间,从来没有发过贴,感觉现在虽然论坛的人气不错,但是很多帖子都是提问性质的,技术交流的帖子好像很少,做论文做了一些时间,想写一些关于自己论文的东东,希望大家能够交流。
当我们构建ontology的时候,能不能有一个标准的构建方法能使之是一个正确的ontology?当分类的时候,引用lan Horrock的话说,”Take a group of things and ask what they have in common.” 什么叫in common?也许从不同的角度有不同的in common, 所以说如何构建一个完美(consistency)的ontology从来没有给出一个非常统一的标准,而且也不好给出一个标准。  再者,现在的reasoner都是先给出一个ontology,然后在基于这个ontology上进行推理。 所以我们的方法是, 在构建ontology的过程中先不考虑正确性,当我们构建完这个ontology,先利用现在的reasoner比如racer,fact对于所有出现在这个ontology的concept找出所有的unsatisfiable concept。为什么这样做? 因为如果这个ontology是不正确的,就是因为在定义一些concept的时候出现了问题,比如说多定义或者不正确的定义,即导致这个ontology的原因就是因为这些unsatisfiable concept。所以说如果能够修改这些unsatisfiable concept使之正确,那么ontology也就是正确的了。
首先给出两个关键字:explaination和correction。通常来说,当我们debugging一个ontology的时候,首先找出explaination(即导致这个ontology不正确的原因),然后在进行correction(修改这个ontology使之正确), 这里我们先讨论第一步,找出explaination。首先看一个例子:

按此在新窗口浏览图片
可以知道这是一个inconsistent的ALC的Tbox,通过已有的一些reasoner,我们可以找出unsatisfiable concept是{A1, A3, A6, A7}, 对于这个reasoner来说,我们只能找出这些不正确的概念,但是有一些信息我们是很感兴趣的,比如说A1的不正确性是因为A3,A3的不正确性是因为在定义A4和A5有冲突,这些信息在debugging这个Tbox的时候是非常有用的,因为这就是导致这个ontology错误的原因。 所有我们需要有一个算法能找出这一类的信息(explaination)。

我们要做的是什么?比如给这一个Tbox,和一个unsatisfiable concept  A3,算法给出的这个Tbox的最小的子Tbox,它包含了导致这个 A3不正确的原因,而且是最小的, 在这个例子中是{Ax3, Ax4, Ax5}。 很明显,当我们要修改这个Tbox一些的axion的时候,我们不需要考虑这个Tbox所有的axiom,比如这里的A7,根本和A3没有关系。具体说到这个算法, 过程说起来就比较复杂了,而且对于不同的Tbox而言,会有不同的算法定义, 发这个帖子的目的只是给出关于debugging一些大概的思想。可以给点这个算法的思想,输入是(a: A3)(label), 这里a是一个新的individual name,A3是concept name, label就是我们需要的explaination,通过一个tableau算法,我们要考虑到所有的分支使之不正确, 当关于a的信息出现冲突是,这个时候的label就是我们需要的。而label的产生就是当执行tableau算法的时候,加入一些相关的axiom。
对于debugging一个ontology来说,上面提到的仅仅只是第一步找到错误的过程,而且现在关于这类问题也都是在这个阶段,我现在的论文也是找一个DL语言的explaination,算法跟上面提到的差不多。 至于第二个阶段correction,也会是一个很有兴趣的问题,如何修改explaination使之正确,修改的过程也许会影响到其他concept的正确性问题,都是需要考虑的问题。
Ok, 第一次发帖,希望大家支持。

[此贴子已经被作者于2006-4-23 22:11:33编辑过]



--  作者:zeiffel
--  发布时间:4/24/2007 9:48:00 AM

--  
以下是引用admin在2006-4-24 23:24:00的发言:
回第11楼和第13楼

sorry,  我没表达清楚。

其实我只是建议大家不要发只包含 “什么是...”,“如何....” 这样内容的帖子。
希望大家在发问题的时候,能够描述一下自己目前的看法、理解,或者目前对那些方面存有疑问,看过那些资料,那些资料说了些什么。而不是把这里当成baidu知道,只为求一个答案,而不是为了真正的问题(以及延伸的问题)搞懂。

再次重申,论坛从不禁止发表哪怕是看起来再简单不过的问题。不过如果能在提问题的时候,多给一点信息,多给出反馈,这样就从单纯的问-答,变成我们所提倡的交流了。



说的很好!顶


--  作者:feng2007
--  发布时间:4/24/2007 10:35:00 AM

--  
谢谢!!!
--  作者:kenny917
--  发布时间:4/25/2007 9:56:00 PM

--  
以下是引用admin在2006-4-24 23:24:00的发言:
回第11楼和第13楼

sorry,  我没表达清楚。

其实我只是建议大家不要发只包含 “什么是...”,“如何....” 这样内容的帖子。
希望大家在发问题的时候,能够描述一下自己目前的看法、理解,或者目前对那些方面存有疑问,看过那些资料,那些资料说了些什么。而不是把这里当成baidu知道,只为求一个答案,而不是为了真正的问题(以及延伸的问题)搞懂。

再次重申,论坛从不禁止发表哪怕是看起来再简单不过的问题。不过如果能在提问题的时候,多给一点信息,多给出反馈,这样就从单纯的问-答,变成我们所提倡的交流了。




很同意admin的说法,
其实admin的意思只是说大家问问题前可以先试着通过Baidu or Google搜索解决,或者找一些这方面综述性的文章先了解一下,而不是一有什么不了解就一个问题放上来,有些问题根本就很大,不是三言两语就可解决的。在提出问题之前应该先经过自己的努力和思考吧。不然论坛版面上好多这样的问题就不太好了。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
197.266ms