假设我们有一个我们一无所知但拥有公共SPARQL端点的数据集。我想发出SPARQL查询/查询,它将返回此数据集中的所有文字值。这个查询怎么样?
我需要这个的原因是我打算在许多数据集上使用相同的查询。因此,我不需要浏览它们中的每一个来知道它们用于文字的词汇。
另外,不确定这是否属实,但对我来说听起来合理,我相信这些端点有某种安全措施,因此不会对它们执行长时间运行的查询。有没有办法使用LIMIT N返回这些文字。所以我通过一个查询得到这些文字N by N而不是所有文字?
答案 0 :(得分:4)
假设我们有一个我们一无所知但拥有公众的数据集 SPARQL端点。我想发布SPARQL查询/查询 返回此数据集中的所有文字值。这个查询看起来如何 样的?
通过过滤器使用 isLiteral 功能,您可以检查某些内容是否为文字。文字只能出现在三元组的对象位置,所以如果你只是得到每个三元组并检查对象是否是文字,你将获得所有的文字。由于某些字面值可能不止一次出现,因此您还应使用 distinct 来消除重复的结果。
select distinct ?literal {
?s ?p ?literal
filter isLiteral(?literal)
}
至于一次检索 n 文字的块,通常称为分页,并在另一个问题Paginating SPARQL results中讨论和回答。