【问题标题】:using Sesame to process a SPARQL/XML stream (output from Vitruoso)使用 Sesame 处理 SPARQL/XML 流(来自 Vitruoso 的输出)
【发布时间】:2014-04-30 06:15:38
【问题描述】:

我有一个 SPARQL/XML 结果流(恰好是从 Virtuoso 服务器返回的),我想在结果从 http 连接返回时对其进行处理。

Sesame 有一个非常好的库来执行此操作 - 假设您说的是完整的 Sesame,这很容易而且我已经实现了。但是,我没有让 Sesame 生成请求,而是通过不完整 Sesame 的不同 HTTP 连接来执行此操作,而且我不知道让 Sesame 库执行此操作的直接方法。

使用 Sesame,您可以使用 RepositoryConnection 创建带有 .prepareTupleQueryTupleQuery,然后将 .evaluate 传递给解决方案处理程序(扩展 TupleQueryResultHandlerBase 的东西)。

我假设在后台有一些类,我可以将解决方案处理程序和 InputStream 传递给并让 Sesame 类负责解析、缓冲和进行回调等。当然代码是在那里,但我已经在源头中跋涉了几个小时,似乎我在绕圈子。

如果还有其他库或解决方案也很好,我很乐意接受,但我想我会利用我的其他芝麻相关代码。

【问题讨论】:

    标签: java sesame virtuoso


    【解决方案1】:

    您可以为此使用 Sesame 的 QueryResultIO 实用程序。最简单的方法是让它将流解析为查询结果对象。像这样:

    InputStream in = ...;
    TupleQueryResult result = QueryResultIO.parse(in, TupleQueryResultFormat.SPARQL);
    

    上面是硬连线来创建一个结果对象。如果您想对处理进行更多控制,您可以创建一个 TupleQueryResultParser 对象并将其分配给您自己的 TupleQueryResultHandler 实现。像这样的:

    TupleQueryResultParser parser = QueryResultIO.createParser(TupleQueryResultFormat.SPARQL);
    
    TupleQueryResultHandler handler = new MyCustomStreamingResultHandler();
    parser.setQueryResultHandler(handler);
    
    parser.parseQueryResult(in); 
    

    或者像这样,如果您使用的是旧版本的 Sesame(2.6 或更早版本):

    TupleQueryResultHandler handler = new MyCustomStreamingResultHandler();
    parser.setTupleQueryResultHandler(handler);
    
    parser.parse(in); 
    

    Sesame 提供了几个现有的 TupleQueryResultHandler 实现,但如果您希望完全控制解析器输出处理,也可以非常简单地创建自己的实现。

    【讨论】:

    • 谢谢。虽然我认为你的答案中有一个“错字”而不是 parser.setQueryResultHandler 它应该是 parser.setTupleQueryResultHandler。
    • 显然编辑必须至少有 6 个字符 - 所以我不能只添加“元组”,我也必须在底部添加“(已编辑)”。奇怪。
    • 对不起,但我原来的答案实际上是正确的。 setTupleQueryResultHandler 已弃用,setQueryResultHandler 是推荐的方法。我将为您添加一个对 Javadoc 的引用。尽管按照这种逻辑,我对parse 方法的使用也是不正确的。现已修复。
    • 看起来它在 2.7 中已被弃用?那里仍然有很多 Sesame 2.6 代码。看起来新的在 2.6 中不存在,对吧?
    • 是的,确实如此,所以确实,如果您使用的是旧版本的 Sesame,则需要使用旧方法。
    猜你喜欢
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2016-10-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    相关资源
    最近更新 更多