【问题标题】:How to extract RDF literals via SPARQL query?如何通过 SPARQL 查询提取 RDF 文字?
【发布时间】:2016-09-14 18:35:28
【问题描述】:

假设我们有一个我们一无所知但有一个公共 SPARQL 端点的数据集。我想发出将返回此数据集中所有文字值的 SPARQL 查询/查询。这个查询看起来如何?

我需要这个的原因是我打算对许多数据集使用相同的查询。因此,我不需要浏览它们中的每一个来了解它们用于文字的词汇。

另外,不确定这是否属实,但对我来说听起来很合理,我相信这些端点具有某种安全措施,因此不会对它们执行长时间运行的查询。有没有办法使用 LIMIT N 返回这些文字。所以我通过一个查询获得这些文字 N 而非所有文字?

【问题讨论】:

  • 特别是您要求限制结果集的方法让我假设您没有看过任何 SPARQL 教程。
  • 作为提示,看看如何查询最通用/常见的三元组模式 + 添加一个过滤器,将三元组模式的对象限制为文字 + 使用一些 LIMIT N。跨度>
  • 是的,我知道 LIMIT 和 OFFSET。鉴于我不知道最佳答案是什么,我只是不想将答案指向某个地方。

标签: sparql rdf


【解决方案1】:

假设我们有一个我们一无所知但公开的数据集 SPARQL 端点。我想发出 SPARQL 查询/查询 返回此数据集中的所有文字值。这个查询看起来如何 喜欢吗?

您可以通过使用带有 filterisLiteral 函数来检查某些内容是否为文字。文字只能出现在三元组的对象位置,所以如果你只获取每个三元组并检查对象是否是文字,你会得到所有的文字。由于某些文字可能出现多次,您还应该使用 distinct 来消除重复的结果。

select distinct ?literal { 
  ?s ?p ?literal 
  filter isLiteral(?literal)
}

至于一次检索这些 n 个字面量的块,这通常称为分页,这已在另一个问题 Paginating SPARQL results 中进行了讨论和回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多