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

У меня есть следующий запрос 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 Ответ

0 голосов
/ 20 декабря 2018

Вы можете использовать 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

См. Этот запрос на Викиданные .

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

...