Ich bin auf der Suche nach einer Möglichkeit, die Ergebnisse dieser Abfrage in eine 2D-String-Liste mit Jena-Framework hinzuzufügen.SPARQL: Holen Sie sich alle Prädikate und ihre jeweiligen Objekte und organisieren Sie sie in eine Liste
sparqlQueryString="
select distinct ?p ?o where
{
<http://dbpedia.org/resource/NVA_(film)> ?p ?o
}
";
in einer Weise, in der die erste Zeile die Eigenschaften und zweitens ihre jeweiligen Instanzen enthält. Das Problem besteht darin, dass eine Eigenschaft viele Instanzen haben kann.
List<List<String>> results= new ArrayList<List<String>>();
query = QueryFactory.create(sparqlQueryString);
qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
s = qexec.execSelect();
res = ResultSetFactory.copyResults(s);
while(res.hasNext())
{
QuerySolution so = res.nextSolution();
results.add(so.getResource("p").toString());
// The part I am looking for to add instance
}
// the results expected
results.get(0) = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
results.get(0).get(0) = http://dbpedia.org/class/yago/2005Films
results.get(0).get(1) = http://www.w3.org/2002/07/owl#Thing
results.get(0).get(2) = http://dbpedia.org/ontology/Work
Serverseitige Lösung: SPARQL 1.1 Feature GROUP_CONCAT (siehe die W3C Empfehlung für Beispiele). Client-seitige Lösung: Java-Grundlagen. – AKSW
Ihre erwarteten Ergebnisse sind nicht sinnvoll. Sie haben .get (0) eine Eigenschaft zurückgeben und dann .get (0) .get (0) einen Objektwert zurückgeben. Aber die erste get (0) gab eine Eigenschaft und keine Liste von Objektwerten zurück. –
Für das, was es wert ist, würde ich vorschlagen, eine Karte> zu verwenden, um Eigenschaften zu Gruppen von Werten zu nehmen. –