owlready2 Python面向本体编程软件包中文文档(2)

2019-03-29 10:29

也可以在创建类实例时指定多个额外的关键词参数,如namespace值和各种本体中的类属性值。

创建完成的类实例可以立即访问;类名.instances()方法会返回一个生成器,可以用于遍历或者创建一个包含该类所有实例的列表;实例也包含有.equivalent_to()方法

6. 属于多个类的实例

Owlready2中也支持实例属于多个类的情况,类实例有.is_a属性,此属性和Class.is_a相似。创建属于多个类的实例时,要先创建单类实例,然后通过向.is_a中添加类名来增加它所从属的类。

Owlready2会自动创建一个隐藏的类,这个类继承自Drug以及BloodBasedProdut。这个隐藏类在a_blood_based_drug.__class__中可见,但在a_blood_based_drug.is_a中不可见

7. 销毁实体

destroy_entity()这个全局函数可以被用来销毁一个实体。它将实体从本体以及quad store中移除。Owlreaddy2和Protege4在销毁实体时的处理相似:将实体所有的相关的关系也一并移除,所有相关的类、constructs以及blank nodes也一并移除

属性

1. 创建属性

一个新的属性可以用继承一个ObjectProperty类或者DataProperty类来创建(两个都是Owlready2中的类)。这两个类中的domain和range属性可以用来指定本体中属性的domain和range,这两个类属性为列表类型,因为OWL允许为本体属性指定多个域,但是最终的domain或者range为列表中各元素的交集。

下例在本体中建立了两个类,Drug和Ingredient以及一个关联两者的ObjectProperty属性

也可以用以下的方法创建ObjectProperty,作用同上,其中‘domain >> range’将取代ObjectProperty这个父类

2. 创建一个关系

在本体中,关系是一个三元组(主语、谓语、宾语),其中本体的属性用作谓语,类实例或者文字类型作为主语和宾语,具体谁做主语谁做宾语会在属性的domain和range中定义。

使用主语的Python属性(attribute)可以获取或者创建一个关系,属性(attribute)名称与本体属性类(Property)名称相同

使

instance_1_name.property_name.append(instance_2_name)

instance_1_name.property_name.remove(instance_2_name)方法来增加或者删除关系的宾语。

3. 数据属性

数据属性是本体中属性的range为特定数据类型的属性,Owlready2目前支持以下数据类型:

? ? ? ? ? ? ? ? ?

int

float bool

str (string)

owlready2.normstr (normalized string, a single-line string) owlready2.locstr (localized string, a string with a language associated) datetime.date datetime.time datetime.datetime

上例创建了一个has_for_synonym的数据属性,它的range为str类型,并且为acetaminophen这一实例创建了has_for_synonym关系;效果相同的数据属性也可以如下图所示创建:

4. 反转属性(Inverse Properties)

Inverse Properties的定义:如果两个属性以相反的方式(domain和range相反)表达同样的意思,则这两个属性互为相反属性。如is_ingredient_of和has_for_ingredient互为相反属性。就像:“a drug A has for ingredient B” 与“B is ingredient of drug A”含义相同。

在Owlready2中定义相反属性需要先定义属性的domain和range然后在属性类的inverse_property的属性(attribute)中指定与它相反的属性名。

Owlready2会自动处理反转属性,如果设置A is_ingredient_of B则会自动设置B has_for_ingredient A。但是这只会在声明反转属性之后生效,例如在先创建A类、B类以及属性has_for_ingredient,再设置A.has_for_ingredient.append(B),最后才创建反转属性is_ingredient_of,则B.is_ingredient_of中不会有A

5. 函数型属性和反转的函数型属性

函数型属性是一种属性值为特定数据类型的属性,继承FunctionalProperty类来创建函数型属性。

反转的函数型属性的反转属性是函数型属性,可以通过继承InverseFunctionalProperty创建。

6. 创建子属性

通过继承已经创建的属性(或类)来创建子属性(或子类)。

Owlready2暂时不支持在子属性被定义后自动更新父属性,如果需要这个功能,使用

get_relations()全局函数。

7. 将Python别称(alias)关联到属性

在本体中属性名一般都很长,例如has_for_ingredient,但是在Python中短的属性名更常见一些,如ingredients。Owlready2允许使用ANNOTATIONS二维列表来为属性名重命名。

注意,此时在属性类里,被声明别名的属性仍然只能使用原名。例如如果要创建has_for_ingredient的子属性,应该是 class sub_prop(has_for_ingredient),写成 class sub_prop(ingredients)无效。


owlready2 Python面向本体编程软件包中文文档(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:制药厂关于生产实习报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: