【发布时间】:2021-02-18 14:56:03
【问题描述】:
我正在尝试将 https://pythonhosted.org/virtuoso/ 与 RDFlib 一起使用,但我不断收到以下导入错误
~\miniconda3\envs\dlvr\lib\site-packages\virtuoso\__init__.py in <module>
2 from pkg_resources import DistributionNotFound
3
----> 4 try: import alchemy
5 except DistributionNotFound: pass
6
ModuleNotFoundError: No module named 'alchemy'
我使用插件的代码如下:
import rdflib
from rdflib.store import Store
from rdflib.plugin import get as plugin
Virtuoso = plugin("Virtuoso", Store)
store = Virtuoso("DSN=VOS;UID=dba;PWD=dba;WideAsUTF16=Y")
rdflib 不支持 Virtuoso 插件吗?对于外部三元组存储是否有更好的选择,我可以使用它来加快使用 rdflib 对大型数据集的查询?
【问题讨论】:
-
您是否阅读了插件文本:“这已仅使用 rdflib3 进行了测试,可能适用于也可能不适用于 rdflib2。” - 我确定您使用的是最新 (5.0) 或 4.0 版本的 rdflib
-
除此之外,还有 SPARQLWrapper 可以访问任何支持标准 SPARQL 协议的三重存储——Virtuoso 肯定是这样。奇怪的是你没有找到它,因为它被直接提到了:github.com/RDFLib/sparqlwrapper
-
@UninformedUser 我正在尝试使用 rdflib 查询本地 rdf 文件。据我所知(我的知识可能有限,我很抱歉)sparql 包装器用于查询在线端点。 Rdflib 在处理文件和解析它时花费了太多时间,这就是为什么我想以某种方式首先将这些数据上传到三重存储。我在上传部分遇到困难
-
这看起来很可能是an XY Problem。你的真正目标是什么? Virtuoso 是一个很好的三元存储(除其他外),并且可以 为包括 RDF 数据文件在内的文件系统文档提供一个接口,但是您通过这条路线构建了几个延迟;您最好将 RDF 加载到 Virtuoso 的三重/四重存储中,然后通过 Virtuoso 的内置 SPARQL 端点进行查询,可能使用 SPARQLWrapper(它不关心它查询的端点在哪里,只要它可以通过正常的 TCP/IP 堆栈访问)。
-
@Aniqa295 “本地文件”有多大?我的意思是,Virtuoso 速度非常快,但在我看来,当您将它用作三重存储时,即加载数据然后查询它。是的,SPARQLWrapper 仅适用于基于 HTTP 的 SPARQL - 但我在这里看不到问题。将数据加载到像 Virtuoso 这样的三重存储需要几秒钟?上传数据的“困难”是什么意思?你用 Virtuoso 吗?问题出在哪里?
标签: python sparql virtuoso rdflib