SPARQL 查询以获取定义了命名空间前缀的所有类标签

标签 sparql semantic-web

我想获取存储在芝麻存储库中的所有类。

这是我的查询

SELECT ?class ?classLabel
WHERE {
?class rdf:type rdfs:Class.
?class rdfs:label ?classLabel.
}

它返回带有标签的类的所有 URI。例如,

"http://example.com/A_Class" "A_Class"
"http://example.com/B_Class" "B_Class"

但是,如果 namespace 前缀已定义,我想获取定义了 namespace 的标签。例如,如果我已经为“http://example.com/”定义了命名空间前缀“ex”,则结果变为

"http://example.com/A_Class" "ex:A_Class"
"http://example.com/B_Class" "ex:B_Class"

最佳答案

您想在标签字符串前面添加 URI 前缀吗?

我认为您可能对 URI 前缀的作用感到困惑。它们只是完整 URI 的简写,不是 URI 的一部分,并且与字符串没有任何关系。

你可以做你想做的事情

SELECT ?class (CONCAT("ex:", ?classLabel) AS ?label
WHERE {
   ?class rdf:type rdfs:Class.
   ?class rdfs:label ?classLabel.
}

但前缀不依赖于 URI 的前缀。

您可以使用一系列 IF() 来测试 STR(?class) 的起始字符,但它很快就会变得丑陋:

BIND(IF(STRSTARTS(STR(?class), "http://example.com/"), "ex:", "other:") as ?prefix)

然后

SELECT ... (CONCAT(?prefix, ?classLabel) AS ?label

几乎肯定有一种比在 SPARQL 中更简单的方法来获得你想要的东西:)

关于SPARQL 查询以获取定义了命名空间前缀的所有类标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17939197/

相关文章:

select - Sparql 仅选择类的一个标签和注释

sparql - dbpedia 上选择 SPARQL 查询的问题

rdf - 具有COUNT和ORDER的SPARQL查询返回奇数结果

uri - Schema.org 对 JSON-LD 表示和 URI 的说明

sparql - 我如何使用单个 CONSTRUCT 构建关于某些个体的 RDF 图?

graph - 如何使用SPARQL查询列出并统计图数据中不同类型的节点和边实体?

rdf - 提取由一组节点引起的子图

java - 从 dbpedia 检索数据时出错

sparql - 使用 SPARQL 重复输出结果

date - 应该xsd :date convert for datetimes before common era in SPARQL