SPARQL-запрос для поиска фильмов, созданных и выпущенных в США.

У меня есть следующий запрос SPARQL, который, по-видимому, правильно производит фильмы, произведенные в США (страна происхождения) и выпущенные в США (место публикации) в 2018 году. У меня проблема в том, что для каждого выпуска создается одна строка хотя другие релизы находятся за пределами США. Я добавил ограничение, чтобы уменьшить размер ответа.

Вот запрос:

SELECT ?item ?name ?publication_date ?placeLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  ?item rdfs:label ?name;
        wdt:P31 wd:Q11424;
        wdt:P495 wd:Q30; # -> country of origin US
        wdt:P577 ?publication_date.

  ?item p:P577 ?publication_statement.
  ?publication_statement pq:P291 ?place.

  FILTER(xsd:date(?publication_date) > "2018-01-01"^^xsd:date)
  FILTER(
     (LANG(?name)) = "en" 
        && ?place=wd:Q30) # -> place of publication
}
ORDER BY ?name
LIMIT 10

Я хотел бы изменить это так, чтобы он производил по одной строке на фильм, если он был выпущен в США в 2018 году.

Спасибо за вашу помощь. Также приветствуются комментарии по использованию FILTER или другого не идиоматического SPARQL.

1 ответ

Решение

Ты можешь использовать GROUP BY:

SELECT ?item  (SAMPLE(?name) as ?Name) (SAMPLE(?publication_date) as ?Date) WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  ?item rdfs:label ?name;
        wdt:P31 wd:Q11424;
        wdt:P495 wd:Q30; # -> country of origin US
        wdt:P577 ?publication_date.

  ?item p:P577 ?publication_statement.
  ?publication_statement pq:P291 ?place.

  FILTER(xsd:date(?publication_date) > "2018-01-01"^^xsd:date)
  FILTER(
     (LANG(?name)) = "en" 
        && ?place=wd:Q30) # -> place of publication
}
GROUP BY ?item
ORDER BY ?Name
LIMIT 10

Смотрите этот запрос на Wikidata.

И вам нужно исправить строку SELECT, поскольку вы не можете раздать неопределенные ключи, не относящиеся к группе, без явного указания. Смотрите аналогичный вопрос.

Другие вопросы по тегам