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

Я пытаюсь использовать запрос 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

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

1 Ответ

14 голосов
/ 02 марта 2011

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

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

...