如何配置 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 的文章。
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 的文章。