如何通过 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?
您可以使用带有 filter 的 isLiteral 函数来检查某些内容是否为文字。文字只能出现在三元组的对象位置,所以如果你只是获取每个三元组并检查对象是否是文字,你将获得所有文字。由于某些文字可能出现不止一次,您还应该使用 distinct 来消除重复结果。
select distinct ?literal {
?s ?p ?literal
filter isLiteral(?literal)
}
至于一次检索 n 个文本块,这通常称为分页,并且已在另一个问题 Paginating SPARQL results 中讨论和回答。
假设我们有一个我们一无所知但有一个 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?
您可以使用带有 filter 的 isLiteral 函数来检查某些内容是否为文字。文字只能出现在三元组的对象位置,所以如果你只是获取每个三元组并检查对象是否是文字,你将获得所有文字。由于某些文字可能出现不止一次,您还应该使用 distinct 来消除重复结果。
select distinct ?literal {
?s ?p ?literal
filter isLiteral(?literal)
}
至于一次检索 n 个文本块,这通常称为分页,并且已在另一个问题 Paginating SPARQL results 中讨论和回答。