我正在Semantic Web下做一个项目.这是我正在使用的RDF文件的一个例子
Run Code Online (Sandbox Code Playgroud)<?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>aricent</foaf:name> <foaf:url>www.placementhub.net</foaf:url> </rdf:Description> </rdf:RDF>
如果用户输入"准备aricent"来搜索链接,我编码的方式是将每个值"prepare","for","aricent"并动态生成SPARQL查询以查找相关记录.这是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?name?url WHERE {?a foaf:name?name FILTER regex(?name,'"+ values [i] +"')?a foaf:url?url}";
其中values [i]现在在第一个循环中"准备",第二个循环中的"for"和第三个循环中的"aricent".在这种情况下,如果它被执行,我会得到
--------------------------------------
| name | url |
======================================
| | |
--------------------------------------
--------------------------------------
| name | url |
======================================
| | |
--------------------------------------
--------------------------------------
| name | url |
======================================
| "aricent" | "www.placementhub.net" |
--------------------------------------
Run Code Online (Sandbox Code Playgroud)
因此,对于"prepare"和"for",结果集为空(没有值),结果仅为"aricent"获得,因为它在RDF中可用.您可以告诉我如何消除(只有具有值的表应该向用户显示获得的空结果集?我使用了JENA API.Thank You