小编Gan*_*amy的帖子

如何正确使用SPARQL OPTIONAL来检索可能存在的资源的属性?

我正在尝试使用SPARQL查询来检索有关DBpedia资源(Person)的信息.我想通过参数化资源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
Run Code Online (Sandbox Code Playgroud)

我在OPTIONAL中留下了除标签,摘要和页面之外的所有内容,因为如果我对另一个人使用相同的查询,则可能没有这些属性.问题是,结果中没有显示这些可选属性.在Neil Simon的案例中,您可以看到birthDate,birthPlace和缩略图的值:http://dbpedia.org/resource/Neil_Simon .但是,当我运行查询时,这些值不会显示:DBpedia SPARQL查询.我做错了什么,如何选择性地检索这些属性?

sparql dbpedia

13
推荐指数
1
解决办法
9085
查看次数

尽管过滤器,DBpedia查询不止一次返回一些音乐剧

我正在尝试对DBpedia使用SPARQL查询来检索音乐剧列表和一些相关属性.然而,尽管使用了适当的滤镜(据我所知),结果包括许多音乐剧不止一次.这是我的查询:

    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX dbo: <http://dbpedia.org/ontology/>
    PREFIX dbpprop: <http://dbpedia.org/property/>
    SELECT ?label ?abstract ?book ?music ?lyrics
    WHERE { 
        ?play <http://purl.org/dc/terms/subject> <http://dbpedia.org/resource/Category:Broadway_musicals> ;
            rdfs:label ?label ;
            dbo:abstract ?abstract ;
            dbpprop:book ?book ;
            dbpprop:lyrics ?lyrics ;
            dbpprop:music ?music .
        FILTER (LANG(?label) = 'en')    
        FILTER (LANG(?abstract) = 'en')
        FILTER (LANG(?book) = 'en')
        FILTER (LANG(?lyrics) = 'en')
        FILTER (LANG(?music) = 'en')
    }
Run Code Online (Sandbox Code Playgroud)

结果列表包含许多重复条目.在这里粘贴查询: DBpedia SPARQL Explorer,你会看到从'妈妈咪呀开始!' 列表中有很多重复项.

知道我缺少什么来获得独特的结果,没有重复?谢谢!

[由格伦麦克唐纳编辑,澄清它的音乐剧在这里"重复",而不是三重奏.]

sparql dbpedia

3
推荐指数
1
解决办法
1624
查看次数

标签 统计

dbpedia ×2

sparql ×2