用于获取定义了命名空间前缀的所有类标签的SPARQL查询 [英] SPARQL query to get all class label with namespace prefix defined

查看:12
本文介绍了用于获取定义了命名空间前缀的所有类标签的SPARQL查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

这是我的查询

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"
但是,如果已经定义了名称空间前缀,我希望获得定义了名称空间的标签。例如,如果我已经为"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查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆