Я хочу загрузить следующие данные о конкретных c людях с помощью службы запросов Wikidata:
свойства
- дата рождения
- образ жизни
квалификатор
- время начала образа жизни
- время окончания образа жизни
И мне нужна ровно одна строка для каждого человека на выходе, независимо от того, установлены ли свойства / квалификаторы или несколько свойств / квалификаторов.
Мне удалось создать запрос, который работает с людьми, которые имеют хотя бы один образ жизни, но когда его нет, запрос занимает много времени, и вместо пустых ячеек загружается множество образов жизни, времени начала и окончания, которые не связаны с человеком.
Это запрос для людей. Q185140 , Q463434 и Q3378937 и Q3378937 не имеют образа жизни, но все же образ жизни , образ жизниStarts и образ жизниEnds клетки не может быть пустым, как ожидалось, и вместо этого заполнено значениями:
SELECT ?human ?humanLabel
(GROUP_CONCAT(DISTINCT ?lifestyleLabel;separator="|") AS ?lifestyles)
(GROUP_CONCAT(DISTINCT ?lifestyleStart;separator="|") AS ?lifestylesStarts)
(GROUP_CONCAT(DISTINCT ?lifestyleEnd;separator="|") AS ?lifestylesEnds)
(GROUP_CONCAT(DISTINCT ?dateBirth;separator="|") AS ?dateBirths)
WHERE {
VALUES ?human { wd:Q185140 wd:Q463434 wd:Q3378937 } .
OPTIONAL{ ?human p:P1576 ?statement . }
OPTIONAL{ ?statement ps:P1576 ?lifestyle . }
OPTIONAL{ ?statement pq:P580 ?lifestyleStart . }
OPTIONAL{ ?statement pq:P582 ?lifestyleEnd . }
OPTIONAL{ ?human wdt:P569 ?dateBirth . }
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
?human rdfs:label ?humanLabel .
?lifestyle rdfs:label ?lifestyleLabel .
}
}
GROUP BY ?human ?humanLabel
Вы можете выполнить запрос и посмотреть вывод здесь .
Что мне нужно изменить получить пустые ячейки, если свойства / квалификаторы не установлены?
Спасибо!