语义Web - sparql查询

时间:2012-05-12 09:53:41

标签: java sparql jena

我试过这个查询,编译并运行。但它只检索没有值的列名。我该如何检索他们的价值观?那有什么特别的方法吗?

String str = "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 {"+
        "OPTIONAL {<http://dbpedia.org/resource/Neil_Simon> dbpprop:placeOfBirth ?placeOfBirth ; dbo:abstract ?abstract ; foaf:page ?page .}"+
        "OPTIONAL {<http://dbpedia.org/resource/Neil_Simon> dbpprop:placeOfBirth ?placeOfBirth ; dbpprop:birthPlace ?birthPlace ;}"+
        "OPTIONAL {<http://dbpedia.org/resource/Neil_Simon> dbpprop:placeOfBirth ?placeOfBirth ;  dbo:birthDate ?birthDate ;}"+
        "OPTIONAL {<http://dbpedia.org/resource/Neil_Simon> dbpprop:placeOfBirth ?placeOfBirth ;  dbo:deathdate ?deathDate ;}"+
        "OPTIONAL {<http://dbpedia.org/resource/Neil_Simon> dbpprop:placeOfBirth ?placeOfBirth ; dbo:thumbnail ?thumbnail .}"+
        "FILTER (LANG(?label) = 'en')"+    
        "FILTER (LANG(?abstract) = 'en')}"+
    "LIMIT 1";

1 个答案:

答案 0 :(得分:3)

如果您获得列名而没有值,则可能意味着您的查询没有答案。

尝试删除部分查询,直到得到答案 - 开头的主要部分是FILTER子句。您正在过滤实际上未在查询中绑定的变量,因此它们将始终评估为false并导致无结果