我试图获取每部电影及其属性的特定年份(仅限1990年)的电影列表。我尝试了不同的方法来获得SPARQL,但却没有。如何将流派分组为单列?
我想要的格式是这里的一些属性 http://schema.org/Movie
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX v: <http://www.wikidata.org/prop/statement/>
PREFIX q: <http://www.wikidata.org/prop/qualifier/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?q ?film_title (GROUP_CONCAT(DISTINCT(?genreID); separator=", ") as ?genre) WHERE {
?q wdt:P31 wd:Q11424.
?q rdfs:label ?film_title filter (lang(?film_title) = "en").
?q wdt:P136 ?genreID.
?genreID rdfs:label ?genre.
?q wdt:P161 ?actorID.
?actorID rdfs:label ?actor filter (lang(?actor) = "en").
} LIMIT 100
答案 0 :(得分:0)
聚合函数的使用通常需要构建要应用函数的事物/行组,即投影变量上的GROUP_BY
不表示聚合函数的结果:
SELECT ?q ?film_title (GROUP_CONCAT(DISTINCT(?genreID); separator=", ") as ?genres) WHERE {
?q wdt:P31 wd:Q11424 .
?q rdfs:label ?film_title .
FILTER (lang(?film_title) = "en")
?q wdt:P136 ?genreID .
?genreID rdfs:label ?genre .
?q wdt:P161 ?actorID .
?actorID rdfs:label ?actor
FILTER (lang(?actor) = "en")
}
GROUP BY ?q ?film_title
LIMIT 100
?genre
函数中的变量GROUP_CONCAT
:GROUP_CONCAT(DISTINCT(?genre); separator=", ")
< / LI>
?genres