【发布时间】:2013-05-16 18:11:28
【问题描述】:
我正在尝试创建一个 Sparql-Query 来获取与讲座相关的所有消息。我是整个“语义网”故事的新手,所以如果使用命名空间完全错误,请耐心等待。
我尝试执行的查询是:
PREFIX siocNS: <http://rdfs.org/sioc/ns#>
PREFIX rdfPred: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX purlPred: <http://purl.org/dc/terms/>
PREFIX purlPredLecture: <http://purl.org/<CENSORED>/lecture/>
select ?post ?title ?content ?time ?creator where
{
?post rdfPred:type siocNS:Post.
?post purlPred:title ?title.
?post purlPred:content ?content.
?post purlPred:created ?time.
?post purlPred:creator ?creator.
?post purlPred:context purlPredLecture:1337-7331.
}
1337-7331 是一个 ID。
在 Sesame-Workbench 上,查询似乎工作正常(因为我得到了 2 个预期的行)。在 Java 上,使用 Jena,我的 QueryExecuion 似乎不正确。
这是我的代码:
String prefix = "PREFIX siocNS: <http://rdfs.org/sioc/ns#>\n"
+ "PREFIX rdfPred: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"
+ "PREFIX purlPred: <http://purl.org/dc/terms/>\n"
+ "PREFIX purlPredLecture: <http://purl.org/<CENSORED>/lecture/>\n";
String queryString = "select ?post ?title ?content ?time ?creator where\n"
+ "{\n"
+ "?post rdfPred:type siocNS:Post.\n"
+ "?post purlPred:title ?title. \n"
+ "?post purlPred:content ?content. \n"
+ "?post purlPred:created ?time. \n"
+ "?post purlPred:creator ?creator.\n"
+ "?post purlPred:context purlPredLecture:"
+ lectureID + ".\n" + "}";
logger.info("Created Query:" + prefix + queryString);
Query query = QueryFactory.create(prefix
+ queryString, Syntax.syntaxSPARQL);
query.addResultVar("?post");
query.addResultVar("?title");
query.addResultVar("?content");
query.addResultVar("?time");
query.addResultVar("?creator");
Model model = ModelFactory.createDefaultModel();
QueryExecution execution = QueryExecutionFactory
.create(query, model);
ResultSet execSelect = execution.execSelect();
while (execSelect.hasNext()) {
...
DO SOME STUFF
...
}
上面显示的查询是从 java-debugger 复制的。我在准备Query(Execution) 时是否遗漏了什么?Sesame-Workbench 是否完成了遗漏的内容?
感谢您的帮助!
dpa
【问题讨论】:
-
您遇到的异常是什么? LectureID 的值是多少?
-
我没有得到任何异常。执行后 'execution.execSelect();'结果集为空。 LectureID 的值为 1337-7113(与查询相同)
-
OMG 现在我看到了缺少的内容...错过了设置服务器(包括 ReposiotryID)。但没有看到任何设置这些信息的可能性。有什么帮助吗?
-
好的,我解决了我的问题。由于我使用opensesame,我也使用它的JAR 来创建我的队列。完美运行。至少感谢所有人
-
请在此处发布您的解决方案作为答案并接受它,这样您的问题就不会被标记为“未回答”,其他人可以从您的解决方案中学习