2017-06-26 6 views
1

Ich arbeite an einem Projekt, das hauptsächlich Blazegraph als Back-End verwendet, und von dem, was ich verstehe, dass mich in eine relativ alte Sesame (2.7.12) sperrt.Verbinden mit RDF4J-Server mit Sesame-Bibliothek?

Das Projekt hat eine andere Komponente, die einen eingebetteten Sesam oder einen freistehenden Sesame OR RDF4J verwenden kann. Ich habe eine freistehende RDF4J bereits eingerichtet, also würde ich das lieber verwenden.

Ich kann mit dem eingebetteten Sesame mit dem folgenden Scala-Code verbinden. Wenn ich serverUrl ändere, um auf den freistehenden RDF4J 2.2 zu zeigen, erhalte ich den Fehler unten.

Kann ich mit der Sesame-API auf RDF4J-Server zugreifen?

val serverUrl = "http://address.domain:8080/rdf4j-server" 
val manager = new RemoteRepositoryManager(serverUrl) 
manager.initialize() 
val repositoryId = "repo_id" 
val repository = manager.getRepository(repositoryId) 
val con = repository.getConnection() 
val queryString = "SELECT ?x ?y WHERE { ?x ?p ?y } " 
val tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString) 
val result = tupleQuery.evaluate() 

[main] WARN org.openrdf.http.client.SesameSession - Server Berichte Problem: org.eclipse.rdf4j.repository.config.RepositoryConfigException: Repository-Implementierung für Repository Exception in thread fehlt "main" java.lang.ExceptionInInitializerError bei UuidRefresh.main (UuidRefresh.scala) verursacht durch: org.openrdf.repository.http.HTTPQueryEvaluationException: org.eclipse.rdf4j.repository.config.RepositoryConfigException: Repository-Implementierung für Repository missi ng unter org.openrdf.repository.http.HTTPTupleQuery.evaluate (HTTPTupleQuery.java:64) bei UuidRefresh $. (UuidRefresh.scala: 54) um UuidRefresh $. (UuidRefresh.scala) ... 1 mehr verursacht durch : org.openrdf.repository.RepositoryException: org.eclipse.rdf4j.repository.config.RepositoryConfigException: Repository-Implementierung für Repository org.openrdf.http.client.SparqlSession.execute (SparqlSession.java:1100) fehlt bei org.openrdf.http.client.SparqlSession.executeOK (SparqlSession.java:1028) bei org.openrdf.http.client.SparqlSession.sendTupleQueryViaHttp (SparqlSession.java:807) bei org.o penrdf.http.client.SparqlSession.getBackgroundTupleQueryResult (SparqlSession.java:704) bei org.openrdf.http.client.SparqlSession.sendTupleQuery (SparqlSession.java:363) bei org.openrdf.repository.http.HTTPTupleQuery. bewerten (HTTPTupleQuery.java:58) ... 3 weitere

+0

Nicht hilfreich und Sie wissen wahrscheinlich bereits, dass RDF4J der Nachfolger von Sesame ist? – AKSW

+0

Ja, ich denke, ich hätte sagen sollen, dass ich das schon wusste. Aber danke für das Brainstorming. –

+0

Hm, hängt es mit diesem https://github.com/eclipse/rdf4j/issues/819 zusammen? Das Ticket wurde vor 28 Tagen geschlossen - vielleicht wird die letzte Version von RDF4J (2.2.2) oder eine SNAPSHOT Version es reparieren? – AKSW

Antwort

1

ich bin nicht 100% sicher, dass Sie eine RDF4J Remote-Repository als Sesame HTTPRepository, vor allem, wenn Ihre Client-Bibliothek zuzugreifen wären in der Lage ist so alt. Sesam Version 2.7 ist sehr alt und viele Verbesserungen haben sich seitdem auf die REST-API durchgeführt worden - sie sollte rückwärts kompatibel sein, aber ...

Angesichts der Tatsache, dass ein RDF4J Repository auf RDF4J Server ausgeführt wird, ein SPARQL-Endpunkt können Sie natürlich immer wie bei jedem SPARQL-Endpunkt darauf zugreifen, indem Sie ein SPARQLRepository-Objekt erstellen.

Als Nebenbemerkung: Lassen Sie die Blazegraph Leute wissen, dass Sie auf RDF4J aktualisieren möchten. Die Priorisierung der RDF4J-Unterstützung richtet sich nach der Benutzeranforderung (wie es sein sollte), also lassen Sie sie wissen, dass sie für Sie wichtig ist!