首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在dotNetRDF中配置SPARQL端点?

如何在dotNetRDF中配置SPARQL端点?
EN

Stack Overflow用户
提问于 2015-05-31 23:40:23
回答 1查看 479关注 0票数 2

我试图指定一个配置文件,它在dotNetRDF中设置SPARQL端点。在将其集成到应用程序之前,我正在测试配置文件,方法是加载配置文件以在rdfServer GUI工具中运行本地服务器,然后尝试从Store工具访问该服务器,这两者都来自dotNetRDF工具 (尽管这与问题无关)。

通过使用用于设置SPARQL处理程序的最小配置代码来跟踪手册

代码语言:javascript
复制
@prefix dnr: <http://www.dotnetrdf.org/configuration#> .

<dotnetrdf:/sparql> a dnr:HttpHandler ;
  dnr:type "VDS.RDF.Web.QueryHandler" ;
  dnr:queryProcessor _:proc .

_:proc a dnr:SparqlQueryProcessor ;
  dnr:type "VDS.RDF.Query.LeviathanQueryProcessor" ;
  dnr:usingStore _:store .

_:store a dnr:TripleStore ;
  dnr:type "VDS.RDF.TripleStore" .

文件上说:

这指定了一个Handler的配置,它通过提供SPARQL查询端点来响应URI /sparql上的请求。

我加载这个配置并在localhost:1987上运行它。但是,当试图按所述方式访问它时,通过在没有默认图形的情况下向SELECT * WHERE { ?a ?b ?c . } LIMIT 10发送一个简单查询( http://localhost:1987/sparql ),来自服务器的日志输出总是包含以下注释:

错误没有已注册的处理程序可以处理此请求

我还尝试在提供的示例的基础上构建,从本地文件加载图形,同时考虑到如何从相应的手册页中定义图形的信息(为了进行测试,加载比萨本体文件,该文件与配置文件放在同一个目录中):

代码语言:javascript
复制
@prefix dnr: <http://www.dotnetrdf.org/configuration#> .

<dotnetrdf:/graph> a dnr:HttpHandler ;
  dnr:type "VDS.RDF.Web.QueryHandler" ;
  dnr:queryProcessor _:proc .

_:proc a dnr:SparqlQueryProcessor ;
  dnr:type "VDS.RDF.Query.LeviathanQueryProcessor" ;
  dnr:usingStore _:store .

_:store a dnr:TripleStore ;
  dnr:type "VDS.RDF.TripleStore" ;
  dnr:usingGraph <http://example.org/graph> .

<http://example.org/graph> a dnr:Graph ;
  dnr:type "VDS.RDF.Graph" ;
  dnr:fromFile "pizza.owl" .

我尝试了以下发送上述简单查询的变体:

  1. http://localhost:1987/graph (因为这似乎是基于配置位( <dotnetrdf:/graph>)的逻辑选择)
  2. http://localhost:1987/graph/sparql (如果sparql后缀在配置的sparql后自动添加)
  3. http://localhost:1987/sparql (如果sparql后缀出于某种原因实际上替换了特定于图形的sparql)

我尝试了所有这些都没有默认图,并以http://example.org/graph作为默认图。

对于2)和3),我得到了与上面相同的结果:

错误没有已注册的处理程序可以处理此请求

另一方面,服务器说:

来自Handler VDS.RDF.Utilities.Server.SparqlServerHandler的错误意外错误

事实上,1)产生了一条不同的消息,这使它看起来像是在正确的URL上,但它仍然没有为我提供任何关于如何正确设置配置文件的提示。

如何为从本地文件加载的图形配置简单的SPARQL端点?

是否有某种最小的配置示例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-01 10:49:06

因此,造成这个问题的部分原因是文档失败,部分是rdfServer中的错误。

rdfServer比我们的ASP.Net集成限制得多,并且只支持配置SPARQL服务器。但是,它没有通知您这一点,并且尝试为配置文件中任何定义的HTTP处理程序配置SPARQL服务器。这会导致您在尝试访问处理程序时看到的失败,因为SPARQL服务器对它们的访问方式做了一些假设。

主要假设是它们被映射到通配符路径,因此您需要将表单<dotnetrdf:/path/*>的URI作为您的handler声明的主题,如下所示:

代码语言:javascript
复制
@prefix dnr: <http://www.dotnetrdf.org/configuration#> .

<dotnetrdf:/sparql/*> a dnr:HttpHandler ;
  dnr:type "VDS.RDF.Web.SparqlServer" ;
  dnr:queryProcessor _:proc .

_:proc a dnr:SparqlQueryProcessor ;
  dnr:type "VDS.RDF.Query.LeviathanQueryProcessor" ;
  dnr:usingStore _:store .

_:store a dnr:TripleStore ;
  dnr:type "VDS.RDF.TripleStore" .

如果您更改了配置,那么它将允许您访问/sparql/query/sparql/update上的端点。请注意,通过rdfServer不支持SPARQL图形存储协议。

我们将确保未来版本的rdfServer更清楚地执行这些限制,并在尝试使用不受支持的配置时提供适当的错误消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30563844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档