2012-05-12 26 views
2

我试过这个查询,它编译并运行。但它只检索没有它们的值的列名。我如何检索它们的值?有没有特别的方法呢?语义网 - sparql查询

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"; 
+0

注意:''placeOfBirth'和'?birthPlace'之间的字符串没有空白 – Nobody

+0

请将RobV的答案标记为正确(绿色勾号),如果有帮助 –

回答

3

如果您获取列名并且没有值,那么它可能意味着没有对您的查询的答案。

尝试删除部分查询,直到您得到答案 - 首先的主要部分是FILTER子句。你正在过滤那些实际上并没有在你的查询中被绑定到的变量,所以它们总会被评估为false并且导致没有结果

+0

非常感谢,您的回答很有帮助。 –

+0

如果您发现RobV的答案有帮助,也许您应该将答案标记为正确。 – MikeJ