我试图指定一个配置文件,它在dotNetRDF中设置SPARQL端点。在将其集成到应用程序之前,我正在测试配置文件,方法是加载配置文件以在rdfServer GUI工具中运行本地服务器,然后尝试从Store工具访问该服务器,这两者都来自dotNetRDF工具 (尽管这与问题无关)。
通过使用用于设置SPARQL处理程序的最小配置代码来跟踪手册:
@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 ),来自服务器的日志输出总是包含以下注释:
错误没有已注册的处理程序可以处理此请求
我还尝试在提供的示例的基础上构建,从本地文件加载图形,同时考虑到如何从相应的手册页中定义图形的信息(为了进行测试,加载比萨本体文件,该文件与配置文件放在同一个目录中):
@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后缀在配置的sparql后自动添加)http://localhost:1987/sparql (如果sparql后缀出于某种原因实际上替换了特定于图形的sparql)我尝试了所有这些都没有默认图,并以http://example.org/graph作为默认图。
对于2)和3),我得到了与上面相同的结果:
错误没有已注册的处理程序可以处理此请求
另一方面,服务器说:
来自Handler VDS.RDF.Utilities.Server.SparqlServerHandler的错误意外错误
事实上,1)产生了一条不同的消息,这使它看起来像是在正确的URL上,但它仍然没有为我提供任何关于如何正确设置配置文件的提示。
如何为从本地文件加载的图形配置简单的SPARQL端点?
是否有某种最小的配置示例?
发布于 2015-06-01 10:49:06
因此,造成这个问题的部分原因是文档失败,部分是rdfServer中的错误。
rdfServer比我们的ASP.Net集成限制得多,并且只支持配置SPARQL服务器。但是,它没有通知您这一点,并且尝试为配置文件中任何定义的HTTP处理程序配置SPARQL服务器。这会导致您在尝试访问处理程序时看到的失败,因为SPARQL服务器对它们的访问方式做了一些假设。
主要假设是它们被映射到通配符路径,因此您需要将表单<dotnetrdf:/path/*>的URI作为您的handler声明的主题,如下所示:
@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更清楚地执行这些限制,并在尝试使用不受支持的配置时提供适当的错误消息。
https://stackoverflow.com/questions/30563844
复制相似问题