一个用于Python的面向本体编程的包:将OWL 2.0本体作为Python对象加载、修改、保存,并通过HermiT进行推理。包括优化的RDF四元组存储。
项目描述
Owlready2是一个用于Python 3的面向本体编程的模块。它可以管理本体和知识图,并包括优化的RDF/OWL四元组存储。
Owlready2可以
导入NTriples、RDF/XML或OWL/XML格式的OWL 2.0本体
将OWL 2.0本体导出为NTriples或RDF/XML
透明地操作本体类、实例和属性,就像它们是正常的Python对象一样
向本体类添加Python方法
使用HermiT或Pellet推理器(包含)自动分类类和实例
加载DBpedia或UMLS(使用集成的PyMedTermino2子模块,用于医疗术语)
原生支持优化的SPARQL查询
测试至1亿个RDF三元组!(但可能支持更多)
此外,四元组存储与RDFlib Python模块兼容
最后,Owlready2还可以用作ORM(对象关系映射器)——作为一个图/对象数据库,它在性能方面优于Neo4J、MongoDB、SQLObject和SQLAlchemy
Owlready由Jean-Baptiste Lamy在LIMICS研究实验室创建。它可在GNU LGPL许可证v3下使用。如果您在科学研究中使用Owlready,请引用以下文章
莱米·J·B. Owlready: 基于本体的Python编程,具有自动分类和高级构造的生物医学本体。 2017年人工智能在医学领域;80:11-28
如有问题、疑问或评论,请使用此论坛/邮件列表: http://owlready.306.s1.nabble.com
我可以用Owlready2做什么?
从本地仓库或互联网加载本体
>>> from owlready2 import * >>> onto_path.append("/path/to/your/local/ontology/repository") >>> onto = get_ontology("http://www.lesfleursdunormal.fr/static/_downloads/pizza_onto.owl") >>> onto.load()
在本体中创建新类,可能混合OWL构造和Python方法
>>> with onto: ... class NonVegetarianPizza(onto.Pizza): ... equivalent_to = [ ... onto.Pizza ... & ( onto.has_topping.some(onto.MeatTopping) ... | onto.has_topping.some(onto.FishTopping) ... ) ] ... def eat(self): print("Beurk! I'm vegetarian!")
访问本体类,并创建新实例/个体
>>> onto.Pizza pizza_onto.Pizza >>> test_pizza = onto.Pizza("test_pizza_owl_identifier") >>> test_pizza.has_topping = [ onto.CheeseTopping(), ... onto.TomatoTopping(), ... onto.MeatTopping () ]
导出为RDF/XML文件
>>> test_onto.save()
进行推理,并对实例和类进行分类
>>> test_pizza.__class__ onto.Pizza >>> # Execute HermiT and reparent instances and classes >>> sync_reasoner() >>> test_pizza.__class__ onto.NonVegetarianPizza >>> test_pizza.eat() Beurk! I'm vegetarian !
执行SPARQL查询
>>> list(default_world.sparql("""SELECT * { ?x a owl:Class . FILTER(ISIRI(?x)) }""")) [[pizza_onto.CheeseTopping], [pizza_onto.FishTopping], [pizza_onto.MeatTopping], [pizza_onto.Pizza], [pizza_onto.TomatoTopping], [pizza_onto.Topping], [pizza_onto.NonVegetarianPizza]]
从UMLS访问医学术语
>>> from owlready2 import * >>> from owlready2.pymedtermino2.umls import * >>> default_world.set_backend(filename = "pym.sqlite3") >>> import_umls("umls-2018AB-full.zip", terminologies = ["ICD10", "SNOMEDCT_US", "CUI"]) >>> default_world.save() >>> PYM = get_ontology("http://PYM/").load() >>> ICD10 = PYM["ICD10"] >>> SNOMEDCT_US = PYM["SNOMEDCT_US"] >>> SNOMEDCT_US[186675001] SNOMEDCT_US["186675001"] # Viral pharyngoconjunctivitis >>> SNOMEDCT_US[186675001] >> ICD10 # Map to ICD10 Concepts([ ICD10["B30.9"] # Viral conjunctivitis, unspecified ])
有关更多文档,请参阅源中的doc/目录。
变更日志
版本1 - 0.2
修复Windows下sync_reasonner和Hermit调用(感谢克莱尔·格拉索)
版本1 - 0.3
添加警告
接受不以'.owl'结尾的本体文件
修复加载包含不带'#'的IRI的概念的本体时的错误
版本2 - 0.1
完全重写,包括优化的quadstore
版本2 - 0.2
在Python中实现RDFXML解析器和生成器(不再使用rapper或rdflib)
属性链支持
添加ntriples_diff.py实用程序
错误修复:- 修复导出到NTriples时的换行符 -
版本2 - 0.3
添加destroy_entity()全局函数
显著提高个体创建的性能
在搜索时,允许使用“*”作为任何对象的占位符
错误修复:- 修复嵌套交集和并集 - 修复布尔运算 - 修复删除父属性时的错误 - 修复rdf:ID的解析 - 修复加载IRI被OWL文件修改的同本体多次加载的问题,使用本体别名表 - 修复ClassConstruct.subclasses() - 检查具有多个不兼容类(例如ObjectProperty和Annotation Property)的属性
版本2 - 0.4
添加查询给定个体定义的属性、逆属性和关系实例的方法(.get_properties()、.get_inverse_properties()和.get_relations())
添加.get_indirect()方法以获取间接关系(考虑子属性、传递性、对称性和自反性)
search()现在考虑继承和逆属性
search()现在接受'None'以搜索没有给定关系的实体
通过从头重新创建SQL索引来优化本体加载
使用递归Sqlite3语句优化传递性quadstore查询的SQL查询
优化获取RDF三元组数量(即len(default_world.graph))的SQL查询
在doc和Readme中添加Artificial Intelligence In Medicine科学文章
错误修复:- 修复从磁盘存储的quadstore重新使用本体时的属性加载 - 修复涉及补集(Not)时的_inherited_property_value_restrictions() - 修复基数限制 - 修复关于AllDisjoint / AllDifferent的文档
版本2 - 0.5
添加个体/实例编辑器(需要EditObj3,尚未充分测试)
添加对hasSelf限制的支持
优化XML解析器
检查循环子类/子属性,并显示警告
PyPy 3支持(PyPy 3的开发版本)
错误修复:- 修复search()在具有逆属性的属性上的'*'值 - 修复individual.annotation = “…”和property.annotation = “…” - 修复未指定语言的PlainLiteral annotation - 修复动态创建类的文档 - 修复加载具有python_name注释的本体 - 修复存在多个is-a / equivalent-to时_inherited_property_value_restrictions() - 将Python浮点数与xsd:double而不是xsd:decimal对齐 - 将模块‘property’重命名为‘prop’,以避免与Python的‘property()’类型冲突
版本2 - 0.6
添加set_datatype_iri()全局函数,用于将Python数据类型与IRI关联
添加nquads本体格式(用于调试)
添加对个体dir()的支持
添加使用https协议的Ontology支持(感谢Samourkasidis Argyrios)
添加观察模块(用于在Ontology修改时注册回调)
改进文档
错误修复:- 将Python浮点数与xsd:decimal对齐,而不是xsd:double,因为decimal也接受int - 修复Class.instances(),使其返回子类的实例(如文档中所示) - 修复直接分配到Ontology.imported_ontologies - 修复在添加一个已加载实体和一个未加载实体之间的推论事实时的推理错误
版本2 - 0.7
错误修复:- 恢复使用较旧Java编译器编译的HermiT(更高的兼容性)
版本2 - 0.8
错误修复:- 确实恢复使用较旧Java编译器编译的HermiT(更高的兼容性) - 修复当值为字符串且本体使用本地化字符串时的search(prop = “value”)
版本2 - 0.9
PostgresQL后端(除SQLite3外)
为SQLite3后端添加“exclusive = False”选项(较慢,但允许多实例使用)
在sqlite3 quadstore的资源表上使用唯一索引
通过缓存IRI字典优化sqlite3 quadstore(5%更快)
为类构造添加==支持
在World上添加get_namespace()支持
添加“存在性限制为类属性”功能
错误修复:- 修复导入的本体 - 修复在onto_path中保存本体 - 修复CallbackList的clear() - 修复本体中基IRI以/结尾时的Class IRI错误 - 修复基IRI以/结尾的本体中的导入本体
版本2 - 0.10
添加Ontology.metadata以添加/查询本体元数据
现在允许使用相同的名称/IRI创建多个个体,现在返回相同的个体
添加OwlReadyInconsistentOntologyError和Word.inconsistent_classes()
在Cython中实现RDF/XML和OWL/XML解析(解析速度提升25%)
小幅优化
扩展individual.prop.indirect()以包括类级别断言的关系
为RDF图添加.query_owlready()方法
错误修复:- 修复在获取等价于空类的类时的推理 - 修复使用后端参数创建World - 修复在类定义级别添加属性时的错误 - 修复从onto_path加载无扩展名的本体文件 - 修复定义为“RDF Property”类型及其子属性为“OWL Data/Object/Annotation Property”的属性 - 支持不接受WITHOUT ROWID的老旧SQLite3版本 - 修复对未声明实体的引用(它们现在由None替换,现在由它们的IRI替换) - 修复加载和保存基IRI以/结尾的本体 - 修复使用字符串的RDF查询
版本2 - 0.11
优化全文搜索
除了HermiT外,还支持Pellet推理器
支持加载大型OWL文件(增量加载)
使用Class.property.indirect()用于间接类属性(而不是Class.property)
将reload和reload_if_newer参数添加到Ontology.load()
对于具有相反属性的属性,search()现在要快得多
为SOME ConstrainedDatatype添加快捷方式:例如,age >= 65
错误修复:- 修复在quadstore中已存在的个体创建 - 修复class_construct.py中EntityClass的缺失导入 - 修复以RDF/XML格式保存World.save() - 修复Thing.subclasses()和Thing.descendants() - 修复使用Python Owlready从头创建的本体的本体更新时间 - 修复断言新父类与等价类时的推理错误
版本2 - 0.12
新的quadstore
数值搜索(NumS,例如所有年龄大于65的病人)
嵌套搜索
支持多线程的同步
添加Class.inverse_restrictions()和Class.direct_instances()
取消PostgresQL支持(兴趣不大:比SQLite3更复杂且较慢)
错误修复:- 修复_call_to_get_by_storid2 - 修复doc中的rdfs_subclassof - 修复FTS触发器 - 修复RDFlib / SPARQL中的布尔值 - 修复销毁AnnotationProperty时的错误
版本2 - 0.13
错误修复:- 修复因quadstore中索引不佳导致的性能下降 - 修复IRI以“/”结尾时出错 - 修复World克隆错误 - 修复重定义以Thing为唯一父类的类时,在类的父类中添加Thing的错误 - 修复inverse_resctriction() - 创建现有quadstore时添加错误信息
版本 2 - 0.14
UMLS支持(owlready2.pymedtermino2包)
推理时可以推断对象属性值(感谢W Zimmer)
属性值的新实现;使用INDIRECT_prop获取间接值
支持多种类属性类型:some、only、some + only和直接关系
通过类属性自动创建定义的类
支持匿名个体,例如Thing(0)
当仅使用返回元素的数量时优化search()
当使用非FTS语句时优化FTS search()
可以将推理限制为一系列本体
并集搜索(即default_world.search(…) | default_world.search(…))
错误修复:- 修复具有继承的功能类属性 - 修复调用close_world(ontology)时重复的实例列表限制 - 修复搜索中使用“*” - 修复使用contextvars进行同步
版本 2 - 0.15
使用Pellet推理时可以推断数据属性值
优化带有‘type =’、‘subclass_of =’或‘is_a =’参数的搜索
添加Property.range_iri
将_case_sensitive参数添加到search()
在RDFlib支持中添加逆属性支持
当推理器崩溃时显示Java错误消息
错误修复:- 在get_properties()中考虑逆属性 - 修复与HermiT推理时解析错误以及infer_property_values = True - 在RDFlib绑定中支持命名空间前缀 - 修复涉及具有逆关系的属性的两个方向断言重复值 - 在元类冲突的情况下提供更好的解决方案 - 修复使用‘type =’、‘subclass_of =’或‘is_a =’参数时的‘sqlite3.OperationalError: too many SQL variables’错误
版本 2 - 0.16
优化嵌套搜索
search(sublclass_of = xxx)现在在结果中返回xxx本身
支持“with long_ontology_name as onto”语法
在UMLS导入中,添加可选参数以防止提取属性、关系等
支持SPARQL INSERT查询
优化Pymedtermino映射
PyMedTermino2文档
错误修复:- 修复在“with”语句中对不一致本体进行推理时出现的“Cannot release un-acquired lock”错误 - 修复从存储在磁盘上的quadstore加载引用另一个属性的属性时的错误 - 修复当对象是数据类型时使用RDFlib的RDF三元组抑制
版本 2 - 0.17
SWRL规则支持
允许导入UMLS抑制的术语
在重新加载本体时取消缓存实体
错误修复:- 修复PyMedTermino2安装 - 修复debug = 1时数据属性值推理 - 修复LazyList中的sort()(感谢fiveop!) - 修复World.get()和添加World.get_if_loaded() - 当使用Python 3.6导入UMLS时添加适当的错误消息 - 修复推理后属于多个等效类的个体
版本 2 - 0.18
为quadstore中防止重复RDF三元组添加UNIQUE约束
添加Individual.INDIRECT_is_a / Individual.INDIRECT_is_instance_of
添加isinstance_python()(比isinstance()更快,但不考虑equivalent_to关系)
错误修复:- 导入UMLS时强制UTF-8编码 - 加载OWL文件时更加宽容
版本 2 - 0.19
将对称属性视为其自身的逆属性
更新Python对象以响应基本SPARQL更新/删除查询(适用于用户定义的属性、层次属性(type/subclassof)和等价属性)
添加individual.INVERSE_property
添加Class.INDIRECT_is_a
INDIRECT_is_a 和 INDIRECT_is_instance_of 现在包括类构造。ancestors() 有一个名为 ‘include_constructs’ 的参数,默认为 False。
为 XMLSchema 数据类型添加更多别名
将 is_a 属性添加到类构造中
添加 bottomObjectProperty 和 bottomDataProperty
在 individual.INDIRECT_property 中支持 ReflexiveProperties
优化 Thing.subclasses()
优化支持多个标准的搜索(),包括 PyMedTermino 执行的搜索
添加对 destroy_entity(SWRL_rule) 的支持
除了 “full” 格式外,还添加对 UMLS “metathesaurus” 格式的支持
错误修复:- 在推理后,保留所有等价类作为个体的父类(因为它们可能有方法)- 修复创建 SWRL 规则时的 IndividualPropertyAtom - 修复 SWRL 解析器 - 修复嵌套 RDF 列表的 RDF 序列化 - 修复删除逆属性(即 Prop.inverse = None)- 修复具有时区或毫秒的日期的 datetime 解析
版本 2 - 0.20
添加对可撤销的 destroy_entity() 的支持
小型数据库优化
不再将关联 exactly-1 或 max-1 限制的属性视为函数属性,而是返回单个值而不是列表(可以通过以下方式恢复先前的行为:import owlready2.prop; owlready2.prop.RESTRICTIONS_AS_FUNCTIONAL_PROPERTIES = True)
错误修复:- 修复 PyMedTermino 中 UMLS 映射的性能问题
版本 2 - 0.21
使用 Pellet 2.3.1(与 Protégé 相同的版本)而不是 2.4(2.4 版本在包括 equals 和 matches 在内的许多内置谓词的 SWRL 中存在错误)
关系上的注释管理速度更快
错误修复:- 修复 RDFlib/SPARQL 支持中的空节点错误 - 修复 RDFlib/SPARQL 支持中的空节点删除错误 - 修复限制修改中的数据丢失 - 修复 search() 中的“没有查询解决方案”错误 - 修复 RDF 列表中的文字支持,在保存本体时导致“TypeError:‘<’不支持 NoneType 和 int 之间的实例” - 修复 DifferentFrom SWRL 内置 - 修复 SWRL 规则中的字符串解析 - 修复 SWRL 规则中的字符串和布尔文字表示(str/repr)- 修复具有对称超属性的子属性的逆
版本 2 - 0.22
添加对不相交联合(Class.disjoint_unions)的支持
在类构造中添加 deepcopy 支持,并在需要时自动 deep-copy 构造(即不再有 OwlReadySharedBlankNodeError)
支持使用 RDFlib 创建空节点
版本 2 - 0.23
将 get_parents_of()、get_instances_of()、get_children_of() 方法添加到本体中,用于查询给定本体中定义的层次关系
对于具有数字的约束,将 Thing 作为默认值而不是 None
将“filter”参数添加到 save(),用于过滤保存的实体(由 Javier de la Rosa 贡献)
错误修复:- 修复具有假值的值约束 - 修复从不同本体加载空节点 - 修复由多个类重用的构造 - 修复“Class.is_a = []”未将列表转换为 Owlready 列表 - 修复 destroy_entity() - 未销毁实体的 IRI - 改进 setup.py:如果 Cython 安装失败,忽略 Cython
版本 2 - 0.24
支持搜索的交集(例如,World.search(…) & World.search(…))
添加 owlready2.reasoning.JAVA_MEMORY
将开发仓库移至 Git
错误修复:- 修复不以换行符结尾的 NTriples 文件的解析 - 修复多个属性具有相同名称时的 Prop.python_name KeyError - 修复在非默认_world 中导入本体的 Python 模块中的 get_ontology() 调用 - 修复在非默认_world 中使用 PyMedTermino2 - 修复 World.as_rdflib_graph().get_context(onto) 对于在创建 RDFLIB 图之后添加的本体 - 修复销毁 SWRL 规则 - 修复与非原子类的不相交
版本 2 - 0.25
允许使用 declare_datatype() 声明自定义数据类型
支持注释的注释(例如,对注释的注释)
search() 现在支持“subproperty_of”参数
search() 现在支持“bm25”参数(用于全文搜索)
修复:- 修复 PymedTermino2 中的 Concept.descendant_concepts() - 当加载新的本体时更新已加载的属性 - 现在接受 %xx 引号字符在 file:// URL 中 - 改进关于同义词实体的错误信息 - Property.get_relations() 现在考虑反向属性 - 修复 “AttributeError: ‘mappingproxy’ 对象没有属性 ‘pop’” 错误 - 修复 Thing.instances()
版本 2 - 0.26
模块 owlready2.dl_render 允许将实体渲染为描述逻辑(由 Simon Bin 贡献)
修复:- 调整 SameAs 和 DiferrentFrom 字符串的比较,允许不区分大小写的相等比较(由 Thiago Feijó 贡献)- 修复类和 OWL 构造之间的传递等价关系 - 修复 AnnotationProperty[实体],其中实体是预定义的 OWL 实体(例如注释或 Thing)- 修复 entity.AnnotationProperty,其中实体是预定义的 OWL 实体(例如注释或 Thing)- 修复 HermiT 在推理具有导入语句的多个本体时的错误 - 忽略“类型 A”,并发出警告
版本 2 - 0.27
当 Pellet 在不一致的本体上调用 debug >= 2 时,显示 Pellet 说明输出(由 Carsten Knoll 贡献)
更新文档主题(由 Carsten Knoll 贡献)
将 setup.py 适配以允许 'python setup.py develop' 和 'pip install -e .'(由 Carsten Knoll 贡献)
将 'url' 参数添加到 Ontology.load() 方法中
将 'read_only' 参数添加到 World.set_backend() 方法中
修复:- 修复具有冒号(':')在名称中的实体的 XML/RDF 文件解析/写入 - 修复 destroy_entity(),当类构造或 equivalent_to 涉及时,某些 RDF 三元组会泄漏 - 修复 'Class1(entityname); Class2(entityname)'(会更改个体命名空间)- 修复对 RDF 注释属性的注释请求,例如 label.label
版本 2 - 0.28
修复:- 在 Windows 下修复安装(由 CVK 贡献)- 在 Windows 下,运行推理器而无需打开 DOS 窗口
版本 2 - 0.29
修复:- 修复作为另一个 Python 模块要求的安装
版本 2 - 0.30
添加新的本地 SPARQL 引擎,该引擎将 SPARQL 查询转换为 SQL
通过集成 OWL 翻译直接支持 Dublin Core
修复:- 修复保存非常深的本体到 RDF/XML 时发生的 RecursionError - 修复 IRI 形式为 'urn:uuid:...' - 修复修改导入属性的导入本体的加载
版本 2 - 0.31
可以打开 SPARQL 端点(请参阅模块 owlready2.sparql.endpoint 和文档)
在 PyMedTermino2 中支持 ClaML 文件格式,用于法语 ICD10
修复:- 修复 SPARQL 中不对应现有本体的前缀 - 修复 SPARQL FILTER 中的感叹号 - 修复 Thing.subclasses(),使其现在返回具有父构造但没有父命名类类的类 - 修复创建属于多个类(包括 PyMedTermino 中的一个)的个体的 FusionClass 的元类 - 修复没有关系的 Prop[individual] 对于具有无关系的功能属性
版本 2 - 0.32
添加脚本以将 OMOP-CDM 作为本体导入(请参阅目录 pymedtermino2/omop_cdm/)
SPARQL 引擎优化
修复:- 修复创建个体时名称冲突的问题,例如“c1”+“1”与“c”+“11”- 修复 SPARQL 中只有 FILTER 的块
版本 2 - 0.33
修复:- 修复 SQLite3 < 0.33 时的 'sqlite3.OperationalError: no such table: sqlite_schema' 错误
版本 2 - 0.34
支持没有序列、重复或负属性集嵌套在重复中的括号内的 SPARQL 属性路径表达式
添加 define_datatype_in_ontology() 全局函数,用于在本体中定义新的用户自定义数据类型
Class.instances() 现在考虑等价类(如其他类方法,例如 .descendants())
添加 LOADED(iri) SPARQL 函数
支持 Thing.is_a.append(…)
加快非常大的四元组存储的加载速度
list(onto.metadata) 现在列出本体上存在的注释
在get_ontology()和get_namespace()中添加OntologyClass和NamespaceClass参数,允许使用自定义类
错误修复:- 接受推理机提供的UTF8和latin编码(感谢Francesco Compagno)- 修复包含无变量的UNION SPARQL查询- 修复UMLS中的语义类型支持
版本 2 - 0.35
SPARQL优化
支持SPARQL中的VALUES
向SPARQL添加STATIC优化关键字扩展
在INSERT和DELETE SPARQL查询中接受GROUP BY、HAVING、LIMIT
添加STORID(iri)、DATE()、TIME()和DATETIME() SPARQL函数
UMLS CUI现在通过语义类型(TUI)分层
提高了并行性
错误修复:- 修复在.old版本的SQLite3中由bug引起的'in .instances()中“sqlite3.OperationalError: circular reference: prelim1_objs' - 修复包含数据参数的INSERT子句的SPARQL INSERT查询 - 修复包含整数5的列表解析 - 修复使用编号参数时的SPARQL查询中的nb_parameter - 修复ObjectProperty.subclasses()、ObjectProperty.descendants()、Property.subclasses()、DataProperty.descendants()、AnnotationProperty.subclasses()、AnnotationProperty.descendants() - 修复已用于Owlready的数据类型的declare_datatype() - 修复具有未在加载本体中声明的注释的属性的Pellet
版本 2 - 0.36
支持xsd:duration,包括DATETIME_DIFF()、DATETIME_ADD()、DATETIME_SUB() SPARQL非标准函数
在大quadstores上进行更快的本体操作(例如,本体删除)
如果IRI本身不产生OWL文件,则自动将.owl、.rdf或.xml添加到本体IRI
错误修复:- 当使用多个世界时修复FusionClasses(即属于多个类的个体,即多实例)- 修复猜变量类型时的OPTIONAL SPARQL子句 - 修复撤销实体销毁时的错误(感谢Lukas Westhofen)- 修复SWRL规则中的OWL命名空间IRI - 修复不一致本体的Pellet解释 - 修复PyMedTermino2中LLT的MEDDRA父子关系 - 确保返回的文件名是文件(感谢Nicolas Rouquette)
版本 2 - 0.37
添加World.forget_reference(entity)
添加NamedIndividual(用于rdf:type的SPARQL结果)
将'update_relation'可选参数添加到Ontology.destroy()
添加Ontology.set_base_iri()和Ontology.base_iri = “new_base_iri”
错误修复:- 修复具有UNION但未使用UNION变量的SPARQL查询 - 修复只读quadstores上的SPARQL查询 - 修复混合OPTIONAL和VALUES/STATIC的SPARQL查询 - 修复定义为TransitiveProperty(及其类似)的子属性但不是ObjectProperty类型的属性 - 修复importlib.reload(owlready2) - 修复以数字开头的类名个体的RDF/XML序列化 - 修复当本体基础IRI以/结尾时的RDF/XML序列化 - 修复Or.Classes = …和And.Classes = … - 修复具有超过两个值的ONLY类属性
版本 2 - 0.38
接受本地化语言代码,例如fr_FR或fr_BE,以及通配符fr_any
将'update_is_a'可选参数添加到Ontology.destroy()
错误修复:- 修复当prop是函数时individual.INVERSE_prop更新 - 修复具有OPTIONAL的复杂SPARQL查询的性能下降 - 修复关闭World后的declare_datatype - 修复Pellet对空白节点的推理(忽略它们) - 修复包含逗号“,”的字符串数据属性的Pellet推理 - 修复SPARQL引擎中的布尔常量'true'和'false' - 修复具有UNION但不具有变量的INSERT SPARQL查询 - 修复WHERE部分只有FILTER NOT EXISTS的SPARQL查询 - 接受NTriple文件开头的空行 - 在解析SWRL规则时支持非ASCII字符
版本 2 - 0.39
使RDF三元组删除非本体特定
使用属性值创建个体更快(例如,MyClass(prop = [value]))
错误修复:- 修复实体.prop.remove(x) 和 entity.prop = x,当现有值定义在与实体不同的本体中时 - 修复引用实体被销毁时的逆属性更新(感谢Franzlst) - 防止推理器重置OWL基实体(如Thing)的父级 - 修复提供本地文件名作为本体基IRI的已销毁本体的重新加载 - 修复涉及属性链的对象属性的销毁 - 修复当本体IRI为本地文件名时的本体重新加载 - 修复SPARQL复合查询中的SELECT * - 修复当某些属性定义为逆属性的约束时的Class.get_class_properties() - 修复RDFlib 0.6.2(支持bind()重写可选参数)
版本 2 - 0.40
一般类公理支持
为安全目的,在Pellet中更新Log4J
为注释添加get_lang_first()方法。
错误修复:- 如果缺失,则添加本体URL的尾部/ - 修复加载包含属于两个类的个体的本体时Individual.is_a - 修复datetime以使其与XSD兼容(感谢Lukas Müller) - 确保事物被正确初始化,以便可以安全地重写__init__方法(感谢Lukas Müller) - 修复destroy_entity() -
版本 2 - 0.41
并行化大型OWL文件解析(在GO上大约快25%)
并行化SPARQL查询(参见owlready2.sparql.execute_many()和execute(spawn = True))
错误修复:- 修复Class.INDIRECT_get_class_properties()的逆(Prop)约束 - 修复类型为HasSelf的约束 - 修复destroy_entity()中的delattr - 修复从RDFlib导入空白节点 - 修复FTS搜索中的逗号、加号和减号
版本 2 - 0.42
不兼容更改:考虑具有不同语言的文字作为不同的(例如,locstr(“测试”,“en”)!= locstr(“测试”,“fr”))
支持SPARQL SELECT查询中的GRAPH子句
现在World支持自定义锁(例如,World(lock = ...))
错误修复:- 修复World(enable_thread_parallelism = True)(之前名为enable_gevent) - 修复rdflib_store中的空白节点 - 修复SPARQL中的FILTER,当过滤器紧接在递归查询之后时 - 修复涉及变量在右侧的递归查询 - 修复包含实体的注释的SPARQL查询 - 修复使用“>>”语法中的Union创建属性时的属性创建(例如,class Prop((MyClass | MyOtherClass) >> str): pass) - 修复PyMedTermino2中的UMLS提取 - 修复在写入RDF/XML文件时带有括号(或其他特殊字符)的Class IRI
版本 2 - 0.43
错误修复:- 修复locstr上的!=运算符
版本 2 - 0.44
为关系上的注释添加新语法,例如AnnotatedRelation(s,p,o).comment = “abc”(旧语法仍然支持)
优化关系上的注释
支持SPARQL INSERT查询中的GRAPH子句
观察框架(请参阅owlready2.observe和观察框架文档)
错误修复:- 修复销毁类后equivalent_to的更新 - 修复修改SPARQL查询时类上的注释的更新 - 修复SELECT查询中的SPARQL GRAPH子句,当查询图作为变量且所有三元组不在GRAPH子句内时 - 修复LANGMATCHES SPARQL函数 - 当fork不可用时防止多进程加载大型本体(即Mac上) - 修复销毁属性时的子属性父类 - 修复TransitiveProperty、SymmetricProperty、AsymmetricProperty、ReflexiveProperty、IrreflexiveProperty的加载
版本 2 - 0.45
现在可以使用PREDEFINED_ONTOLOGIES全局字典将本体IRI映射到任意本地路径或URL。
新的FTSSqlite3Phrase()字符串类型可用于使用Sqlite3特殊语法执行FTS搜索,例如default_world.search(label = FTSSqlite3Phrase(“Electrocardiographic OR ECG”))
通过plainliteral Python数据类型添加对RDF plain literals的支持。
错误修复:* 修复在 python_name 与 name 相同时 property 的 set_name() 方法 * 修复 FTS 搜索中的特殊字符(例如 :) 和关键词(例如 OR) * 修复没有数据类型的文字(应视为字符串,见 https://www.w3.org/TR/rdf11-concepts/#section-Graph-Literal) * 修复 TransitiveProperty、ReflexiveProperty 和 SymmetricProperty 的错误继承 * 修复正则表达式中的 'DeprecationWarning: invalid escape sequence' * 在 with ontology:… 块中创建新本体时引发错误 * 使用 rdf:langString 替换 locstr(之前为 rdf:plainLiteral)
版本 2 - 0.46
当 Cython 模块不可用时移除警告
更新 OMOP CDM 以支持新的 CSV 格式
对枚举数据类型的初步支持(= 用 equivalent_to 和 OneOf 定义)
改进同步和多进程支持
错误修复:* 修复 SPARQL 中 IRI() 的返回类型 * 修复没有共享变量时带有两个 UNION 的 SPARQL 查询 * 修复以 '?' 结尾的 IRI 的本体解析 * 避免重复使用已销毁实体的 ID(storid;与其他进程共享 quadstore 时重复使用存在问题)
链接
Owlready2 在 BitBucket(Git 开发仓库):https://bitbucket.org/jibalamy/owlready2
Owlready2 在 PyPI(Python 包索引,稳定版本):https://pypi.python.org/pypi/Owlready2
文档:http://owlready2.readthedocs.io/
论坛/邮件列表:http://owlready.306.s1.nabble.com
联系 “Jiba” Jean-Baptiste Lamy
<jean-baptiste.lamy *@* univ-paris13 *.* fr> LIMICS INSERM, Université Sorbonne Paris Nord, Sorbonne Université Bureau 149 74 rue Marcel Cachin 93017 BOBIGNY FRANCE
项目详情
owlready2-0.46.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3c1b06dbe85df77dfa2de5a13ba1d11b4b8543c1c0ccdc5be252a81e3c0de55a |
|
MD5 | 3a34144d5b78c6ae6d0b733c95827bba |
|
BLAKE2b-256 | 613895f5353f10e9d7a7c46574b739f8e4d77b2e81dd8e389afb15f741969541 |