SPARQL-如果对象是URI,则返回标签;如果对象是文字,则返回字符串

时间:2020-09-08 13:59:31

标签: sparql

当对象是URI时,我想获取对象的标签(rdfs:label)。但是,当对象是文字字符串时,我也想获取字符串值。问题是,我事先不知道对象是存储文字还是URI,并且在某些情况下,我看到文字和URI混合在一起,如所附的图像。

enter image description here

关于如何返回字符串的任何建议,如果有对象,则返回rdfs:label?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

首先,在理想世界中不应出现此问题,因为属性应该是对象属性或数据类型属性。

但是,当确实发生这种情况时,我建议采取以下解决方法:

lm

警告

这未经彻底测试。我只能验证它是否在使用Virtuoso 08.03.3319的DBpedia Live上正常运行。在Virtuoso版本07.20.3235上的默认DBpedia端点SELECT ?x ?desc { ?x dbp:keyPeople ?y. {?y rdfs:label ?desc. FILTER(isIRI(?y))} UNION {BIND(STR(?y) AS ?desc). FILTER(!isIRI(?y))} } 上,它似乎无法正常工作。另外,您需要同时取消选中“严格检查空变量”和“ “严格检查多个子句中使用的变量名称,但在逻辑上没有相互联系”。