yms*_*aap 4 sparql dbpedia skos
我正在对DBpediaset进行SPARQL查询,但是由于查询限制,我遇到了一些问题(由于缺乏详细的SPARQL知识):
我首先“让”所有音乐艺术家:
?person rdf:type <http://dbpedia.org/ontology/MusicalArtist> .
Run Code Online (Sandbox Code Playgroud)
但是我想将其限制为更广泛的类别Category:American_musicians
(通过遍历skos:broader
?):如何?
* =虽然问题很具体,但是当我想运行sparql查询时,我已经多次遇到了这个问题。
小智 5
使用SPARQL 1.1中的属性路径可以使此操作更容易
SELECT DISTINCT ( ?person )
WHERE
{
?person rdf:type dbpedia-owl:MusicalArtist .
?person skos:subject skos:broader* category:American_musicians .
}
Run Code Online (Sandbox Code Playgroud)
在这里,它显示可以通过该skos:broader
属性访问的所有祖先。
没有真正好的方法来做到这一点,但这里有一个详细的方法:
SELECT DISTINCT ( ?person )
WHERE
{
?person rdf:type dbpedia-owl:MusicalArtist .
{
?person skos:subject [ skos:broader category:American_musicians ] .
} UNION {
?person skos:subject [ skos:broader [ skos:broader category:American_musicians ] ] .
} UNION {
?person skos:subject [ skos:broader [ skos:broader [ skos:broader category:American_musicians ] ] ] .
} UNION {
?person skos:subject [ skos:broader [ skos:broader [ skos:broader [ skos:broader category:American_musicians ] ] ] ] .
} UNION {
?person skos:subject [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader category:American_musicians ] ] ] ] ] .
} UNION {
?person skos:subject [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader category:American_musicians ] ] ] ] ] ] .
} UNION {
?person skos:subject [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader category:American_musicians ] ] ] ] ] ] ] .
}
}
Run Code Online (Sandbox Code Playgroud)
为了确定需要多少级别,您可以将 SELECT DISTINCT 更改为 SELECT COUNT DISTINCT,并在计数停止增加时停止添加级别。
归档时间: |
|
查看次数: |
2273 次 |
最近记录: |