Как правильно использовать SPARQL OPTIONAL для извлечения атрибутов для ресурса, который может существовать?

Я пытаюсь использовать запрос SPARQL для получения информации о ресурсе DBpedia (Person). Я хотел бы использовать один и тот же запрос для извлечения данных о любом Человеке, параметризируя URI ресурса. Поскольку некоторые атрибуты могут не существовать для определенного ресурса, я использую инструкцию OPTIONAL. Вот мой запрос:

    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX dbo: <http://dbpedia.org/ontology/>
    PREFIX dbpprop: <http://dbpedia.org/property/>
    PREFIX foaf: <http://xmlns.com/foaf/0.1/>
    SELECT DISTINCT ?label ?abstract ?placeOfBirth 
        ?birthPlace ?birthDate ?deathDate ?page ?thumbnail 
    WHERE { 
        <http://dbpedia.org/resource/Neil_Simon> rdfs:label ?label ;
            dbo:abstract ?abstract ;
            foaf:page ?page .
        OPTIONAL {
            <http://dbpedia.org/resource/Neil_Simon> dbpprop:placeOfBirth ?placeOfBirth ;
                dbpprop:birthPlace ?birthPlace ;
                dbo:birthDate ?birthDate ;
                dbo:deathdate ?deathDate ;
                dbo:thumbnail ?thumbnail .
        }
        FILTER (LANG(?label) = 'en')    
        FILTER (LANG(?abstract) = 'en')
    }
    LIMIT 1

Я оставил все, кроме метки, abstract и page в OPTIONAL, поскольку, если я использую один и тот же запрос для другого человека, у них могут не быть этих свойств. Проблема в том, что ни один из этих необязательных атрибутов не отображается в результатах. В случае с Нилом Саймоном вы можете видеть, что существуют значения для даты рождения, рождения и эскиза: http://dbpedia.org/resource/Neil_Simon. Однако эти значения не отображаются, когда я запускаю запрос: DBpedia SPARQL query. Что я делаю неправильно, и как я могу получить эти свойства?

Ответы

Ответ 1

Хотя вы использовали опциональную конструкцию, для самого шаблона карты нужны все атрибуты внутри для соответствия. Таким образом, только если у вас есть место рождения, дата рождения, смерти и эскиз, внутренняя дополнительная конструкция удовлетворена

Я бы предложил разбить необязательную конструкцию на несколько необязательных конструкций.