我正在尝试指定在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
我尝试了以下发送上述简单查询的变体:
@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
)的逻辑选择<dotnetrdf:/graph>
(如果在配置的网址后自动添加http://localhost:1987/graph/sparql
后缀)sparql
(如果http://localhost:1987/sparql
后缀因某种原因实际替换了特定于图表的网址)我在没有默认图表的情况下尝试了所有这些操作,并使用sparql
作为默认图表。
对于2)和3),我得到了与上面相同的结果:
错误没有注册的处理程序可以处理此请求
对于1),另一方面,服务器说:
错误来自Handler VDS.RDF.Utilities.Server.SparqlServerHandler
的意外错误
1)产生不同的消息以某种方式使得它看起来像我在那里的URL的正确轨道,但它仍然没有提供任何关于如何正确设置配置文件的提示。 / p>
如何为从本地文件加载的图形配置简单的SPARQL端点?
某处有某种最小配置示例吗?
答案 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更清楚地强制执行这些限制,并在尝试使用不受支持的配置时提供相应的错误消息。