【问题标题】:how to search rdf with sparql using java?如何使用 java 用 sparql 搜索 rdf?
【发布时间】:2011-08-30 15:56:44
【问题描述】:

我正在使用 SPARQL 查询 rdf 数据的语义网络项目。我在 netbeans 中使用了 java,我的问题是我的程序运行,输入 rdf 文件并执行查询,但是 我的查询的 WHERE 区域没有被考虑。 (即)我得到一个 空表作为输出

你能告诉我任何关于JAVA中的SPARQL语法从rdf文件中检索所有姓名、电话号码的建议

【问题讨论】:

  • 您能发布一些示例数据以及其中一个查询的示例吗?

标签: java rdf sparql


【解决方案1】:

“不考虑我的查询的 WHERE 区域。(即)我得到一个空表作为输出”

我怀疑WHERE 子句没有被考虑。空表表明 a) 您没有数据或 b) 您的查询没有匹配项。

检索所有姓名和电话号码取决于所使用的词汇,但目前最常用的是foaf

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name, ?number
WHERE
{
    ?person foaf:name ?name .
    ?person foaf:phone ?number .
}

我们需要更多信息,所以这里有一些通用建议:

  1. 试试SELECT * WHERE { ?s ?p ?o }。有结果吗?如果没有,请尝试...
  2. 试试SELECT * WHERE { graph ?g { ?s ?p ?o } }。有结果吗?

如果两者都不起作用,则您的数据可能存在问题。如果只有第二个得到结果,则检查您是否正在查询图表。

这将使您对任何一种方式加载的内容都有一个很好的了解。如果看起来没问题:

  1. 删除WHERE 子句的一个元素。
  2. 如果仍然没有结果,请转到 1。
  3. 如果您获得结果,则表明您的查询存在问题。

您也可以尝试用变量替换术语。以这种方式工作可能有助于追踪导致查询失败的元素。

【讨论】:

  • 非常感谢您的回复先生。尝试了第一个查询,我得到了输出先生。但是第二个查询只给了我一个空表。并尝试了各种查询,但空表只是got.Here is my rdf file w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="resume.fake/foaf#"> Sheba8872443601
  • 问题出在我的 java 代码中,我希望如此。这是我的 java 代码,先生。请帮助我。 String queryString ="PREFIX rdf: w3.org/1999/02/22-rdf-syntax-ns#> " +"PREFIX foaf: resume.fake/foaf/#> " + "SELECT ?name ?number WHERE { ?x foaf:name ?name . ?x foaf:phone ?number .} ";查询 query = QueryFactory.create(queryString);QueryExecution qe = QueryExecutionFactory.create(query,model);ResultSet results = qe.execSelect();ResultSetFormatter.out(System.out, results, query);
  • 您拼错了“电话”。 应该是 rdf 文件中的
  • 更改并尝试了先生。但我仍然在输出中得到一个空表。
  • 您的 foaf 前缀错误,因为您拥有的是相对的,您的查询将中断。使用xmlns.com/foaf/0.1
猜你喜欢
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 2016-11-06
相关资源
最近更新 更多