Sommaire


Note: des exemples d'utilisation avec 'curl' sont aussi disponibles sur le site de Lyrasys (vivo)


1) Dépendances maven dans pom.xml

pom dependencies
<dependency>
	<groupId>org.apache.jena</groupId>
	<artifactId>apache-jena-libs</artifactId>
	<version>3.9.0</version>
	<type>pom</type>
</dependency>

2) SELECT pour faire une recherche dans VIVO

JenaVivoTest_SELECT
package ca.uqam.vivoweb.connect;

import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.query.ResultSet;
import org.apache.jena.query.ResultSetFormatter;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.sparql.engine.http.QueryEngineHTTP ;

public class JenaVivoTest_SELECT {

	static public void main(String...argv) 
	{
		// L'URL du 
		String sparqlEndpointUrl = "http://[vivo-srv-adresse]:8080/vivo/api/sparqlQuery";
		// le libellé de la requête
		String queryStr = "SELECT ?s ?p ?o WHERE {?s ?p ?o} LIMIT 5";
		// la construction de la requête
		Query query = QueryFactory.create(queryStr);
		// Construction de l'exécuteur
		try ( QueryExecution qexec = QueryExecutionFactory.sparqlService(sparqlEndpointUrl, query) ) {
			// L'authentification administrateur de vivo
			((QueryEngineHTTP)qexec).addParam("email", "vivo@uqam.ca") ;
			((QueryEngineHTTP)qexec).addParam("password", "VOTRE_MOT_DE_PASSE") ;
			// Lancer l'exécution
			ResultSet results = qexec.execSelect();
			//Imprimer le résultat de la requête
			ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
			ResultSetFormatter.out(outputStream, results);
			// Aussi disponible
			//     ResultSetFormatter.outputAsCSV(outputStream, results);
			//     ResultSetFormatter.outputAsTSV(outputStream, results);
			//     ResultSetFormatter.outputAsJSON(outputStream, results);
			//	   ResultSetFormatter.outputAsXML(outputStream, results);
			String formatedResult = outputStream.toString();
			System.out.println(formatedResult);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Exemple de résultat
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| s                                                | p                                                                                       | o                                                       |
========================================================================================================================================================================================================
| <http://vivoweb.org/ontology/core#FacultyMember> | <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#hiddenFromDisplayBelowRoleLevelAnnot>    | <http://vitro.mannlib.cornell.edu/ns/vitro/role#public> |
| <http://vivoweb.org/ontology/core#FacultyMember> | <http://www.w3.org/2002/07/owl#equivalentClass>                                         | <http://vivoweb.org/ontology/core#FacultyMember>        |
| <http://vivoweb.org/ontology/core#FacultyMember> | <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#prohibitedFromUpdateBelowRoleLevelAnnot> | <http://vitro.mannlib.cornell.edu/ns/vitro/role#public> |
| <http://vivoweb.org/ontology/core#FacultyMember> | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>                                       | <http://www.w3.org/2002/07/owl#Class>                   |
| <http://vivoweb.org/ontology/core#FacultyMember> | <http://www.w3.org/2000/01/rdf-schema#subClassOf>                                       | <http://purl.obolibrary.org/obo/BFO_0000002>            |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

3) CONSTRUCT pour construire un graphe de connaissance

JenaVivoTest_CONSTRUCT
package ca.uqam.vivoweb.connect;

import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.sparql.engine.http.QueryEngineHTTP ;

public class JenaVivoTest_CONSTRUCT {

	static public void main(String...argv) 
	{
		// L'URL du 
		String sparqlEndpointUrl = "http://[vivo-srv-adresse]:8080/vivo/api/sparqlQuery";
		// le libellé de la requête
		String queryStr = "CONSTRUCT { <http://test.domain/ns#book1> <http://purl.org/dc/elements/1.1/title> \"Fundamentals of Compiler Design\" } WHERE { <http://test.domain/ns#book1> ?p ?o }" ;
		// la construction de la requête
		Query query = QueryFactory.create(queryStr);
		// Construction de l'exécuteur
		try ( QueryExecution qexec = QueryExecutionFactory.sparqlService(sparqlEndpointUrl, query) ) {
			// L'authentification administrateur de vivo
			((QueryEngineHTTP)qexec).addParam("email", "vivo@uqam.ca") ;
			((QueryEngineHTTP)qexec).addParam("password", "MOT-DE-PASSE") ;
			// Lancer l'exécution
			Model model = qexec.execConstruct();
			//Imprimer le résultat de la requête
			model.write(System.out, "RDF/JSON");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



4) UPDATE INSERT pour ajouter un énoncé à Vivo

JenaVivoTest_INSERT.java
package ca.uqam.vivoweb.connect;

import org.apache.jena.sparql.modify.UpdateProcessRemoteBase;
import org.apache.jena.update.UpdateExecutionFactory;
import org.apache.jena.update.UpdateFactory;
import org.apache.jena.update.UpdateProcessor;
import org.apache.jena.update.UpdateRequest;

public class JenaVivoTest_INSERT {

	static public void main(String...argv) 
	{
		// le libellé de la requête ubdate
		String udateStr = ""
				+ "INSERT DATA {"
				+ "   GRAPH <http://vitro.mannlib.cornell.edu/default/vitro-kb-2> {"
				+ "       <http://test.domain/ns#book1> <http://purl.org/dc/elements/1.1/title> \"Fundamentals of Compiler Design\" ."
				+ "    } }";
		// l'adresse du SparqlEndpoint du update de Vivo
		String sparqlEndpointUrl = "http://[vivo-srv-adresse]:8080/vivo/api/sparqlUpdate";
		// la construction de la requête
		UpdateRequest request = UpdateFactory.create() ;
		request.add(udateStr);
		// Construction de l'exécuteur
		UpdateProcessor processor = UpdateExecutionFactory.createRemoteForm(request, sparqlEndpointUrl);
		// Les paramètres d"authentification de ViVo
		((UpdateProcessRemoteBase)processor).addParam("email", "vivo@uqam.ca");
		((UpdateProcessRemoteBase)processor).addParam("password", "MOT-DE-PASSE") ;
		//Exécuter la requête
		processor.execute();
		System.out.print("Done!");
	}
}


5) DESCRIBE pour décrire une ressource

JenaVivoTest_DESCRIBE .java
package ca.uqam.vivoweb.connect.receiver;

import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.sparql.engine.http.QueryEngineHTTP ;

public class JenaVivoTest_DESCRIBE{

	static public void main(String...argv) 
	{
		// URL du sparql endpoint
		String sparqlEndpointUrl = "http://[vivo-srv-adresse]:8080/vivo/api/sparqlQuery";
		// le libellé de la requête
		String queryStr = "DESCRIBE  <http://test.domain/ns#book1>";
		// la construction de la requête
		Query query = QueryFactory.create(queryStr);
		// Construction de l'exécuteur
		try ( QueryExecution qexec = QueryExecutionFactory.sparqlService(sparqlEndpointUrl, query) ) {
			// L'authentification administrateur de vivo
			((QueryEngineHTTP)qexec).addParam("email", "UTILISATEUR") ;
			((QueryEngineHTTP)qexec).addParam("password", "MOT-DE-PASSE") ;
			// Lancer l'exécution
			Model model = qexec.execDescribe();
			//Imprimer le résultat de la requête
			model.write(System.out, "TTL") ;
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


Résultat
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix skos:  <http://www.w3.org/2004/02/skos/core#> .
@prefix bibo:  <http://purl.org/ontology/bibo/> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vivo:  <http://vivoweb.org/ontology/core#> .
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> .
@prefix obo:   <http://purl.obolibrary.org/obo/> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> .

<http://test.domain/ns#book1>
        <http://purl.org/dc/elements/1.1/title>
                "Fundamentals of Compiler Design" .

6) UPDATE DELETE pour supprimer un énoncé

JenaVivoTest_DELETE.java
package ca.uqam.vivoweb.connect.receiver;

import org.apache.jena.sparql.modify.UpdateProcessRemoteBase;
import org.apache.jena.update.UpdateExecutionFactory;
import org.apache.jena.update.UpdateFactory;
import org.apache.jena.update.UpdateProcessor;
import org.apache.jena.update.UpdateRequest;

public class JenaVivoTest_DELETE{

	static public void main(String...argv) 
	{
		// Adresse de l'URI du sparql endpoint de l'update
		String sparqlEndpointUrl = "http://[vivo-srv-adresse]:8080/vivo/api/sparqlUpdate";
		// le libellé de la requête update
		String udateyStr = ""
				+ "DELETE DATA {"
				+ "   GRAPH <http://vitro.mannlib.cornell.edu/default/vitro-kb-2> {"
				+ "       <http://test.domain/ns#book1> <http://purl.org/dc/elements/1.1/title> \"Fundamentals of Compiler Design\" ."
				+ "    } }";
		// l'adresse du SparqlEndpoint du update de Vivo
		// la construction de la requête
		UpdateRequest request = UpdateFactory.create() ;
		request.add(udateyStr);
		// Construction de l'exécuteur
		UpdateProcessor processor = UpdateExecutionFactory.createRemoteForm(request, sparqlEndpointUrl);
		// Les paramètres d"authentification de ViVo
		((UpdateProcessRemoteBase)processor).addParam("email", "vivo@uqam.ca");
		((UpdateProcessRemoteBase)processor).addParam("password", "VOTRE_MOT_DE_PASSE") ;
		//Exécuter la requête
		processor.execute();
		System.out.print("Done!");
	}
}
  • Aucune étiquette