Запрос возвращает нулевые результаты, потому что нет Джека Смита, о котором есть статья на английском языке sh и который является частью Wikipedia.org.
Каждая строка в теле запроса SPARQL является способ ограничить поиск в отличие от простого способа добавления новых переменных.
Посмотрите на этот запрос:
SELECT ?person ?dateOfDeath
WHERE {
?person a :Person .
?person :date_of_death ?dateOfDeath .
}
Это вернет только людей, которые иметь дату смерти, т.е. кто умер, а также дату. Если вы хотите вернуть людей и , необязательно, дату их смерти, т.е. если они все еще живы, вам не нужна дата, но вы действительно хотите этого человека, тогда используйте это:
SELECT ?person ?dateOfDeath
WHERE {
?person a :Person .
OPTIONAL {?person :date_of_death ?dateOfDeath }
}
Что касается вашего второго вопроса, я бы попробовал что-то вроде этого:
SELECT ?boolean
WHERE{
BIND(EXISTS{?item ?label "Jack Smith"} AS ?boolean)
}
Это, конечно, также может быть выполнено, например, как запрос cURL:
curl https://query.wikidata.org/bigdata/namespace/wdq/sparql -X POST --data 'query=SELECT%20%3Fboolean%0AWHERE%7B%0ABIND%28EXISTS%7B%3Fitem%20%3Flabel%20%22Jack%20Smith%22%7D%20AS%20%3Fboolean%29%0A%20%20%7D'