[JAVA] Ein Memorandum, wenn Sie die von Jena & SPARQL erfassten Daten für jede Variable anzeigen möchten.

Als ich mit Jena & SPARQL gegoogelt habe ...

Normalerweise schreibe ich so.

JenaSample.java


String queryString = "(SPARQL)";
Query query = QueryFactory.create(queryString);
QueryExecution qe = QueryExecutionFactory.sparqlService(service, query);
ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out,results, query);

Die Ergebnisse werden in einer Liste angezeigt und ich bin glücklich. Ich möchte sagen ... Was soll ich tun, wenn ich den Wert für jede Variable erhalten möchte?

Ressourcenklasse und Literalklasse

Zum Beispiel, wenn Sie den Endpunkt der Lebensmittelzutat LOD SPARQL anfordern. Lebensmittelzutat LOD

SPARQL sieht so aus.

SPARQL


PREFIX schema: <http://schema.org/>
PREFIX rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX cc:     <http://creativecommons.org/ns#>
PREFIX dc:     <http://purl.org/dc/elements/1.1/>
PREFIX xsd:    <http://www.w3.org/2001/XMLSchema#>
SELECT DISTINCT ?name ?calories ?sodiumContent ?nutritionType ?title
WHERE {
	?s schema:category "Meeresfrüchte";
	   schema:name ?name;
	   schema:nutrition ?nutrition;
	   cc:attributionName ?attributionName.
	?nutrition schema:calories ?calories;
	           schema:sodiumContent ?sodiumContent;
	           rdf:type  ?nutritionType.
	?attributionName dc:title ?title.
}
LIMIT 10

Versuchen Sie es in Java so herauszunehmen.

JenaSample2.java


Query query = QueryFactory.create(queryString);
QueryExecution qe = QueryExecutionFactory.sparqlService(service, query);
ResultSet results = qe.execSelect();
while (results.hasNext()) {
	QuerySolution qs = results.next();

	RDFNode node = qs.get("s");
	Resource resource = node.asResource();
	System.out.println(resource.getURI());

	RDFNode node2 = qs.get("calories");
	Literal literal = node2.asLiteral();
	System.out.println(literal.getInt());
}

Die Quelle erklären ...

  1. Es ist möglich, mit hasNext () wie ResultSet in SQL zu schleifen.
  2. Holen Sie sich ein Ergebnis als Query Solution-Objekt
  3. Rufen Sie den Wert jeder Variablen mit einem RDFNode-Objekt ab
  4. Rufen Sie Daten mit asResource () für Ressourcen und asLiteral () für Literale ab
  5. Der Wert kann mit dem Getter des Resource- oder Literal-Objekts ermittelt werden.

Soweit ich das beurteilen kann, scheint es so. Wenn Sie es falsch verwenden, weisen Sie bitte darauf hin. m (_ "_ m)

Recommended Posts

Ein Memorandum, wenn Sie die von Jena & SPARQL erfassten Daten für jede Variable anzeigen möchten.
Ein Memo, wenn Sie den Zeitteil des Kalenders löschen möchten
Wenn Rails eine Sitzung für einen bestimmten Controller deaktivieren soll
Wenn Sie die Methode außerhalb verwenden möchten
Wenn Sie den Wortlaut ändern möchten, der angezeigt werden soll, wenn Sie ein Auswahlfeld aus enum erstellen
Verwenden Sie JLine, wenn Sie Tastenanschläge auf der Konsole zeichenweise in Java verarbeiten möchten
Ein Memorandum, um den juckenden Ort für Java Gold zu erreichen
[Swift] Wenn Sie wissen möchten, ob die Anzahl der Zeichen in String mit einer bestimmten Anzahl übereinstimmt ...
Wenn Sie eine Methode in RSpec verspotten möchten, sollten Sie die Methode allow für mock und die Singleton-Methode verwenden.
Eine Geschichte, die mithilfe von Polymorphismus sauber implementiert werden kann, wenn Sie zwei Datentypen in einer Tabelle ausdrücken möchten
Wenn Sie mit dem Befehl "Rails Generate Migration" eine Spalte vom Typ "String" mit begrenzter Länge hinzufügen möchten
[Für Anfänger] Ich möchte mit einem Auswahlbefehl automatisch vorregistrierte Daten in das Eingabeformular eingeben.
[RSpec] Wenn Sie die Instanzvariable des Controllers im Test verwenden möchten [Zuweisungen wird nicht empfohlen]
Ich möchte, dass Sie Enum # name () für den Schlüssel von SharedPreference verwenden
Sind Sie immer noch erschöpft von der Beispielvideosuche? Eine Schaltfläche zum Senden von FANZA-Videos an Slack, wenn diese gedrückt wird.
LIMIT 11, wenn Daten mit irb erfasst werden
So erstellen Sie eine Route direkt aus der URL, die Sie + α angeben möchten
Anzeigen der vom Docker-Container verwendeten Festplattenmenge für jeden Container
Ich möchte, dass Sie Scala vorerst als besseres Java verwenden
[Java-Tool] Ein nützliches Tool, wenn Sie das IPMSG-Protokoll von PC-A regelmäßig an den angegebenen PC senden möchten.