我怎么只能显示字符串?不使用URI SPARQL

时间:2016-03-06 18:41:25

标签: sparql

prefix dbp: <http://dbpedia.org/property/> 
prefix dbpedia:<http://dbpedia.org/resource/>
prefix dbpedia-owl:<http://dbpedia.org/ontology/>
SELECT str(?leader) as ?label
WHERE {
dbpedia:Ecuador dbpedia-owl:leader ?leader
}

I desire to show only "Jorge Glas"

我希望只展示“Jorge Glas”

1 个答案:

答案 0 :(得分:4)

有几种方法可以解决这个问题。一种是使用SPARQL REPLACE获取所需的字符串:

REPLACE(?leader, "^.*/", "")

这会让你“Jorge_Glas”,然后你可以用空格替换下划线:

REPLACE(?x, "_", " ")

但是,这不是您应该如何使用DBPedia资源。大多数DBPedia资源都有一个rdfs:标签,它将为您提供多种语言的所需名称结果。因此,第一步是通过探索性查询找出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")
}