【问题标题】:Virtuoso SPARQL not retrieving valuesVirtuoso SPARQL 不检索值
【发布时间】:2025-12-17 21:20:06
【问题描述】:

我正在通过图形界面 (ODS-Briefcase) 将 RDF 文件上传到 Virtuoso 存储库。文件上传成功。但是,每次我进行 SPARQL 查询时,都会返回一个空结果。

我尝试了很多其他文件,我没有遇到这个问题。

这个文件比以前的文件大(14MB),所以我猜这可能是原因,但我不确定。

在这件事上的任何帮助将不胜感激:)

更新 我尝试上传一个较小的文件 (2KB),SPARQL 按预期返回结果。

但是,我再次上传了文件 (14 MB),但似乎没有正确上传。

当我尝试从 Virtuoso 的 ODS-Briefcase 中读取它时,会发生这种情况:

【问题讨论】:

  • 很难说没有看到数据和查询。也许使用了错误的图表?您是否将其上传到单独的图表中? SELECT * {?s ?p ?o} LIMIT 1 返回什么?
  • 你试过四存储文件上传吗?
  • 通过Virtuoso Users mailing listOpenLink Support ForumsOpenLink Support Case,通常可以更快、更准确地回答特定于演奏家的问题...
  • @AKSW 是的,我尝试将其上传到不同的图表,但同样的情况发生
  • @IvoVelitchkov 我所有的 RDF 都已手动存储到 WebDAV 中,因为我无法访问 Quad Store(导体)。安装时我不记得密码了

标签: sparql rdf virtuoso


【解决方案1】:

要解决此类问题,您必须从根本上了解您正在执行的任务以及如何使用 Virtuoso 对其进行解释。

手头的任务: 将 RDF 文档加载到 Virtuoso 的 WebDAV 存储库(ODS-Briefcase 为其提供前端),以一种方式将所述 RDF 文档的内容加载到 Quad Store(RDF 数据被索引并提供给 SPARQL查询等)。

您如何实现目标:

使用 ODS-Briefcase UI 创建一个 DET 文件夹(该文件夹提供 WebDAV 存储和 Virtuoso Quad 存储之间的自动管道)类型:链接数据导入。这种文件夹的属性(特征)之一是 Named Graph IRI 和 Named Graph IRI Base:

有了 Linked Data Import DET 文件夹,您只需将 RDF 文档上传到新创建的文件夹。

要验证从放置在此文件夹中的 RDF 文档导入的 RDF 语言语句是否存在,只需执行以下操作之一

SELECT COUNT (*) 
FROM {targe-named-graph-iri}
WHERE {?s ?p ?o}

SELECT DISTINCT *
FROM {targe-named-graph-iri}
WHERE {?s ?o ?o}

您还可以使用以下模式在 SPARQL 查询中利用 Virtuoso 的内置 RDF 数据导入中间件(a/k/a Sponger):

DEFINE get:soft "replace" 
SELECT DISTINCT *
FROM {rdf-document-uri}
WHERE {?s ?o ?o}

我希望这可以使可用于将 RDF 文档内容导入 Virtuoso Quad Store(管理表示的数据和 RDF 属性/谓词图的引擎)的选项变得清晰。

【讨论】:

    【解决方案2】:

    听起来您已将文件加载到 Virtuoso WebDAV(文件)存储库中,但您可能尚未将其中的 RDF 加载到 Virtuoso (RDF) Quad Store。

    看到这个guide to the bulk loader和这个page of RDF loading methods

    (ObDisclaimer:我为 OpenLink Software 工作,Virtuoso 的制作人。)

    【讨论】:

    • 我已阅读您提到的“RDF 加载方法”,并逐步按照“使用链接数据导入文件夹和从文件上传的示例”进行操作。以前,它适用于较小的文件。我的意思是,它将文件同时上传到 WebDAV 和 QuadStore。但是,我不明白“批量加载程序”部分。我不知道在哪里或如何执行此命令(例如 ld_dir)
    • 大文件可能需要很长时间才能加载,并且超时可能是多个层的问题。我想知道您是否正在使用当前的 Virtuoso 和 VAD(例如 ODS-Briefcase)?批量加载程序命令(例如,ld_dir)在 iSQL 中执行;您可以使用基于浏览器的界面或命令行工具。请注意,批量加载的文件路径对于 Virtuoso 实例来说始终是机器本地的,即使您正在通过基于浏览器的界面工作。
    • 是的,我正在使用 ODS-Briefcase 界面,所以我想我正在使用当前的 Virtuoso 和 VAD 运行?最后,我将我的 RDF 文件拆分为更小的部分并上传。我知道这不是正确的方法,因为将来我会遇到同样的问题。但是,我需要一个快速的解决方案,这就是其中之一。您能否帮助我如何/在哪里可以找到基于 iSQL 浏览器的界面?有关更多信息,我在 Ubuntu 虚拟机上运行 Virtuoso,我正在从 Windows 操作系统计算机访问它。我想从 Windows 管理一切(文件上传、更新等)。
    • 更清楚一点——最好用virtuoso -?的命令行输出检查Virtuoso版本; VAD 版本位于 Conductor -> System Admin -> Packages 页面,http://virtuoso-host:port/conductor。 iSQL 的浏览器界面位于 Conductor 旁边,可通过 http://virtuoso-host:port/ 访问……进一步的来回不适合 *;最好使用我对您问题的评论中的资源。