Scala Sparql query with Apache Jena



我正在尝试在Scala中构建SPARQL查询。我使用用于Java的Apache ARQ库有问题。依赖项似乎都很好,但是Intellij无法解析参数化的SparqlString构造器,并导致了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)
        }
      })
    })
  })

(评论对复杂文本不起作用,因此答案)

如果您要构建字符串,则不需要ParameterizedSparqlString。创建一个查询字符串,对其进行解析,然后调用.toString有点令人费解。您可以使用QueryFactory,然后使用QueryExecutionFactory

请注意,在

val sparqlQuery = "" + "SELECT ?s { n ?s rdfs:label" + namedEntity.surfaceForm + " . n }" namedEntity.surfaceForm必须在SPARQL语法中,例如围绕它的字符串需求,否则您将在Sparql中获得解析错误。

@becher,per @aksw的问题,我们需要知道您如何尝试解决依赖关系。Intellij为您提供了一些选择 - 我使用SBT,我认为这很常见,在Ivy(通过Ivyidea插件)中。

在任何情况下,这都是一个非常有用的页面

相关内容

  • 没有找到相关文章

最新更新