我有一个用 OWL 编写的本体。有谁知道我可以将它加载到Python中吗?任何软件包甚至手动? 其他问题中提到的 rdflib 不适合我,因为它主要与 RDF 相关,而“Seth”这个非常好的库不起作用,因为它需要“Pellet”库,而该库的网站似乎已关闭并且它(seth) 也仅适用于 JVM 1.4!
我还没有完全尝试过这一点,但您可以考虑将本体加载到 Sesame 数据库中,然后使用 Python 包装器对其进行查询。我玩过一些 RDFAlchemy 和 pySesame ,但我仍然不知道它们有多好。总的来说,RDF/OWL 数据库对我来说非常不成熟,因此预计会遇到一些重大的技术困难。
如果有人再次偶然发现这个问题,这个包现在可用于与 Python 中的 OWL 本体进行交互:https://pypi.org/project/Owlready2/
从项目描述来看,它具有以下功能:
在 commands.py 文件的 rdfAlchemy 中,有一个命令部分正是为此目的而启动的。 有一段时间没有使用它了,但这正是您所问问题的开始,即从本体创建 python skel。
事实上,它使用了粘贴“命令”。如果您转到 rdfalchemy 子目录并输入:
paster rdfSubject -h
你应该看到:
Usage: /home/phil/venv/some_path/bin/paster rdfSubject [options] paster rdfalchemy.commands Create an rdfSubject subclass with descriptors from an RDF Schema will set the rdf_type Descriptors will be created 1. rdfs:domain and rdfs:range are respected 2. rdfSingle is used for properties that are * owl:InverseFunctionalProperty * owl:FunctionalProperty 3. rdfList or rdfContainer is used if the proper range is set 4. rdfMultiple is used for all others The resulting .py file is ment to be a skeleton for the developers confvience. Do not expect to be able to use the raw results. Create an rdfSubject subclass with descriptors from an RDF Schema Options: -h, --help show this help message and exit -v, --verbose -n, --simulate -s SCHEMA, --schema=SCHEMA file name or url of rdfSchema for this class -o FOUT, --fout=FOUT output file name default: stdout (e.g. ../MyRdfModel.py) -l, --list list valid instances of `owl:Class` in the schema file
我也可以找到这个ordf,但似乎他们只是为自己写了一些文字,根本不清楚如何使用它,很遗憾!
Java owlapi 的一个很好的 Python 对应物是 owlapy(注意末尾的 y):https://github.com/dice-group/owlapy
根据其文档,它具有以下功能(https://dice-group.github.io/owlapy/usage/main.html#what-is-owlapy):