我的项目是关于让用户输入查询,并向用户显示最佳结果。这是我的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 ?谢谢
答案 0 :(得分:2)
数据并不代表您的想法。
你有一个对象,有两个不同的foaf:名字。
尝试将RDF / XML转换为Turtle或NTriples以更清晰地查看数据,RDF / XML非常混乱。