Select 一个出版日期与给定出版地点匹配,使用维基数据 + SPARQL 为给定电影

Select one publication date matching a given place of publication using wikidata + SPARQL for a given film

我正在尝试了解如何使用 SPARQL select 从维基数据的出版物地点列表中选择一个出版物日期。我有一个我认为很接近的查询,但我正在寻找一些帮助来缩小它的范围。到目前为止我有以下内容:

SELECT ?item ?itemLabel ?publication_date WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  VALUES (?item) {(wd:Q18486021)}

  {SELECT ?item ?publication_date WHERE {
     ?item p:P577 ?publication_date_entry.
     ?publication_date_entry pq:P291 wd:Q30.
     ?item wdt:P577 ?publication_date.
  }}
}

我正在尝试从 https://www.wikidata.org/wiki/Q18486021(星球大战:最后的绝地武士)中获取与美国匹配的发行日期。如果向下滚动到发布日期部分,您会注意到有 5 个版本。我想 select 美国发布的日期(2017 年 12 月 15 日)。它恰好是第一个,但我想概括一下,这样我就可以提取任何电影的美国上映日期。从这里我想概括这一点以匹配所有电影的美国发行日期。

认为 我在上面做的是一个子查询,它试图匹配美国发布日期,但它会为每个发布生成一行(总共 5 个)。

在@AKSW 的帮助下,我得到了以下结果。我使用了 OPTIONALGROUP BYGROUP_CONCAT,因为有些电影的美国上映日期不止一个。

SELECT ?item ?itemLabel 
       (GROUP_CONCAT(DISTINCT ?publication_date;separator=',') as ?publication_date)
  WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  VALUES (?item) {(wd:Q23780734) (wd:Q18486021) (wd:Q23780914) (wd:Q22000542)}
  ?item wdt:P31 wd:Q11424;


  OPTIONAL {
     ?item p:P577 ?publication_date_entry.
     ?publication_date_entry ps:P577 ?publication_date. # publication date statement
     ?publication_date_entry pq:P291 wd:Q30.            # qualifier on the release date
  }

  FILTER(xsd:date(?publication_date) > "2017-01-01"^^xsd:date)
}
GROUP BY ?item ?itemLabel
LIMIT 10