Я новичок в 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