2016-11-26 1 views
0

Ich versuche, eine Sparql-Abfrage in Scala zu erstellen. Ich habe Probleme mit der Apache Arq-Bibliothek, die für Java gedacht ist. Die Abhängigkeiten scheinen alle in Ordnung zu sein, aber Intellij kann den ParameterizedSparqlString-Konstruktor nicht auflösen und den QueryEngineHTTP-Konstruktor ergeben. Ich laufe jdk 1.8. Irgendwelche Ideen? Geschätzt !!Scala Sparql Abfrage mit 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

Welche Version Jena? Benutzt du Maven? Wenn ja, bitte zeigen Sie die Abhängigkeit von Maven. Und schließlich, erhalten Sie wirklich einen Compilerfehler? – AKSW

Antwort

3

(Kommentare funktionieren nicht für komplexen Text, damit diese Antwort)

Sie brauchen keine ParameterizedSparqlString, wenn Sie Zeichenfolge tun selbst zu bauen. Das Erstellen einer Abfragezeichenfolge, das Analysieren und dann das Aufrufen von .toString ist ein wenig verschachtelt. Sie können QueryFactory dann QueryExecutionFactory verwenden.

Beachten Sie, dass bei

val sparqlQuery = "" + "SELECT ?s { \n ?s rdfs:label" + namedEntity.surfaceForm + " . \n }" Die namedEntity.surfaceForm in SPARQL Syntax sein muss, beispiels ein String needs "" um ihn herum, sonst werden Sie einen Parser-Fehler in SPARQL erhalten.

1

@Becher, pro @ AKSW Frage müssen wir wissen, wie Sie versuchen, Abhängigkeiten aufzulösen. IntelliJ gibt Ihnen ein paar Optionen - Ich benutze SBT, was ich denke, ist ziemlich üblich, mit Ivy (über das IvyIDEA-Plug-in.) Aber Sie können Maven direkt verwenden oder einfach nur Gläser zu einer Bibliothek hinzufügen.

Dies ist eine ziemlich hilfreich Seite in jedem Fall https://mvnrepository.com/artifact/org.apache.jena/jena-arq/3.1.1

Verwandte Themen