Совокупные результаты, чтобы получить 1 запись - PullRequest
0 голосов
/ 30 января 2019

Я новичок в SPARQL и экспериментирую с моими данными.Я пробовал следующий запрос:

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX locah: <http://data.archiveshub.ac.uk/def/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX ore: <http://www.openarchives.org/ore/terms/>
SELECT ?language ?date ?authorName ?authorSurname ?associatedDeeds ?repository
WHERE{
  ?x dcterms:identifier "R494Vol1".
  ?x locah:dateCreatedAccumulatedString ?date.
  ?x dcterms:language ?language.
  ?x dcterms:creator ?y.
  ?y foaf:firstName ?authorName.
  ?y foaf:family_name ?authorSurname.
  ?x locah:accessProvidedBy ?repository.
  ?x ore:aggregates ?associatedDeeds.
}

Это возвращает несколько записей.Однако language, date, authorName, authorSurname и repository все одинаковы.Единственное значение, которое изменяется, это associatedDeeds.Можно ли получить 1 запись со списком associatedDeeds?

Обновление:

Я попытался group_concat, который работает, как ожидалось.Однако, поскольку ?associatedDeeds являются ресурсами, они преобразуются в литерал - String.Есть ли способ сохранить ссылку URI?

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX locah: <http://data.archiveshub.ac.uk/def/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX ore: <http://www.openarchives.org/ore/terms/>
SELECT ?language ?date ?authorName ?authorSurname ?repository (group_concat(?associatedDeeds) as ?deeds)
WHERE{
   ?x dcterms:identifier "MS588".
   ?x locah:dateCreatedAccumulatedString ?date.
   ?x dcterms:language ?language.
   ?x dcterms:creator ?y.
   ?y foaf:firstName ?authorName.
   ?y foaf:family_name ?authorSurname.
   ?x locah:accessProvidedBy ?repository.
   ?x ore:aggregates ?associatedDeeds.
}
 group by ?language ?date ?authorName ?authorSurname ?repository
...