she*_*eba 2 resultset sparql jena
我正在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
我不确定你在这里消除你的意思,但你可以在一个查询中完成所有这些,例如:
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,'(prepare|for|aricent)')
?a foaf:url ?url
}
Run Code Online (Sandbox Code Playgroud)
这将返回包含任何这些单词的任何字符串.
或者,如果您只想要具有所有这些单词的字符串
FILTER regex(?name,'prepare')
FILTER regex(?name,'for')
FILTER regex(?name,'aricent')
Run Code Online (Sandbox Code Playgroud)
从你的问题中不清楚你想要实现什么.
| 归档时间: |
|
| 查看次数: |
689 次 |
| 最近记录: |