<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sparna Blog &#187; tutorial</title>
	<atom:link href="https://blog.sparna.fr/tag/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.sparna.fr</link>
	<description>Web de données &#124; Architecture de l&#039;information &#124; Accès aux connaissances</description>
	<lastBuildDate>Tue, 03 Jun 2025 10:30:27 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Tutoriel : exemple de query SPARQL avec l&#8217;API Sesame</title>
		<link>https://blog.sparna.fr/2012/05/23/tutoriel-exemple-de-query-sparql-avec-lapi-sesame/</link>
		<comments>https://blog.sparna.fr/2012/05/23/tutoriel-exemple-de-query-sparql-avec-lapi-sesame/#comments</comments>
		<pubDate>Wed, 23 May 2012 11:23:45 +0000</pubDate>
		<dc:creator><![CDATA[Thomas Francart]]></dc:creator>
				<category><![CDATA[RDF]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[Triplestores]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[construct]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[Triplestore]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blog.sparna.fr/?p=125</guid>
		<description><![CDATA[<p>On a vu précédemment comment utiliser l&#8217;API Sesame depuis un programme Java, quelles dépendances étaient nécessaires, et comment faire les opérations de base avec un Repository : initialiser, charger des données, écrire des données. Voilà maintenant comment effectuer des query SPARQL SELECT et CONSTRUCT sur un Repository, et traiter les résultats. Les deux types de&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2012/05/23/tutoriel-exemple-de-query-sparql-avec-lapi-sesame/">Tutoriel : exemple de query SPARQL avec l&rsquo;API Sesame</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>On a vu précédemment <a title="Tutoriel : exemple avec l’API Sesame RDF" href="http://blog.sparna.fr/tutoriel-demarrage-avec-lapi-sesame-rdf/" target="_blank">comment utiliser l&rsquo;API Sesame</a> depuis un programme Java, quelles dépendances étaient nécessaires, et comment faire les opérations de base avec un Repository : initialiser, charger des données, écrire des données.</p>
<p>Voilà maintenant comment effectuer des query <a class="zem_slink" title="SPARQL" href="http://en.wikipedia.org/wiki/SPARQL" target="_blank" rel="wikipedia">SPARQL</a> SELECT et CONSTRUCT sur un Repository, et traiter les résultats. Les deux types de query utilisent des objets différents : <a href="http://www.openrdf.org/doc/sesame2/api/org/openrdf/query/TupleQuery.html" target="_blank">TupleQuery</a> et <a href="http://www.openrdf.org/doc/sesame2/api/org/openrdf/query/TupleQueryResult.html" target="_blank">TupleQueryResult</a> pour les SELECT, <a href="http://www.openrdf.org/doc/sesame2/api/org/openrdf/query/GraphQuery.html" target="_blank">GraphQuery</a> et <a href="http://www.openrdf.org/doc/sesame2/api/org/openrdf/query/GraphQueryResult.html" target="_blank">GraphQueryResult</a> pour les CONSTRUCT. Les commentaires dans le code ci-dessous parlent d&rsquo;eux-même, et n&rsquo;hésitez-pas à vous reporter à la <a href="http://www.openrdf.org/doc/sesame2/users/ch08.html#d0e879" target="_blank">documentation des API Sesame</a> pour d&rsquo;autres exemples.</p>
<p><span id="more-125"></span><br />
[java]		// création du Repository en mémoire.<br />
		Repository repository = new SailRepository(new MemoryStore());<br />
		// initialisation du Repository : cet appel est obligatoire une fois et une seule<br />
		repository.initialize();</p>
<p>		// on ouvre une connection au repository<br />
		// comme en JDBC, c&rsquo;est à travers cette connexion que sont envoyées toute les querys<br />
		RepositoryConnection connection = repository.getConnection();</p>
<p>		// I. exemple de Query SELECT</p>
<p>		// on initialise la query.<br />
		TupleQuery selectQuery = connection.prepareTupleQuery(<br />
				QueryLanguage.SPARQL,<br />
				&quot;SELECT ?x ?foafName WHERE { ?x &amp;lt;http://xmlns.com/foaf/0.1/name&amp;gt; ?foafName }&quot;<br />
		);</p>
<p>		// on l&rsquo;execute<br />
		TupleQueryResult selectQueryResult = selectQuery.evaluate();</p>
<p>		// on itère sur les résultats<br />
		while(selectQueryResult.hasNext()) {<br />
			// chaque ligne du résultat est un BindingSet<br />
			BindingSet aBinding = selectQueryResult.next();</p>
<p>			// on print les valeurs de cette ligne<br />
			System.out.println(&quot;Personne &quot;+aBinding.getValue(&quot;x&quot;)+&quot; a pour nom &quot;+aBinding.getValue(&quot;foafName&quot;));</p>
<p>			// si on ne connait pas les noms de variables de la query, on peut les récupérer dynamiquement<br />
			for (String aBindingName : selectQueryResult.getBindingNames()) {<br />
				System.out.println(&quot;La valeur de &quot;+aBindingName+&quot; est &quot;+aBinding.getValue(aBindingName));<br />
			}<br />
		}</p>
<p>		// II. Exemple de Query CONSTRUCT</p>
<p>		// on initialise la query<br />
		GraphQuery constructQuery = connection.prepareGraphQuery(<br />
				QueryLanguage.SPARQL,<br />
				&quot;PREFIX foaf: &amp;lt;http://xmlns.com/foaf/0.1/&amp;gt; &quot; +<br />
				&quot;PREFIX vcard: &amp;lt;http://www.w3.org/2006/vcard/ns#&amp;gt;&quot; +<br />
				&quot;CONSTRUCT {?x vcard:n _:n . _:n vcard:given-name ?name .} WHERE { ?x foaf:name ?name }&quot;<br />
		);</p>
<p>		// on l&rsquo;execute<br />
		GraphQueryResult constructQueryResult = constructQuery.evaluate();</p>
<p>		// on itère sur les résultats, qui sont des Statement RDF, pas des binding<br />
		while(constructQueryResult.hasNext()) {<br />
			Statement anRDFStatement = constructQueryResult.next();<br />
			// ici on se contente d&rsquo;afficher le Statement<br />
			// typiquement on devrait en faire quelque chose : écrire dans un fichier, ou<br />
			// l&rsquo;insérer dans un autre Repository, etc.<br />
			System.out.println(anRDFStatement);<br />
		}</p>
<p>		// quand on n&rsquo;a plus besoin de la connexion, on la ferme<br />
		connection.close();[/java]
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="float: right;" alt="" src="http://img.zemanta.com/pixy.gif?x-id=5dce1730-f9fa-45c9-9b5a-c5c26b36ade2" /></div>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2012/05/23/tutoriel-exemple-de-query-sparql-avec-lapi-sesame/">Tutoriel : exemple de query SPARQL avec l&rsquo;API Sesame</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.sparna.fr/2012/05/23/tutoriel-exemple-de-query-sparql-avec-lapi-sesame/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
