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

How to extract RDF literals via SPARQL query?

假设我们有一个我们一无所知但有一个 public SPARQL 端点的数据集。我想发布 SPARQL query/queries,它将 return 此数据集中的所有文字值。这个查询看起来如何?

我需要这个的原因是我打算对许多数据集使用相同的查询。所以,我不需要浏览它们中的每一个就知道它们使用哪些词汇作为文字。

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

Assume we have a data set we know nothing about but has a public SPARQL endpoint. I want to issue SPARQL query/queries that would return all literals values in this data set. How does this query look like?

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

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

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