Scala Sparql запрос с Apache Jena
Я пытаюсь построить запрос sparql в Scala. У меня проблемы с использованием библиотеки Apache Arq, которая предназначена для Java. Кажется, что с зависимостями все в порядке, но Intellij не может разрешить конструктор ParameterizedSparqlString и, как следствие, конструктор QueryEngineHTTP. Я бегу JDK 1,8. Есть идеи? Оценил!!
val sparqlentities = namedEntitiesByDocument
.mapPartitions(iter => {
val sparqlEndpoint = "localhost:1643";
iter.map( t => {
t._1, t._2.map(namedEntity => {
val sparqlQuery = "" + "SELECT ?s { \n ?s rdfs:label" + namedEntity.surfaceForm + " . \n }"
val query = QueryFactory.create(sparqlQuery, Syntax.syntaxARQ)
// val querySolutionMap = new QuerySolutionMap()
val parameterizedSparqlString = new ParameterizedSparqlString(query.toString(), new QuerySolutionMap())
val httpQuery = new QueryEngineHTTP(sparqlEndpoint,parameterizedSparqlString.asQuery())
val results = httpQuery.execSelect()
while (results.hasNext()) {
val solution = results.next()
val fin_result = solution.get("s").asLiteral().getLexicalForm()
(namedEntity.surfaceForm, fin_result)
}
})
})
})
2 ответа
(комментарии не работают для сложного текста, отсюда и этот ответ)
Вам не нужно ParameterizedSparqlString
если вы сами строите струны. Создание строки запроса, ее анализ, затем вызов .toString
немного запутанный. Ты можешь использовать QueryFactory
затем QueryExecutionFactory
,
Обратите внимание, что в
val sparqlQuery = "" + "SELECT ?s { \n ?s rdfs:label" + namedEntity.surfaceForm + " . \n }"
namedEntity.surfaceForm
должен быть в синтаксисе SPARQL, например, строка должна содержать "" вокруг него, в противном случае вы получите ошибку разбора в SPARQL.
@Becher, на вопрос @AKSW, нам нужно знать, как вы пытаетесь разрешить зависимости. IntelliJ дает вам несколько вариантов - я использую SBT, который, я думаю, довольно распространен, с Ivy (через плагин IvyIDEA.) Но вы можете использовать Maven напрямую или просто добавить файлы jar в библиотеку.
Это очень полезная страница в любом случае https://mvnrepository.com/artifact/org.apache.jena/jena-arq/3.1.1