如何在dotNetRDF中配置SPARQL端点?

时间:2015-05-31 23:40:24

标签: configuration-files dotnetrdf

我正在尝试指定在configuration file中设置SPARQL端点的dotNetRDF。在将其集成到应用程序之前,我正在测试配置文件,方法是加载它以在 rdfServer GUI 工具中运行本地服务器,然后尝试从 Store Manager 工具,均来自dotNetRDF Tools(虽然这与问题无关)。

我使用最小配置代码设置SPARQL处理程序来关注manual

@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发送简单查询而没有默认图表,服务器的日志输出总是包含注释:

  

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

我还尝试通过从本地文件加载图表来构建所提供的示例,并考虑有关如何从相应的manual page定义图表的信息(为了测试,通过加载pizza ontology,我放在与配置文件相同的目录中的文件):

http://localhost:1987/sparql

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

  1. @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" . (因为这似乎是基于配置位http://localhost:1987/graph)的逻辑选择
  2. <dotnetrdf:/graph>(如果在配置的网址后自动添加http://localhost:1987/graph/sparql后缀)
  3. sparql(如果http://localhost:1987/sparql后缀因某种原因实际替换了特定于图表的网址)
  4. 我在没有默认图表的情况下尝试了所有这些操作,并使用sparql作为默认图表。

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

      

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

    对于1),另一方面,服务器说:

      

    错误来自Handler VDS.RDF.Utilities.Server.SparqlServerHandler

    的意外错误

    1)产生不同的消息以某种方式使得它看起来像我在那里的URL的正确轨道,但它仍然没有提供任何关于如何正确设置配置文件的提示。 / p>

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

    某处有某种最小配置示例吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

@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更清楚地强制执行这些限制,并在尝试使用不受支持的配置时提供相应的错误消息。