Page 241 - 《软件学报》2020年第9期
P. 241
2862 Journal of Software 软件学报 Vol.31, No.9, September 2020
11. rdf:type med:medicine.disease,
12. med:medicine.disease_cause,
13. med:medicine.risk_factor,
14. med:medicine.symptom.
15. med:m.0c58k rdfs:label “糖尿病”@zh;
16. rdfs:label “Diabetes mellitus”@en;
17. rdf:type med:medicine.disease,
18. med:medicine.disease_cause,
19. med:medicine.risk_factor,
20. med:medicine.symptom.
21. med:m.07x16med:medicine.disease.risk_factors med:m.0c58k.
22. med:m.07x16 med:medicine.symptom.symptom_of med:m.0c58k.
第 1 行~第 4 行为对属性 med:medicine.disease.risk_factors 的定义的一个片段;第 5 行~第 8 行为对属性 med:
medicine.symptom.symptom_of 的定义的一个片段;第 9 行~第 14 行是对实例 med:m.07×16 的声明,该实例被声
明为了多种类型;第 15 行~第 20 行是对实例 med:m.0c58k 的声明,该实例也被声明为了多种类型;第 21 行、第
22 行是对实例 med:m.07×16 和 med:m.0c58k 之间语义关系的声明.基于属性 med:medicine.disease.risk_factors
的定义和第 21 行中的实例语义关系声明,可以推理出在第 21 行中的实例 med:m.07×16 的类型为 med:medicine.
disease,实例 med:m.0c58k 的类型为 med:medicine.risk_factor;而基于属性 med:medicine.symptom.symptom_of
的定义和第 22 行中的实例语义关系声明,可以推理出在第 22 行中的实例 med:m.07×16 的类型为 med:medicine.
symptom,实例 med:m.0c58k 的类型为 med:medicine.disease.
在执行 SPARQL 检索时,语义也是很清晰的.例如,在以上 O medicine 的本体片段中,实例 med:m.0c58k 被同时
声明为了 4 种类型:med:medicine.disease,med:medicine.disease_cause,med:medicine.risk_factor 和 med:medicine.
symptom.当分别检索这 4 种类型的实例时都会包含 med:m.0c58k,这也符合医学上的解释:在医学上,糖尿病是
一种疾病,同时也是其他疾病的诱因、风险因素和表现症状.在基于图模式执行复杂语义关联的检索时,基于实
例的类型声明和属性的定义域和值域限定,可以检索出正确的结果.如果语义关系中的实例类型不符合属性的
定义域和值域限定,在本体构建过程中可以通过语义一致性检查进行正确识别,从而进行修正.例如 Protégé 就
提供了本体创建过程中的语法和基于推理的语义一致性检查机制.
在图 2(a)所示的情况中,类似“泌尿道感染”、“糖尿病”这样属于多种类型的实例可能并不是很多,大部分病
因可能只是一种病因,而不是一种疾病;同样,大部分症状可能只是代表一种症状,而不属于疾病.而有些情况下,
几乎所有实例都可以映射到多种类型下的某种子类型,如图 3(a)所示的专家视图.在图 3(a)中,运动项目从不同
角度进行分类,而羽毛球(单打)、羽毛球(双打)实例可以映射到每种分类方法中的某个子类中.在此专家视图中,
虽然将运动项目按不同科目类型、不同强度、不同能量代谢类型和不同运动益处进行分类,但它们都属于运动
项目的子类,对于描述运动项目的属性和语义关系,也并不需要按子类的不同进行区分.而在图 2(a)所示的专家
视图中,疾病、症状、病因和风险因素是完全独立的一级概念,它们在语义上也是完全不同的.
约定 4. 在专家视图中,所有实例都归属于同一祖先类下的不同子类时,在对应的本体视图中,可以将这些
子类建模为类型实例,实例对象通过分类属性连接这些类型实例.
基于约定 4,对于图 3(a)所示的专家视图,可以建立如图 3(b)所示的本体视图.在如图 3(b)所示的本体视图
中,针对运动项目实例,只建立了一个运动项目一级分类,并将所有运动项目建模为其实例;而将专家视图中的
不同特化(specialization)分类建模为类型实例,同时增加多个对应的分类属性来连接运动项目实例和这些类型
实例.