我们使用RDF4J(以前的sesame)框架来运行sparql查询到远程GraphDB三重存储。
这可以通过rdf4j HTTPRepository接口成功地工作,该接口使用Graphdb服务器的URL和存储库ID,但在使用rdf4j SPARQLRepository接口时失败,该接口将Sparlqendpointurl作为参数。
在运行查询时,我们在查询验证中得到一个异常
“获取服务器协议失败;此服务器上没有此类资源:http:///sparql?sparql?queryLn=SPARQL
其中http://
我们相信实际sparqlendpoint的url可能不是http:///sparql但我们在graphdb文档中找不到其他东西。欣赏任何人可能照到的灯光。
编辑:针对Factforge的Sparqlendpoint执行的代码:
final String endPoint = "http://factforge.net/sparql";
final String query = "Select distinct ?airport where {?airport a dbp-ont:Airport} LIMIT 2";
SPARQLRepository repository = new SPARQLRepository(endPoint,endPoint);
repository.initialize();
RepositoryConnection connection = repository.getConnection();
TupleQueryResult result = connection.prepareTupleQuery(QueryLanguage.SPARQL,query)
.evaluate();
生成以下异常:
Caused by: org.eclipse.rdf4j.repository.RepositoryException: Failed to get server protocol; no such resource on this server: http://factforge.net/sparql?queryLn=SPARQL&query=Select+distinct+%3Fairport+where+%7B%3Fairport+a+dbp-ont%3AAirport%7D+LIMIT+2&infer=true
at org.eclipse.rdf4j.http.client.SparqlSession.executeOK(SparqlSession.java:1023)
at org.eclipse.rdf4j.http.client.SparqlSession.sendTupleQueryViaHttp(SparqlSession.java:787)
at org.eclipse.rdf4j.http.client.SparqlSession.getBackgroundTupleQueryResult(SparqlSession.java:684)
at org.eclipse.rdf4j.http.client.SparqlSession.sendTupleQuery(SparqlSession.java:341)
at org.eclipse.rdf4j.repository.sparql.query.SPARQLTupleQuery.evaluate(SPARQLTupleQuery.java:43)
... 1 more
谢谢你的帮助
我还没有指出根本原因,但是,我注意到问题出现在RDF4J 2.0M3中,但不再出现在2.0 final(或2.0.1,最新版本)中。从那时起,有两个可能的问题已经得到了解决,即RDF4J(#267)使用的Apache HttpComponents库的版本升级,以及RDF4J客户端如何编写其HTTP Accept头(#228)的改进。
TL;DR:升级到RDF4J 2.0。你的问题应该消失了。
要访问存储库的GraphDB SPARQLendpoint(例如在本地计算机上),可以使用以下URL:http://localhost:7200/repositories/
您可以在此处阅读有关将Sesame API与GraphDB结合使用的更多信息:http://graphdb.ontotext.com/documentation/free/using-graphdb-with-the-sesame-api.html
我见过存储库模式的各种用法。我倾向于一种我很少看到的模式,我想知道这是否有充分的理由。 例子: 利益 构造函数将是内部的,只能通过工厂模式访问,所以我不担心这里的复杂性。 IPerson 强制实现 Save() 方法,但教师不需要知道它是如何持久化的 工作原理类似于实体框架代理对象 我可以在 Iperson 对象上调用 Save(),而无需知道它是老师 应用- 欺骗 > 业务对象不再是普通的旧C#
是否有一种方法可以使用来完成这一任务,而不需要为每个Patamenter组合创建大量/语句?
即使我的接口MonRepo(扩展JpaRepository)没有注释任何注释,告诉spring为这个类创建一个bean(例如。服务、控制器、组件等)。如何创建此类的 Bean。我确信创建了一个 bean,因为我在另一个类中自动连接了 monRepo,并且它工作得很好。 MonRepo公司 其中 monRepo 自动连线的类 除了我的类,我没有在任何地方使用过enableJpaRepository注
我试图研究Spring更具体的Spring数据,但我对interface Repository及其派生类的使用有一个问题,我请求您帮助澄清这些问题。 例如,我看到这个代码示例扩展CrudRepository,但我看到使用扩展关键字,但没有实现。为什么?我认为扩展是针对子类的,或者如果我使用抽象类和接口实现。 另一个问题是测试我尝试从两个类扩展的另一个案例(我知道java不允许多个),但java允许
启动ApplicationContext时出错。若要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2020-06-19 21:37:34.254错误11296---[restartedMain]O.S.Boot.SpringApplication:应用程序运行失败 输入图像描述这里输入图像描述
我创建了一个简单应用程序,它使用Spring boot和JPA/Hibernate将消息保存在postgresql数据库中。所有的包Controller/Service/Repository都在一个子包中。 但我得到一个错误:spring boot无法识别包DAO中的存储库接口。 我有另一个项目,所有工作都不使用@enablejparepositories,但在这个项目(相同的结构)中,我遇到了这