如何在 SPARQL 查询结果中只显示字符串而不显示 URI?
How to show only the string and not URI in SPARQL query result?
有以下查询,我只想显示 "Jorge Glas"
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
}
有几种方法可以解决这个问题。一种是使用SPARQL REPLACE获取你想要的字符串:
REPLACE(?leader, "^.*/", "")
这让你 "Jorge_Glas",然后你可以用 space:
替换下划线
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")
}
有以下查询,我只想显示 "Jorge Glas"
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
}
有几种方法可以解决这个问题。一种是使用SPARQL REPLACE获取你想要的字符串:
REPLACE(?leader, "^.*/", "")
这让你 "Jorge_Glas",然后你可以用 space:
替换下划线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")
}