如何使用SPARQL查询RDF增强有效搜索?

时间:2011-12-07 13:06:47

标签: rdf sparql

我的项目是关于让用户输入查询,并向用户显示最佳结果。这是我的RDF文件

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://www.xmlns.com/foaf/0.1">

    <rdf:Description>
    <foaf:name>interview</foaf:name>
    <foaf:url>urlname1</foaf:url>
    </rdf:Description>

    <rdf:Description>
    <foaf:name>technical</foaf:name>
    <foaf:url>urlname2</foaf:url>
    </rdf:Description>  </rdf:RDF>

现在,如果用户输入“技术问题”,我编码的方式是在数组中采用“技术”和“问题”并动态生成SPARQL查询,以便我的查询看起来像

  

String queryString =                                     “PREFIX rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#”+                                     “PREFIX foaf:http://www.xmlns.com/foaf/0.1”+                                       “SELECT?url WHERE {?foaf:name?name FILTER regex(?name,'”+ values [i] +“')?a foaf:url   ?URL}“;

这里的值[i]是为“技术”和“问题”定义的数组。所以这给了我一个输出

------------- 
| url       |
============= 
| "urlname2"|
-------------
     

当用户输入“面试问题”时,结果将是

------------- 
| url       |
============= 
| "urlname1"|
-------------

但是如果用户输入“技术面试问题”,那么它既可以像o / p那样提供

 ------------- 
 | url       |
 ============= 
 | "urlname2"|
 -------------
 ------------- 
 | url       |
 ============= 
 | "urlname1"|
 -------------

但我应该得到的o / p只是第一个给我网址准备技术问题的表(urlname2)。你能告诉我如何改变我的查询/ RDF格式以获得所需的o / p ?谢谢

1 个答案:

答案 0 :(得分:2)

数据并不代表您的想法。

你有一个对象,有两个不同的foaf:名字。

尝试将RDF / XML转换为Turtle或NTriples以更清晰地查看数据,RDF / XML非常混乱。