如何在SPARQL查询结果中仅显示字符串而不显示URI?

如何在SPARQL查询结果中仅显示字符串而不显示URI?,sparql,dbpedia,Sparql,Dbpedia,有了下面的问题,我只想显示“Jorge Glas” 前缀dbp: 前缀dbpedia: 前缀dbpedia owl: 选择str(?leader)作为标签 在哪里{ dbpedia:Ecuador dbpedia猫头鹰:领袖?领袖 } 有几种方法可以实现这一点。一种是使用SPARQL REPLACE获取所需字符串: REPLACE(?leader, "^.*/", "") 这就得到了“Jorge_Glas”,然后你也可以用空格替换下划线: REPLACE(?x, "_", " ") 但是,

有了下面的问题,我只想显示“Jorge Glas”

前缀dbp:
前缀dbpedia:
前缀dbpedia owl:
选择str(?leader)作为标签
在哪里{
dbpedia:Ecuador dbpedia猫头鹰:领袖?领袖
}

有几种方法可以实现这一点。一种是使用SPARQL REPLACE获取所需字符串:

REPLACE(?leader, "^.*/", "")
这就得到了“Jorge_Glas”,然后你也可以用空格替换下划线:

REPLACE(?x, "_", " ")
但是,这不是使用DBPedia资源的方式。大多数DBPedia资源都有一个rdfs:label,它将以多种语言为您提供所需的名称和结果。因此,第一步是通过探索性查询找出DBPedia在这些资源上的作用:

SELECT (str(?leader) as ?label) ?p ?o
WHERE {
   dbpedia:Ecuador dbpedia-owl:leader ?leader .
   ?leader ?p ?o
}
您会发现?leader的匹配项具有多种语言的rdfs:label属性。要获得英文标签,请使用以下命令:

SELECT ?leaderName
WHERE {
   dbpedia:Ecuador dbpedia-owl:leader ?leader .
   ?leader rdfs:label ?leaderName .
   FILTER (lang(?leaderName) = "en")
}

有几种方法可以实现这一点。一种是使用SPARQL REPLACE获取所需字符串:

REPLACE(?leader, "^.*/", "")
这就得到了“Jorge_Glas”,然后你也可以用空格替换下划线:

REPLACE(?x, "_", " ")
但是,这不是使用DBPedia资源的方式。大多数DBPedia资源都有一个rdfs:label,它将以多种语言为您提供所需的名称和结果。因此,第一步是通过探索性查询找出DBPedia在这些资源上的作用:

SELECT (str(?leader) as ?label) ?p ?o
WHERE {
   dbpedia:Ecuador dbpedia-owl:leader ?leader .
   ?leader ?p ?o
}
您会发现?leader的匹配项具有多种语言的rdfs:label属性。要获得英文标签,请使用以下命令:

SELECT ?leaderName
WHERE {
   dbpedia:Ecuador dbpedia-owl:leader ?leader .
   ?leader rdfs:label ?leaderName .
   FILTER (lang(?leaderName) = "en")
}
replace很有用,但在这种情况下,前缀send to始终相同,strafter就足够了,就像在旧的、本质上相同的情况中一样。如果所有结果都知道前缀,则.strafter()的性能会更好。如果不是这样,则可以使用正则表达式解决方案。replace很有用,但在这样的情况下,前缀send to始终相同,strafter就足够了,就像旧版本一样,基本相同。如果所有结果都知道前缀,则.strafter()的性能会更好。如果不是这样,可以使用正则表达式解决方案。