如何使用SPARQL查询同时获取字段和字段数?

时间:2015-11-23 19:10:33

标签: sparql semantic-web rdfs turtle-rdf

我是Semantic Web和SPARQL的新手。我正在制作音乐会的RDFS。它有歌曲条目,如:

con:song04
    rdfs:Class con:Repertoire;
    rdfs:label "Deewani Mastani";
    con:performedBy con:artist02.
    con:performedBy con:artist05.

我正在尝试获取歌曲列表及其数量,如果它们是由同一位艺术家执行的话。我一直在尝试从stackoverflow的一些教程,但不服务我的目的。

我正在使用的查询可能完全错误,如果有人可以在这方面帮助我,那么在学习中会非常有帮助。我正在使用Apache Jena Fuseki进行查询。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX co: <http://rhizomik.net/ontologies/copyrightonto.owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
prefix con: <http://www.example.com/paras/concert#>

#Use SPARQL to count and list the songs that two artists share.
SELECT ?songs (COUNT(?artist) AS ?count)  
WHERE
{ 
  ?s rdfs:label ?songs .
  ?s rdf:type con:Repertoire.
  ?s con:performedBy ?artist.
  ?artist rdf:type con:Artist .
  filter( ?count > 1 )
}

1 个答案:

答案 0 :(得分:1)

根据给出的描述,我完全同意@Joshua Taylor并且相信你想要做的事情可以通过查询来实现。请检查您的RDFS是否合适。

SELECT ?songs (COUNT(?artist) AS ?count)  
WHERE
{ 
  ?s rdfs:label ?songs .
  ?s rdfs:Class con:Repertoire.
  ?s con:performedBy ?artist.
  ?artist rdfs:Class con:Artist .
}
GROUP BY ?songs
HAVING (?count > 1 )