找回密码
 欢迎注册
搜索
热搜: 活动 交友 discuz
查看: 2617|回复: 2

OWL建模工程方法学上的一些个人看法

[复制链接]
发表于 2007-7-24 12:01:17 | 显示全部楼层 |阅读模式
最近看到大家一些有关owl的争议,关于owl的定义,用例,适用范围和局限性。其实很正常,一个新事物的出现,到被大家接受,到流行,到批判,到最后的扬弃,这是一个经典的过程。关于owl的定义问题,是一个过程,而不是静态的。我们都知道,定义往往聚焦在事物的内涵和外延上。随着人类对事物理解的不断加深,理论的创造和发展,人类对事物的定义也是一代一代的加深和拓展,比如医学的定义,从经验医学,逐渐转向循证医学,又比如医药信息学的定义,从狭义的医学的相关软件,上升到生物医学,公共卫生的广义的信息服务。

个人觉得,一个技术,或者是方向,在没有达到工程学水平研究的时候,是很难被大规模运用的,比如大型架构的设计,开发效率和debug,易用性和易学性,共享和重用等。owl的技术,也从基本理论的研究,向大型工程学应用在拓展.定义,斯坦福给出的,就可以.不过大家需要把ontology和owl区分开来,ontology是一个偏哲学的定义,表述事物的客观实在,owl是一种基于哲学思路延伸的知识建模语言.实现基于语意网的拓展和应用.

最近看了一些文献,owl建模有好几种设计思路,这里结合自己的用例,和大家探讨一下owl建模,也为以后的医疗建模寻找一些思路。

1.首先是确定目的,我们要做什么?比如,我们需要一个带病历结构的医学模型(model),实现病例的自动分类,把个体数据上升到群体的水平上,实现流行病的预防和监控。

2.根据目的,确定设计的domain。比如,根据上面的目的,我们看到,这里牵涉到三个domain,1.临床的基本知识,2.流行病的基本知识. 3.病历的基本框架结构。

3.确定domain的Meta model,我们既然确定了domain,就要考虑如何表达这个domain,通过什么样的知识框架来表达呢?这就是meta model。说到医学基本模型,大家可以参考UMLS semantic network,或者是 SNOMED hierarchical relationship,或者Galen,大家可以看到几个高频率的抽象词汇,比如:致病源,诊断分类,症状和体征的描述,辅助检查,辅助检查的结果,描述性词汇等。这些就可以作为meta model的雏形,建出基本的框架。然后,我们需要确立框架之间的基本联系,比如致病源导致疾病,疾病有解剖相关定位等,疾病有相关的发展周期和预后,有诊断的标准和方法等。这时候,高层次抽象的对象已经被提取出来了,之间的关系也被概括了。把这些建入模型。病历结构,我们可以参照HL7 CDA,流行病模型,我们可以参照CDC网站,涉及到疾病的群体分型,

4.在meta-model的基础上,我们需要考虑如何丰满这个模型。这是一个top->down的过程,比如,我们从解剖结构开始分头部,背部,臀部等,然后头部分鼻子,耳朵,眼睛,嘴巴等,耳朵分中耳,外耳等,逐渐分解开,把concept建成模型的class。我们可以借助umls的词库,作为定义的来源和reference。

5.面向对象,这个时候的模型还只是一个taxonomy,还没有完全的面向对象,我们需要严格的面向对象整理模型,因为模型的质量影响到推理的正确性。比如:Peumonia hasAnatomiclocation Lung.

6.当三个模型整理完毕之后,我们需要集成,也就是把三个domain关联起来,比如,通过import model。 然后我们通过模型的相关性,通过class的mapping,或者restriction,或者Relationship,把三个模型关联起来,比如,病历模型的血压,可以关联到医疗模型高血压的疾病,体格检查,莫非氏症可以关联到胆囊炎。比如,临床模型的呼吸短促,咳嗽,发热可以关联到公共健康模型的流感疑似疾病。

7.建立rules, 有一些没有定律的东西,我们可以做成规则,rules.比如,如果...那么。。。

8.进行inference的测试,也就是推理测试,推理是否符合现实的所有规范。是否有悖论或者脱漏的地方。然后debug,修改模型.

9.编程,既然模型设计完了,后面就是模型驱动的编程,根据你的目的,模拟出若干个task,比如,数据录入,数据分析,决策数据展现等。然后基于task,开始软件工程的工作programming。你可以类似于数据驱动型编程,把模型当作数据库,开始写sparql,而不是sql.把存储的东西,类似于xml,存成rdf。

现在的oracle 11g beta 2已经开始支持rdf,大型的存储机制正在被优化,而且还有一些小型的数据库公司在做。你可以参考一下HP公司的jena,或者IBM公司的东东,semtek应该有更精辟的见解。

常见的做法,不是把模型大型化或者复杂化,比如若干模型集成到一起,模型的集成和软件系统的集成一样,都是大工程。大家都期待建立一些小的模型,实现一些小的服务,然后通过SOA的方法,实现大型应用。

欢迎大家提出自己的见解.

[ 本帖最后由 南京猿人 于 2007-7-24 12:23 编辑 ]
发表于 2007-7-24 14:05:33 | 显示全部楼层
非常好,终于有了一个初步认识.
发表于 2007-7-24 17:42:06 | 显示全部楼层
在我看来是项目管理的思路体系。。。
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

快速回复 返回顶部 返回列表