我正在尝试使用SPARQL查询来检索有关DBpedia资源(人员)的信息。我想使用相同的查询通过参数化资源URI来检索有关任何Person的数据。由于特定资源可能不存在某些属性,因此我使用了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


我在OPTIONAL中保留了标签,摘要和页面以外的所有内容,因为如果我对另一个人使用相同的查询,则它们可能没有这些属性。问题是,这些可选属性均未显示在结果中。在尼尔·西蒙(Neil Simon)的情况下,您可以看到birthDatebirthPlacethumbnail的值:http://dbpedia.org/resource/Neil_Simon。但是,当我运行查询:DBpedia SPARQL query时,这些值不会显示。我在做什么错,如何有选择地检索这些属性?

最佳答案

尽管您使用了OPTIONAL构造,但是映射模式本身需要其中的所有属性都可以匹配。因此,仅当您具有birthPlacebirthDatedeathDatethumbnail时,内部可选结构才被满足

我建议将OPTIONAL构造分解为多个OPTIONAL构造。

10-07 19:04
查看更多