如何配置 Virtuoso URL 重写规则以在 JSON 中给出 SPARQL 结果?

How to configure Virtuoso URL rewrite rule to give SPARQL results in JSON?

JSON 在 SPARQL 端点接口中作为结果选项可用,但在配置重写规则时它丢失了。目前 Virtuoso 07.20.3217 中的 SPARQL 结果选项只有 "Automatic"、"RDF/XML" 和 "Turtle"。

如何配置规则以在JSON中给出结果?

正如在回复您给 OpenLink 支持的电子邮件中所回答的那样 --

这是对 Conductor 界面的疏忽,因为 SPARQL 查询结果可以以 /sparql 查询表单页面(包括 JSON)可用的任何序列化格式返回。我们已经记录了一个内部增强请求,将这些额外的格式添加到 Conductor URL 重写规则 UI。

同时,您可以通过Conductor UI中的link导出现有规则,查看用于创建所选规则的SQL。对于默认的 RDF/XML 输出格式,它显示为 format=application%2Frdf%2Bxml.

the list of supported output formats 开始,您应该能够将导出规则中的 format=application%2Frdf%2Bxml 更改为类似 format=application%2Frdf%2Bjson 的内容,以获得您想要的 JSON 输出。然后您可以通过 isql 手动加载编辑的规则,它看起来像:

DB.DBA.VHOST_REMOVE (
    lhost=>'*ini*',
    vhost=>'*ini*',
    lpath=>'/rewrite-json'
);

DB.DBA.VHOST_DEFINE (
    lhost=>'*ini*',
    vhost=>'*ini*',
    lpath=>'/rewrite-json',
    ppath=>'/',
    is_dav=>0,
    is_brws=>0,
    def_page=>'',
    vsp_user=>'dba',
    ses_vars=>0,
    opts=>vector ('browse_sheet', '', 'url_rewrite', 'http_rule_list_1'),
    is_default_host=>0
);

DB.DBA.URLREWRITE_CREATE_RULELIST ( 
    'http_rule_list_1', 1,
    vector ('http_rule_1')
);

DB.DBA.URLREWRITE_CREATE_REGEX_RULE ( 
    'http_rule_1', 1,
    '/rewrite-json',
    vector (),
    0,
    '/sparql?query=select%%20%%2A%%20where%%20%%7B%%3Fs%%20%%3Fp%%20%%3Fo%%7D%%20limit%%205&format=application%2Frdf%2Bjson',
    vector (),
    NULL,
    NULL,
    2,
    301,
    ''
);

注意:您将无法在 Conductor 中编辑此重写规则,直到此问题在其中得到解决,因为 JSON 输出格式将被当前列表中的格式之一覆盖。

另请参阅这篇关于 working with Virtuoso URL Rewrite Rules 的文章。