Sar*_*fia 7 sparql dbpedia virtuoso
我有一个关于我正在尝试从教程构建的SPARQL查询的问题.我想生成三元组,它返回一个乐队成员列表以及他们使用DBPedia端点所在的乐队.
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/resource/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?bandname where {
?person foaf:name ?name .
?band dbo:bandMember ?person .
?band dbo:genre dbpedia:Punk_rock .
?band dbp:name ?bandname .
}
Run Code Online (Sandbox Code Playgroud)
我也使用[SPARQL查询验证器] [2]试图找出我的问题,似乎我使用了不正确的前缀"dbp:name?bandname"我只是希望在可能的情况下以JSON返回三元组.
一旦我可以运行它,我想添加另一个前缀,从GeoNames,以查看与乐队相关的地方,如果可能(但该部分是在未来).任何见解将不胜感激!
您的查询存在一些问题.
PREFIX dbp: <http://dbpedia.org/property/>这是我用来检索与其成员关联的乐队列表的查询:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?members ?bandName where {
?band dbo:genre dbr:Punk_rock .
?band dbp:currentMembers ?members.
?band foaf:name ?bandName
FILTER(langMatches(lang(?bandName), "en"))
}
Run Code Online (Sandbox Code Playgroud)
过滤器部分允许我们避免重复,以防文字也在其他语言中定义.
但是如果你仍然想使用dbo:bandMember属性,这个查询也可以完成这项工作:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?personName ?bandName where {
?band dbo:bandMember ?person .
?person foaf:name ?personName .
?band dbo:genre dbr:Punk_rock .
?band foaf:name ?bandName
FILTER(langMatches(lang(?bandName), "en"))
FILTER(langMatches(lang(?personName), "en"))
}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
问题是未定义的前缀dbpedia.另外我认为你必须替换dbp:name为foaf:name:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/resource/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?bandname where {
?person foaf:name ?name .
?band dbo:bandMember ?person .
?band dbo:genre dbp:Punk_rock .
?band foaf:name ?bandname .
}
Run Code Online (Sandbox Code Playgroud)
唉,SELECT你不会得到三元组,而只是表格结果中的名字(或其他东西).很像SQL.如果你想要三元组,你需要CONSTRUCT
| 归档时间: |
|
| 查看次数: |
9306 次 |
| 最近记录: |