【问题标题】:How to Query in Sesame openrdf using SPARQL in Android?如何在 Android 中使用 SPARQL 在 Sesame openrdf 中进行查询?
【发布时间】:2014-05-02 11:02:26
【问题描述】:

我正在尝试使用 Sesame API 查询本体。通常的查询方式是不可能的,因为它给出了UnsupportedQueryLanguageException。没有工厂可用于查询语言 SPARQL。

最终我正在查询:

SPARQLParser parser=new SPARQLParser();
ParsedQuery query=parser.parseQuery(queryString,null);

StatementPatternCollector collector=new StatementPatternCollector();
query.getTupleExpr().visit(collector);

List<StatementPattern> patterns=collector.getStatementPatterns();

当我显示结果时,它不包含任何语句;如何显示报表?

【问题讨论】:

  • 到目前为止你尝试过什么?没有一些上下文代码,不清楚你在问什么。 “通常的查询方式”:这是什么?
  • 出于兴趣:你是怎么想出这段代码的?我问的原因是我记得其他人也做过类似的事情,所以我想知道网上是否有一个教程错误地推荐了这种查询方法......
  • 正如 Joshua 在他的回答中所说:这段代码不执行查询,它只是解析查询字符串。这是完全错误的做法。您面临的问题是类路径配置之一,而不是编程问题,您应该集中精力解决这个问题。

标签: android rdf sparql sesame


【解决方案1】:

如果您收到UnsupportedQueryLanguageException,您可能没有正确设置类路径。 Sesame 通过 JDK ServiceLoader 加载内容,因此您可能缺少包含 SPARQL 内容的 jar 文件。

就您的代码 sn-p 而言,这不是执行 SPARQL 查询。这就是遍历已解析查询的代数并收集查询中包含的任何 BGP。我不认为那是你的本意。

仔细检查您的类路径以确保您包含适当的 Sesame jar,然后重新尝试查询 Sesame Repository 的正常方式。

【讨论】:

  • 鉴于异常中的特定错误消息,我会说 OP 至少缺少sesame-queryparser-sparql-&lt;version&gt;.jarsesame-queryparser-api-&lt;version&gt;.jar。一些一般性建议:使用依赖管理工具导入 Sesame 库,如 Maven 或 Ivy。
  • 是的,我在网上得到了这个代码。我所说的通常方法是使用简单的方法来执行此操作 TupleQuery tuplequery=con.prepareTupleQuery(QueryLanguage.SPARQL, queryString); TupleQueryResult 结果=tuplequery.evaluate().
  • 我正在为 Android 应用程序做这件事。如果你记得我会问类似的问题来加载文件。这个问题是通过编写 TurtleParser parser=new TurtleParser() 然后在代码中使用这个解析器来解决的。之后,我遇到了 Query 的问题,我想可能可以用类似的方式解决。
  • 我现在在 Eclipse 中为我的 Android 应用程序使用 Maven,但现在它无法在 Main Activity 上运行 ClassNotFoundException。
  • @user3556249 如果您解决了其他问题,您是否愿意将您的解决方案实际添加到该问题作为答案?这样,其他有类似问题的人可以更容易地找到它。谢谢。
猜你喜欢
  • 2013-08-14
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
相关资源
最近更新 更多