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

Другие вопросы по тегам