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

2019-03-29 10:29

在上面的例子中,Drug类的iri是‘http://test.org/pharmaco/Drug’,但是类属于‘http://test.org/onto’这个本体。

Owlready2拥有三种显示命名空间的方法:

(1)namespace类属性(attribute);

(2)with namespace:语句;

(3)如果不提供,则命名空间从第一个父类处继承。

下面的例子阐明了以上三种方法:

3. 更改定义在其他本体中的类

在OWL中一个本体可以修改一个在其他本体中定义的类。

在Owlready2中,以上特性可以使用‘with namespace:’语句实现。每一个被创建(删除)在‘with namespace:’语句之内的RDF三元组都存在于那个语句指定的namespace之内。

下面的例子在第一个本体中创建Drug类,并且声明Drug是第二个本体中的Substance的实例。

Worlds

Owlready2将所有的三元组存储在‘World’对象中,它也可以同时处理多个Worlds。‘default_world’是默认使用的World。

1. 持久的world:将quadstore存储在SQLite3文件中

Owlready2使用一个优化的quadstore。这个quadstore默认存储在内存中,但是它也可以被存储在SQLite3文件中。这就保证了持久化:一个被加载的或创建的本体存储在文件中以供以后使用。这对于大型本体来说很有趣:加载一个大型本体需要时间,但是打开一个SQLite3文件只需要几分之一秒(即使很大)。并且如果你仅仅需要访问几个本体的实体的话,应当避免在内存中加载巨型本体。

World的.set_backend()函数将SQLite3文件名关联到quadstore:

default_world.set_backend(filename=\3\

如果quadstore非空,当调用.set_backend()函数时RDF三元组会被自动地复制。然而这个操作会有很高的性能消耗(尤其是三元组很多时)

当时用持久化时必须调用World的.save()函数以保存SQLite3文件中的quadstore的实际状态。

在文件中保存quadstore不会损耗Owlready2的性能(事实上,将quadstore保存在硬盘上Owlready2允许地会略快一些)

2. 使用多个孤立的Worlds

Owlready2支持多个、孤立的Worlds。如果你想要加载同一个本体的多个版本,例如本体在进行推理前后的版本,会十分有趣。

你可以使用World类来创建新的World:

本体在这之后就可以使用World的.get_ontology()方法创建和加载本体(当在多个Worlds中使用时,这个方法会替代全局的get_ontology()函数):

onto = my_world.get_ontology(\

World对象可以像伪字典一样使用以通过iri来访问实体(当在多个Worlds中使用时,这个方法会替代全局的IRIS伪字典):

my_world[\

最后,推理器可以在指定的World中运行:

sync_reasoner(my_world) 3. 使用RDFlib执行SPARQL查询

Owlready2使用一个优化的RDF quadstore。它也可以被当做RDFlib图来访问:

graph=default_world.as_rdflib_graph()

RDFlib图也可以被用来执行SPARQL查询:

r=list(graph.query(\b.org/jiba/ontologies/2017/0/test#ma_pizza> ?p .}\


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

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

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

马上注册会员

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