ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:804.78KB ,
资源ID:28426372      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28426372.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(owlready2Python面向本体编程软件包中文文档.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

owlready2Python面向本体编程软件包中文文档.docx

1、owlready2Python面向本体编程软件包中文文档from owlready2 import *get_ontology()方法,传入一个iri作为本体的标识,iri可以是不真实存在的,如果此iri是一个已存在的本体的标识,则会返回该本体;有些本体使用#分割本体名和本体内的实体名,有些使用/,owlready2默认使用#。如果想使用/则iri应该以/结尾onto = get_ontology(http:/test.org/onto.owl)# = http:/test.org/onto.owl#entityonto = get_ontology(http:/test.org/onto)#

2、 = http:/test.org/onto#entityonto = get_ontology(http:/test.org/onto/)# = http:/test.org/onto/entity创建一个全新空白本体:从已有的OWL文件中加载本体from owlready2 import *仍然使用get_ontology()方法,但传入的iri之前要加上file:/,这样此方法就认为是从已有文件中加载本体path = file:/C:/Users/朗语/Desktop/语义检索/数据/CFNOnto1.owlCFNOnto = get_ontology(path).load() .cal

3、l()方法从本地或者互联网中加载一个本体的副本,如果调用多次call()方法则只会加载一次访问本体内容:你可以用.运算符来访问本体内容。这种方式支持访问本体中定义的Class、Instances、Properties、Annotation Properties。的访问方式也支持。1. 本体类属性:1. .base_iri:本体的标识iri2. imported_ontologies:已导入的本体列表2. 本体类方法:1. .classes():返回一个本体内定义的Class的生成器2. .individuals():返回一个本体内定义的个体(或者实例)的生成器3. .object_proper

4、ties() : returns a generator for ObjectProperties defined in the ontology4. .data_properties() : returns a generator for DataProperties defined in the ontology5. .annotation_properties() : returns a generator for AnnotationProperties defined in the ontology6. .properties() : returns a generator for

5、all Properties (object-, data- and annotation-) defined in the ontology7. .disjoint_classes() : returns a generator for AllDisjoint constructs for Classes defined in the ontology8. .disjoint_properties() : returns a generator for AllDisjoint constructs for Properties defined in the ontology9. .disjo

6、ints() : returns a generator for AllDisjoint constructs (for Classes and Properties) defined in the ontology10. .different_individuals() : returns a generator for AllDifferent constructs for individuals defined in the ontology11. .get_namepace(base_iri) : returns a namespace for the ontology and the

7、 given base IRIfrom owlready2 import *path = file:/C:/Users/朗语/Desktop/语义检索/数据/CFNOnto1.owlCFNOnto = get_ontology(path).load() print(IRIShttp:/www.semanticweb.org/apple/ontologies/2015/10/untitled-ontology-38#框架)-CFNOnto1.框架-使用IRIS伪字典可以根据full IRI访问本体的实体(必须先加载本体)简单的查询 可以用.search()方法进行简单的查询,传入一些关键值参数指

8、定查询要求 iri, for searching entities by its full IRI type, for searching Individuals of a given Class subclass_of, for searching subclasses of a given Class is_a, for searching both Individuals and subclasses of a given Class any object, data or annotation property name导入其他本体: 如同一个python文件可以导入其他python模

9、型一样,也可以向一个本体中导入其他本体,例如:CFNOnto.imported_ontologies.append(other_onto)将本体保存到文件: 可以用.save()方法保存本体,默认的无参数方法将会把本体保存到onto_path中的第一条路径中;.save也可接受两个参数来指定保存到的文件和保存格式,默认格式为RDF/XMLonto.save(file = filename or fileobj, format = rdfxml)类和类实例1. 创建类通过继承owlready2.Thing类来在本体中创建类;本体类属性(attribute)可以被用于将你的类和指定的本体相连接,如

10、果创建类时没有指定属性,则属性将从父类中继承。owlready2中定义的Thing类中的namespace属性可以用来创建本体类的full IRIfrom owlready2 import *onto = get_ontology(http:/test.org/onto.owl)class Drug(Thing):namespace = onto#或者可以这样写,用with关键字加namespace的值with onto: class Drug(Thing): pass#两者效果相同可以用with在同一namespace下创建多个类Thing类中定义的iri属性保存有类的full IRIpri

11、nt(Drug.iri)-http:/test.org/onto.owl#Drug-可以通过直接修改类的iri属性来更改类的iri2. 创建和管理子类通过继承一个已有的本体类来创建子类,在上例中Drug就是Thing的子类,而Thing是所有本体类的父类。.is_a属性保存有当前类的一个父类列表,也可以通过修改列表的内容来增加或移除一些父类.descendants()方法返回当前类的所有子类的集合;.ancestors()方法返回当前类的所有父类集合;两种方法都包括当前类自身,但是不包括非实体类(python里的集合是无序的,所以集合里的元素顺序和类的等级无关)3. 动态地创建类import

12、typesNewClass = types.new_class(NewClassName, (SuperClass,), kwds = namespace : my_ontology )利用python的types模块可以动态地创建类4. 创建相等的类.equivalent_to属性保存当前类的所有相等类的列表,可以通过修改此属性的值来增加或删除相等类5. 创建类实例创建类实例的方法和在Python中创建类实例相同也可以在创建类实例时指定多个额外的关键词参数,如namespace值和各种本体中的类属性值。创建完成的类实例可以立即访问;类名.instances()方法会返回一个生成器,可以用于遍

13、历或者创建一个包含该类所有实例的列表;实例也包含有.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()这个全局函数可以被

14、用来销毁一个实体。它将实体从本体以及quad store中移除。Owlreaddy2和Protege4在销毁实体时的处理相似:将实体所有的相关的关系也一并移除,所有相关的类、constructs以及blank nodes也一并移除属性1. 创建属性一个新的属性可以用继承一个ObjectProperty类或者DataProperty类来创建(两个都是Owlready2中的类)。这两个类中的domain和range属性可以用来指定本体中属性的domain和range,这两个类属性为列表类型,因为OWL允许为本体属性指定多个域,但是最终的domain或者range为列表中各元素的交集。下例在本体中建

15、立了两个类,Drug和Ingredient以及一个关联两者的ObjectProperty属性也可以用以下的方法创建ObjectProperty,作用同上,其中domain range将取代ObjectProperty这个父类2. 创建一个关系在本体中,关系是一个三元组(主语、谓语、宾语),其中本体的属性用作谓语,类实例或者文字类型作为主语和宾语,具体谁做主语谁做宾语会在属性的domain和range中定义。使用主语的Python属性(attribute)可以获取或者创建一个关系,属性(attribute)名称与本体属性类(Property)名称相同可以使用instance_1_name.pro

16、perty_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 l

17、anguage 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_ingredie

18、nt互为相反属性。就像:“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_i

19、ngredient.append(B),最后才创建反转属性is_ingredient_of,则B.is_ingredient_of中不会有A5. 函数型属性和反转的函数型属性函数型属性是一种属性值为特定数据类型的属性,继承FunctionalProperty类来创建函数型属性。反转的函数型属性的反转属性是函数型属性,可以通过继承InverseFunctionalProperty创建。6. 创建子属性通过继承已经创建的属性(或类)来创建子属性(或子类)。Owlready2暂时不支持在子属性被定义后自动更新父属性,如果需要这个功能,使用get_relations()全局函数。7. 将Python别

20、称(alias)关联到属性在本体中属性名一般都很长,例如has_for_ingredient,但是在Python中短的属性名更常见一些,如ingredients。Owlready2允许使用ANNOTATIONS二维列表来为属性名重命名。注意,此时在属性类里,被声明别名的属性仍然只能使用原名。例如如果要创建has_for_ingredient的子属性,应该是 class sub_prop(has_for_ingredient),写成 class sub_prop(ingredients)无效。约束(是一种特殊的本体类)1. 属性约束例如,Placebo是一个没有活性成分(Active Princ

21、iple)的药物在上例中,has_for_active_principle.some(ActivePrinciple)返回一个至少有一种ActivePrinciple的类。NOT()函数返回一个类的补集,&运算符求两个类的交集。所以这行代码定义了一个Placebo类,并且声明它与Drug类和没有任何ActivePrinciple的类的交集类等价。Owlready2现在支持以下的约束形式: some : Property.some(Range_Class) only : Property.only(Range_Class) min : Property.min(cardinality, Rang

22、e_Class) max : Property.max(cardinality, Range_Class) exactly : Property.exactly(cardinality, Range_Class) value : Property.value(Range_Individual / Literal value)上例说明DrugAssociation是一种有至少两种ActivePrinciple的Drug。2. 逻辑运算符Owlready2提供了以下的逻辑运算符,用于类之间的计算: & : and operator (intersection). For example: Clas

23、s1 & Class2 | : or operator (union). For example: Class1 | Class2 Not() : not operator (negation or complement). For example: Not(Class1)3. One Of构造器在本体中,One Of语句被用来通过扩展来定义类,例如通过列举出类的实例而不是定义它的属性来定义类。4. Inverse-of构造器Inverse-of构造器返回一个属性的反转,不必新建一个属性5. 有约束的数据类型一个被约束的数据类型是一种值被限制的数据,例如整数被限制在0到20。全局函数Const

24、rainedDataType()从一个基础数据类型中创建一个约束数据类型,它有如下可选参数: length min_length max_length pattern white_space max_inclusive max_exclusive min_inclusive min_exclusive total_digits fraction_digits6. 属性链属性链支持链接两个属性,使用PropertyChain()函数传入一个包含两个要被链接的属性的列表:PropertyChain(prop2, prop2)不相交、开放以及本地限制的推理(Disjointness, open an

25、d local closed world reasoning)OWL默认世界是开放的,例如所有在本体中生命的东西都被认为不是错的,而是可能的(这种说法一般叫做开放世界假设)。因此如果想要让事物或事实是错的,就一定要在本体中明显地声明出来。1. 不相交的(disjoint)类如果没有一个个体同时属于这几个类,那就认为这几个类不相交。类的不相交性(disjointness)是用AllDisjoint()来创建,它接收一个类的列表作为参数。在下例中,有两个类Drug和ActivePrinciple,我们可以声明他们是不相交的(根据开放世界假设,我们必须显性地将他们不相交的这一事实声明出来)。3. 不

26、相交的属性使用AllDisjoint()也可声明不相交的属性4. 不同的个体在OWL中,两个个体有可能会被认为是相同的个体,除非他们被显性地声明他俩不同。不同性之于个体就像不相交之于类。下例创建了两个ActivePrinciple实例并且声明他俩不同。在Owlready2中AllDifferent()函数和AllDisjoint()函数事实上是一样的,不一样的仅仅是参数。如果传来了类,那它就是AllDisjoint(),如果传来实例那就是AllDifferent()。5. 查询和修改不相交.disjoint()方法返回一个生成器(Python 里的generator)以遍历某个类、实例、属性的

27、所有不相交的对象。上例中的.entities属性可以修改,通过修改这个属性就可以增加或删除不相交的对象。OWL也提供了disjointWith 和 propertyDisjointWith关系来设定只涉及两个元素的不相交。Owlready26. 关闭个体开放世界假设同样意味着一个给定个体的属性并不会限制于被声明出来的那些。例如,你创建了一个有单个ActivePrinciple的Drug实例,但并不意味着它只有单个ActivePrinciple。在上例中,my_acetaminophen_drug是一个有一个ActivePrinciple的药物,但是它可能还有别的ActivePrinciple。

28、如果你想让my_acetaminophen_drug是一个只有acetaminophen作为ActivePrinciple的药物,你必须显性地声明它。在约束这一章中,我们知道Property.only(Range_Class)这个函数只接受类域作为参数,所以我们使用OneOf()这一函数来将acetaminophen这个个体转换为类。你也许已经注意到,开放世界假设这一原则经常会导致乏味的一长列的AllDifference或者其他约束。幸运的是,Owlready2提供了close_world()这一函数以自动地关闭一个实例。close_world()会自动地添加ONLY约束,它接收一个可选参数:

29、一个供关闭的属性列表(传入一个实例则会关闭以该实例为domain的所有属性)。7. 关闭类close_world()也接受一个类,在这种情况下,它会关闭这个类以及它的子类和个体。默认地,当close_world()没有被调用时,本体实施开放世界推理。通过选择你想关闭的类和个体,close_world()函数允许OWL实施本地关闭世界推理(loal closed world reasoning)。8. 关闭本体最后,close_world()也可接受一个本体。在这种情况下,它关闭本体中定义的所有的类。这相当于全关闭世界推理。混合Python与OWL3. 向OWL类中添加Python函数Pytho

30、n函数可以被定义在本体类中,在下面的例子里Drug类有一个Python函数以计算per-tablet的成本,使用两种OWL属性(这两种属性已经在Python中被重命名,见 将Python别称关联到属性 这一节)。4. 向前声明有时你也许需要向前声明一个类或者属性。如果一个类或者属性(名称相同命名空间也相同)被定义,新的定义将会继承旧的定义,但不会替代它。前一个定义创建了Drug类,后一个定义在前者基础上增加了一个is_a声明。5. 关联Python模块与OWL本体关联一个Python模块和一个本体是可行的。当Owlready2加载本体时,它会自动地引入此Python模块。这可以通过python_module注释来完成,这需要在本体上设置。它的值必须是你要关联的Python模块的名字,具体的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1