2016-11-26 3 views
0

Я пытаюсь построить запрос sparql в scala. У меня проблемы с использованием библиотеки apache arq, предназначенной для Java. Зависимости кажутся все прекрасными, но Intellij не может разрешить конструктор ParameterizedSparqlString и получить конструктор QueryEngineHTTP. Im работает jdk 1.8. Есть идеи? Оценил !!Запрос Scala Sparql с Apache Jena

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) 
     } 
     }) 
    }) 
    }) 
+0

Какая версия Йены? Вы используете Maven? Если да, укажите зависимость от Maven, пожалуйста. И, наконец, вы действительно получаете ошибку компилятора? – AKSW

ответ

3

(комментарии не работают для сложного текста, следовательно, этот ответ)

Вам не нужно ParameterizedSparqlString если вы делаете строку строить самостоятельно. Создание строки запроса, разбор ее, а затем вызов .toString немного запутан. Вы можете использовать QueryFactory, затем QueryExecutionFactory.

Обратите внимание, что при

val sparqlQuery = "" + "SELECT ?s { \n ?s rdfs:label" + namedEntity.surfaceForm + " . \n }" namedEntity.surfaceForm должен быть в синтаксисе SPARQL, например строковая потребность «» вокруг него, в противном случае вы получите синтаксическую ошибку в SPARQL.

1

@Becher, за вопрос @ AKSW, нам нужно знать, как вы пытаетесь разрешить зависимости. IntelliJ дает вам несколько вариантов: я использую SBT, который, как мне кажется, довольно распространен, с Ivy (через плагин IvyIDEA.) Но вы можете напрямую использовать Maven или просто добавлять баннеры в библиотеку.

Это очень полезная страница в любом случае https://mvnrepository.com/artifact/org.apache.jena/jena-arq/3.1.1

Смежные вопросы