如何通过SPARQL查询提取RDF文字?

时间:2016-09-14 18:35:28

标签: sparql rdf

假设我们有一个我们一无所知但拥有公共SPARQL端点的数据集。我想发出SPARQL查询/查询,它将返回此数据集中的所有文字值。这个查询怎么样?

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

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

1 个答案:

答案 0 :(得分:4)

  

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

通过过滤器使用 isLiteral 功能,您可以检查某些内容是否为文字。文字只能出现在三元组的对象位置,所以如果你只是得到每个三元组并检查对象是否是文字,你将获得所有的文字。由于某些字面值可能不止一次出现,因此您还应使用 distinct 来消除重复的结果。

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

至于一次检索 n 文字的块,通常称为分页,并在另一个问题Paginating SPARQL results中讨论和回答。