[JAVA] Un mémorandum lorsque vous souhaitez voir les données acquises par Jena & SPARQL pour chaque variable.

Quand j'ai googlé avec Jena & SPARQL ...

J'écris généralement comme ça.

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);

Les résultats sont affichés dans une liste et je suis content. J'aimerais dire ... Que dois-je faire si je veux obtenir la valeur de chaque variable?

Classe de ressources et classe littérale

Par exemple, lors de la demande du point de terminaison LOD SPARQL de l'ingrédient alimentaire. LOD de l'ingrédient alimentaire

SPARQL ressemble à ceci.

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 "Fruit de mer";
	   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

En Java, essayez de le supprimer comme ceci.

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());
}

Expliquer la source ...

  1. Il est possible de boucler avec hasNext () comme ResultSet en SQL.
  2. Obtenez un résultat en tant qu'objet Query Solution
  3. Obtenez la valeur de chaque variable avec un objet RDFNode
  4. Obtenez des données avec asResource () pour les ressources et asLiteral () pour les littéraux
  5. La valeur peut être obtenue avec le getter de l'objet Resource ou Literal.

Pour autant que je sache, cela ressemble à ceci. Si vous ne l'utilisez pas correctement, veuillez le signaler. m (_ "_ m)

Recommended Posts

Un mémorandum lorsque vous souhaitez voir les données acquises par Jena & SPARQL pour chaque variable.
Un mémo lorsque vous souhaitez effacer la partie horaire de l'agenda
Lorsque vous souhaitez que Rails désactive une session pour un contrôleur spécifique
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Lorsque vous souhaitez modifier le libellé à afficher lors de la création d'une zone de sélection à partir d'énumération
Utilisez JLine lorsque vous souhaitez gérer les frappes sur la console caractère par caractère en Java
Un mémorandum pour atteindre le lieu qui démange pour Java Gold
[Swift] Lorsque vous voulez savoir si le nombre de caractères dans String correspond à un certain nombre ...
Si vous souhaitez simuler une méthode dans RSpec, vous devez utiliser la méthode allow pour mock et la méthode singleton.
Une histoire qui pourrait être mise en œuvre proprement en utilisant le polymorphisme lorsque vous souhaitez exprimer deux types de données dans une table
Lorsque vous souhaitez ajouter une colonne de type chaîne avec une longueur limitée avec la commande `rails generate migration`
[Pour les débutants] Je souhaite saisir automatiquement des données pré-enregistrées dans le formulaire de saisie avec une commande de sélection.
[RSpec] Lorsque vous souhaitez utiliser la variable d'instance du contrôleur dans le test [attribuer n'est pas recommandé]
Je veux que vous utilisiez Enum # name () pour la clé de SharedPreference
Êtes-vous toujours épuisé par la recherche d'exemples de vidéos? Un bouton pour envoyer des vidéos FANZA à Slack lorsque vous appuyez dessus.
LIMIT 11 lorsque les données sont acquises avec irb
Comment créer une route directement à partir de l'URL que vous souhaitez spécifier + α
Comment afficher la quantité de disque utilisée par le conteneur Docker pour chaque conteneur
Je veux que vous utilisiez Scala comme meilleur Java pour le moment
[outil java] Un outil utile lorsque vous souhaitez envoyer régulièrement le journal ipmsg de PC-A au PC spécifié.