<?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; Triplestore</title>
	<atom:link href="https://blog.sparna.fr/tag/triplestore-2/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>The Genesis of Sparnatural in the context of the OpenArchaeo platform</title>
		<link>https://blog.sparna.fr/2025/03/28/the-genesis-of-sparnatural-in-the-context-of-the-openarchaeo-platform/</link>
		<comments>https://blog.sparna.fr/2025/03/28/the-genesis-of-sparnatural-in-the-context-of-the-openarchaeo-platform/#comments</comments>
		<pubDate>Fri, 28 Mar 2025 14:54:53 +0000</pubDate>
		<dc:creator><![CDATA[Marie Muller]]></dc:creator>
				<category><![CDATA[FAIR]]></category>
		<category><![CDATA[Linked Data]]></category>
		<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[Open Data]]></category>
		<category><![CDATA[Recherche d'informations]]></category>
		<category><![CDATA[Sparnatural]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[Triplestores]]></category>
		<category><![CDATA[CIDOC-CRM]]></category>
		<category><![CDATA[Huma-Num]]></category>
		<category><![CDATA[ResearchSpace]]></category>
		<category><![CDATA[thesaurus]]></category>
		<category><![CDATA[Triplestore]]></category>

		<guid isPermaLink="false">https://blog.sparna.fr/?p=1949</guid>
		<description><![CDATA[<p>The OpenArchaeo platform, developed by French consortium Huma-Num MASAplus (Mémoire des Archéologues et des Sites Archéologiques) together with SPARNA, is a platform dedicated to archaeological data interoperability. This semantic interoperability objective relies on the strong conceptual foundations offered by the CIDOC-CRM data model. Paired with the CIDOC-CRM in a federated way, OpenArchaeo aims at :&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2025/03/28/the-genesis-of-sparnatural-in-the-context-of-the-openarchaeo-platform/">The Genesis of Sparnatural in the context of the OpenArchaeo platform</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://openarchaeo.huma-num.fr">OpenArchaeo</a> platform, developed by French <a href="https://www.huma-num.fr/les-consortiums-hn/#MASAplus">consortium Huma-Num MASAplus</a> (Mémoire des Archéologues et des Sites Archéologiques) together with SPARNA, is a platform dedicated to archaeological data interoperability. This semantic interoperability objective relies on the strong conceptual foundations offered by the <a href="https://blog.sparna.fr/2019/03/26/le-cidoc-crm-ne-nous-arrachons-plus-les-cheveux/">CIDOC-CRM</a> data model.</p>
<p>Paired with the CIDOC-CRM in a federated way, OpenArchaeo aims at :</p>
<ul>
<li>making available the archaeological datasets produced by the MASAplus consortium’s partners on the semantic web, in the form of a triplestore with data aligned with the ontology and its extensions dedicated to archaeology ;</li>
<li>providing an intuitive query interface for archaeological data.</li>
</ul>
<p>The latter query interface integrates the Sparnatural knowledge graph exploration component. The UI of this component was heavily inspired by the British Museum&rsquo;s ResearchSpace semantic search feature, as the system proposes the user to build his own queries based on the CIDOC-CRM model underlying the data.</p>
<h2>About ResearchSpace platform</h2>
<p>Initiated in 2009 by a cross-disciplinary team at the British Museum, ResearchSpace is « A full CIDOC-CRM authoring and search system, based on an exhaustive collection of forms that reflects all applicable relationships from the CIDOC CRM ontology. »</p>
<p>Among a wide range of semantic tools to create, manipulate, analyse and visualise data, the platform provides a s<a href="https://documentation.researchspace.org/resource/Help:SemanticSearch">emantic structured search component</a> based on categories and relations.</p>
<p>While open source, ResearchSpace’s code didn’t fit our architecture : we just chose to follow the simple visual elements of ResearchSpace’s query interface to develop our own Sparnatural query builder for OpenArchaeo, and set up a system of icons to identify the main components of the archaeological data.</p>
<p>ResearchSpace has recently (december 2024) released a brand new <a href="https://github.com/researchspace/researchspace/blob/master/release-notes.md">4.0.0 version</a>. This latest can be installed easily and now comes with a default setup of forms based on the CIDOC-CRM. It enables image annotations, knowledge maps creations, semantic narratives writing, timeline productions, and more <a href="https://researchspace.org/semantic-tools/">semantic tools</a>.</p>
<h2>Sparnatural’s first use-case was OpenArchaeo’s CIDOC-CRM model !</h2>
<p><a href="http://openarchaeo.huma-num.fr/explorateur/home">The structure of the knowledge graph of OpenArchaeo</a> relies on the CIDOC-CRM and some of its extension (CRMarchaeo, CRMsci and CRMba). It is a generic model that covers the basic concepts found in most archaeological corpuses (site, operation, structure, feature, wall, burial, stratigraphic unit and artifact).</p>
<p>Here a focus on Class S19 :</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2025/03/modeleOpenArchaeoEn_base.png"><img class="aligncenter size-full wp-image-1950" src="https://blog.sparna.fr/wp-content/uploads/2025/03/modeleOpenArchaeoEn_base.png" alt="modeleOpenArchaeoEn_base" width="898" height="416" /></a><br />
Several external thesauri were added too for querying the datasets : <a href="https://pactols.frantiq.fr/">PACTOLS thesaurus for archaelogy</a>, but also <a href="https://www.geonames.org/ontology/documentation.html">Geonames</a> and <a href="https://perio.do/technical-overview/">Periodo</a> for spatial and temporal searches.</p>
<p>This way, when users wish to connect two elements (artifact and site for example), the interface automatically suggests the available relationships between these entities, enabling users to formulate their request in a simple way without having to know either the entities and properties of CIDOC CRM, or the structure of the system : the SPARQL queries that correspond to the sentences visually built by users will be automatically computed. In addition, the usage of thesauri allows the users to cross-reference easily multiple datasets through the different widgets proposed in Sparnatural.</p>
<h2><a href="https://github.com/sparna-git/Sparnatural/releases">Get the latest release of Sparnatural !</a></h2>
<p>Since it was created for OpenArchaeo in 2019, Sparnatural UI has been fully redesigned. It now offers a large panel of features, from different <a href="https://docs.sparnatural.eu/widgets.html">widgets for value selection</a> (dropdown lists, ordered by occurrence count or alphabetically, autocomplete search fields, date pickers, tree widgets&#8230;) to brand new <a href="https://docs.sparnatural.eu/result-display.html">result display plugins</a> : the default visualisation is a table of results, but if the results are geolocalized they can be shown in a map. Also grid, stats, pie or bar charts, and a timeline plugin have been made available and documented.</p>
<h2>To go further on OpenArchaeo’s platform &#8230;</h2>
<p><a href="https://www.youtube.com/watch?v=8GW5sirwHJs">See a presentation of the project on the CIDOC Museum Documentation Channel</a><br />
(« Semantic modelling of archaeological data online workshop series »)</p>
<p>The platform : <a href="http://openarchaeo.huma-num.fr/">http://openarchaeo.huma-num.fr/</a></p>
<p>The project : <a href="https://masa.hypotheses.org/openarchaeo">https://masa.hypotheses.org/openarchaeo</a></p>
<p>Read full research paper about the project : <a href="https://ceur-ws.org/Vol-2375/paper1.pdf">https://ceur-ws.org/Vol-2375/paper1.pdf</a></p>
<p><em>Image : Vestiges of a large villa in Courbehaye &laquo;&nbsp;les Deux Muids / le Moulin de Mongé&nbsp;&raquo;, photo Alain Lelong (2003), <a href="https://aerba.huma-num.fr/fiche.html?id=2811401">Atlas des Établissements Ruraux de Beauce Antique</a>, licence </em><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA</a></p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2025/03/28/the-genesis-of-sparnatural-in-the-context-of-the-openarchaeo-platform/">The Genesis of Sparnatural in the context of the OpenArchaeo platform</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/2025/03/28/the-genesis-of-sparnatural-in-the-context-of-the-openarchaeo-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation du triplestore OpenLink Virtuoso sous Linux</title>
		<link>https://blog.sparna.fr/2013/09/06/installation-du-triplestore-openlink-virtuoso-sous-linux/</link>
		<comments>https://blog.sparna.fr/2013/09/06/installation-du-triplestore-openlink-virtuoso-sous-linux/#comments</comments>
		<pubDate>Fri, 06 Sep 2013 15:01:16 +0000</pubDate>
		<dc:creator><![CDATA[Thomas Francart]]></dc:creator>
				<category><![CDATA[RDF]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[Triplestores]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[Openlink Virtuoso]]></category>
		<category><![CDATA[Triplestore]]></category>
		<category><![CDATA[Virtuoso Universal Server]]></category>

		<guid isPermaLink="false">http://blog.sparna.fr/?p=455</guid>
		<description><![CDATA[<p>Openlink Virtuoso est le triplestore utilisé dans le projet DBPedia et de nombreux autres projets de mise en ligne de endpoints SPARQL. Cet outil est disponible dans une version open-source et une version commerciale. S&#8217;il offre d&#8217;excellentes performances (a priori les meilleures dans les benchmarks de triplestore), son installation est&#8230; comment dire&#8230; plus compliquée que&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2013/09/06/installation-du-triplestore-openlink-virtuoso-sous-linux/">Installation du triplestore OpenLink Virtuoso sous Linux</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><a href="http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/">Openlink Virtuoso</a> est le triplestore utilisé dans le projet <a href="http://dbpedia.org">DBPedia</a> et de nombreux autres projets de mise en ligne de endpoints SPARQL. Cet outil est disponible dans une version open-source et une version commerciale. S&rsquo;il offre d&rsquo;excellentes performances (a priori les meilleures dans les <a href="http://wifo5-03.informatik.uni-mannheim.de/bizer/berlinsparqlbenchmark/results/V6/#comparison">benchmarks de triplestore</a>), son installation est&#8230; comment dire&#8230; plus compliquée que <a title="Tutoriel : comment installer un serveur RDF Sesame ?" href="http://blog.sparna.fr/tutoriel-comment-installer-un-serveur-rdf-sesame/">celle de Sesame</a>. Je consigne ici un retour d&rsquo;expérience et la procédure d&rsquo;installation que j&rsquo;ai suivi pour l&rsquo;installer dans une machine virtuelle Linux CentOS.</p>
<p><span id="more-455"></span></p>
<p>La documentation de référence de cette installation est disponible <a href="http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VOSCentosNotes">ici</a>. Virtuoso est disponible dans les dépôts Linux, cependant cette version date quelque peu, et compte-tenu des dernières évolutions sur le produit il est de bon ton d&rsquo;essayer de se bien se tenir à jour. La procédure d&rsquo;installation ci-dessous est donc celle qui compile Virtuoso à partir des sources.</p>
<pre># Télécharger les sources depuis <a href="http://sourceforge.net/projects/virtuoso">http://sourceforge.net/projects/virtuoso</a>
# Télécharger le fichier virtuoso-opensource-6.1.7.tar.gz

# D'abord installer toutes les dépendances requises
su -
yum install gcc gmake autoconf automake libtool flex bison gperf gawk m4 make
yum install openssl-devel readline-devel wget

# Créer un répertoire dans lequel on va dézipper les sources
mkdir virtuoso
cd virtuoso
cp ../Downloads/virtuoso-opensource-6.1.7.tar.gz .

# untar
tar xvpfz virtuoso-opensource-6.1.7.tar.gz

# configure
# c'est ici que l'on peut changer le prefixe racine de l'installation avec le parametre --prefix
cd virtuoso-opensource-6.1.7
./configure --prefix=/usr/local/ --with-readline

# Voilà ce qu'on obtient :

Virtuoso Open Source Edition (Row Store) 6.1.7 configuration summary
====================================================================

Installation variables
  layout                  default
  prefix                  /usr/local
  exec_prefix             ${prefix}

Installation paths
  programs                ${exec_prefix}/bin
  include files           ${prefix}/include
  libraries               ${exec_prefix}/lib
  manual pages            ${datarootdir}/man
  vad packages            ${datarootdir}/virtuoso/vad
  database                ${prefix}/var/lib/virtuoso/db
  hosting                 ${exec_prefix}/lib/virtuoso/hosting

Options
  BUILD_OPTS               xml ssl imsg pldebug pthreads readline

# compiler (prend plusieurs dizaines de minutes à plusieurs heures en fonction de la puissance de la machine)
nice make

# installer
su -
cd /home/thomas/virtuoso/virtuoso-opensource-6.1.7
make install

# vérifier que virtuoso.ini est au bon endroit
cd /usr/local/var/lib/virtuoso/db/
ls
# virtuoso.ini

# démarrer le serveur
virtuoso-t -df
# cette commande demarre le serveur dans le terminal, si on ferme la fenêtre le process s'arrete.
# pour demarrer dans le background :
virtuoso-t -f &amp;
# et pour arreter le serveur :
ps -edf | grep virtuoso-t
kill -9 &lt;numero du process&gt;
# accéder à http://localhost:8890/conductor/

# se logguer avec le super-admin : dba/dba

# changer tout de suite le mot de passe du super-admin
isql
set password dba new_password

# accéder au endpoint public à http://localhost:8890/sparql
# et voilà :-)
# avertissement : cette procédure ne convient pas pour un déploiement en production</pre>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img zwzrqlmaowcoxhhnfjey rurilkjvxyrgpzelrpvq" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=4484d2ab-c5fd-4763-b273-7d80e62154ec" alt="" /></div>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2013/09/06/installation-du-triplestore-openlink-virtuoso-sous-linux/">Installation du triplestore OpenLink Virtuoso sous Linux</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/2013/09/06/installation-du-triplestore-openlink-virtuoso-sous-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bénéfices clés des technologies du web de données 2/2 – absence de modèle, raisonnement</title>
		<link>https://blog.sparna.fr/2012/10/25/benefices-cles-des-technologies-du-web-de-donnees-22-absence-de-modele-raisonnement/</link>
		<comments>https://blog.sparna.fr/2012/10/25/benefices-cles-des-technologies-du-web-de-donnees-22-absence-de-modele-raisonnement/#comments</comments>
		<pubDate>Thu, 25 Oct 2012 08:41:20 +0000</pubDate>
		<dc:creator><![CDATA[Thomas Francart]]></dc:creator>
				<category><![CDATA[Linked Data]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[avantages]]></category>
		<category><![CDATA[ontologies]]></category>
		<category><![CDATA[raisonnement]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[Triplestore]]></category>
		<category><![CDATA[vocabulaires]]></category>
		<category><![CDATA[web de données]]></category>
		<category><![CDATA[web of data]]></category>
		<category><![CDATA[web sémantique]]></category>

		<guid isPermaLink="false">http://blog.sparna.fr/?p=227</guid>
		<description><![CDATA[<p>Dans la première partie de cette étude sur les avantages des technologies du web de données &#8211; que je valorise au sein de la société Sparna, j&#8217;avais étudié ce qui fait leur essence, leur &#171;&#160;principe actif&#160;&#187;, c&#8217;est-à-dire les mécanismes de publication de données dans un environnement distribué. Je continue ici l&#8217;analyse sur deux autres aspects&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2012/10/25/benefices-cles-des-technologies-du-web-de-donnees-22-absence-de-modele-raisonnement/">Bénéfices clés des technologies du web de données 2/2 – absence de modèle, raisonnement</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Dans la <a title="Bénéfices clés des technologies du web de données 1/2 – l’environnement distribué" href="http://blog.sparna.fr/benefices-cles-des-technologies-du-web-de-donnees-12-lenvironnement-distribue/">première partie</a> de cette étude sur les avantages des technologies du web de données &#8211; que je valorise au sein de la société <a href="http://sparna.fr">Sparna</a>, j&rsquo;avais étudié ce qui fait leur essence, leur &laquo;&nbsp;principe actif&nbsp;&raquo;, c&rsquo;est-à-dire les mécanismes de publication de données dans un environnement distribué. Je continue ici l&rsquo;analyse sur deux autres aspects qui font l&rsquo;originalité de ces approches : <strong>l&rsquo;absence de modèle de données</strong> et <strong>les possibilités offertes par le raisonnement</strong>.</p>
<p>&nbsp;</p>
<h2>Le schéma de données, quel schéma de données ?</h2>
<p>&nbsp;</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Facilite les phases de prototypage</span></p>
<p style="text-align: justify;">Dans les approches à base de RDF+SPARQL, on n&rsquo;a pas besoin d&rsquo;avoir un schéma de données pour commencer à travailler. <span class="pullquote">On a juste besoin des données. Le schéma peut venir après.</span> <em>&laquo;&nbsp;Data first, model after&nbsp;&raquo;</em>. C&rsquo;est une approche &laquo;&nbsp;bottom-up&nbsp;&raquo;, là où les SGBD+SQL ont nécessairement une approche &laquo;&nbsp;top-down&nbsp;&raquo; : &laquo;&nbsp;model first, data after&nbsp;&raquo;. Cela permet un <strong>prototypage rapide des projets</strong> : plus besoin d&rsquo;attendre d&rsquo;avoir défini un modèle de base de données avant de faire une première requête.</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Intégration de données hétérogènes</span></p>
<p style="text-align: justify;">Ces absence de schéma, de modèle, dans les bases de données RDF (triplestores) donne la possibilité d&rsquo;y intégrer des données :</p>
<ul style="text-align: justify;">
<li><strong>hétérogènes</strong> : exprimées avec des modèles différents, en ayant ensuite la possibilité de les réconcilier sur un modèle unique si besoin;</li>
<li><strong>incomplètes</strong> : avec des valeurs manquantes, en ayant la possibilité de repérer ces objets anormaux si besoin;</li>
<li><strong>incohérentes</strong> : venant de sources différentes qui donnent des informations contradictoires, en ayant la possibilité de repérer ces incohérences et de les corriger si besoin;</li>
</ul>
<p style="text-align: justify;"><span style="text-decoration: underline;">Une infinité de points de vue</span></p>
<p style="text-align: justify;">Zéro schéma signifie aussi une multiplicité de schémas. Les technologies sémantiques permettent d&rsquo;exprimer les mêmes données suivant plusieurs schémas dans la même base, offrant alors plusieurs &laquo;&nbsp;points de vue&nbsp;&raquo;, plusieurs façons de voir les mêmes données. Et ceci automatiquement avec de l&rsquo;inférence OWL. Chaque application consommant les données pourra alors s&rsquo;appuyer sur le schéma qu&rsquo;elle comprend. <strong>On favorise ainsi l&rsquo;interopérabilité entre applications</strong>. Un exemple ? le standard de représentation <a href="www.w3.org/2004/02/skos/">SKOS</a> permet une représentation simple de systèmes d&rsquo;organisation de connaissances (thesaurus, arbres de classement, &#8230;) , à base de &laquo;&nbsp;Concept&nbsp;&raquo; qui portent des &laquo;&nbsp;prefLabels&nbsp;&raquo; (libellés préférentiels). C&rsquo;est un format d&rsquo;échange commode, mais inadapté à la représentation de bases de connaissances riches, comme une base de personnes. Il est tout à fait possible de dire &laquo;&nbsp;ce que tu appelles une Personne dans ton système je l&rsquo;appelle également un Concept SKOS, et la propriété <em>foaf:name</em> que tu utilises correspond à la propriété <em>skos:prefLabel</em> SKOS&nbsp;&raquo;, pour ainsi obtenir une &laquo;&nbsp;vue&nbsp;&raquo; SKOS d&rsquo;une base de personnes.</p>
<p style="text-align: justify;">Ce faisant, on permet également de <strong>séparer les métadonnées initiales des contenus (riches et compliquées) des catégories de ces contenus pour la diffusion</strong>, en fonction des supports ou des publics (souvent plus simples et liées à l&rsquo;usage). L&rsquo;exemple classique est l&rsquo;hôtel rangé dans une catégorie &laquo;&nbsp;bon marché&nbsp;&raquo; alors que ses métadonnées initiales sont plus complexes : prix par nuit, nombre d&rsquo;étoiles, labels, piscine, etc.</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Flexibilité maximale</span></p>
<p style="text-align: justify;">Le fait que le schéma ne contraigne pas les données donne une <strong>flexibilité et une évolutivité importante au système</strong>. On peut rajouter, supprimer, modifier un attribut ou une classe à la volée. <span class="pullquote">On peut modifier le schéma, sans toucher aux données. On peut même changer de schéma facilement.</span> Prenons un cas d&rsquo;intégration de données : une application intégrant une source de données externe avec ses propres données, et se retrouvant confronté au cas où cette source de données change de format et de modèle :</p>
<ul>
<li style="text-align: justify;">dans le monde du XXème siècle, en SGBD+SQL, confronté à un tel cas on doit 1/ modifier le parsing des données qui ont changé, 2/ modifier les tables du système pour prendre en compte ce nouveau format, 3/ modifier les requêtes de l&rsquo;applicatif.</li>
<li style="text-align: justify;">Dans le monde du XXIème siècle, en RDF+SPARQL : 1/ pas de parsing à modifier (les données arrivent toujours en RDF), 2/ pas de schema à modifier (il n&rsquo;y en a pas) et 3/ il faut toujours modifier les requêtes de l&rsquo;applicatif&#8230; plus qu&rsquo;un 1/3 du travail. Et encore, il est possible, le temps de modifier les requêtes, d&rsquo;ajouter de l&rsquo;inférence pour recréer les données dans l&rsquo;ancien modèle à partir du nouveau, de façon à ce que les requêtes continuent à répondre.</li>
</ul>
<p>&nbsp;</p>
<h2>Le raisonnement, ou les manipulations automatiques des données</h2>
<p style="text-align: justify;"><span style="text-decoration: underline;">Réconciliation</span></p>
<p style="text-align: justify;">Le raisonnement est la capacité des outils RDF à déduire automatiquement de nouvelles informations à partir des informations existantes. Notons bien que ces capacités de raisonnement ne sont ni proposées par tous les outils RDF, ni forcément utiles dans tous les contextes. Elles vont par exemple permettre de <strong>réconcilier les données hétérogènes sur un modèle commun</strong> : &laquo;&nbsp;Ensemble des personnes = ensemble des contacts qui viennent de mon répertoire de téléphone + ensemble de mes contacts dans les réseaux sociaux&nbsp;&raquo;.</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Classification</span></p>
<p style="text-align: justify;">Le même mécanisme est utilisé pour des besoins plus proches de la classification (&laquo;&nbsp;repurposing&nbsp;&raquo; de contenu), pour <strong>définir les ensembles d&rsquo;objets dans des points de vue multiples</strong>, tel qu&rsquo;évoqué plus haut. On peut par exemple avoir d&rsquo;un côté l&rsquo;ensemble des objets &laquo;&nbsp;Hébergements&nbsp;&raquo;, et de l&rsquo;autre l&rsquo;ensemble des objets &laquo;&nbsp;Hôtels pas chers&nbsp;&raquo; défini comme &laquo;&nbsp;l&rsquo;ensemble des objets Hébergements qui sont de type hôtel et ont un prix par nuit inférieur à 60 euros&nbsp;&raquo;. Le deuxième ensemble sera calculé à partir du premier, automatiquement.</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Inférence</span></p>
<p style="text-align: justify;">L&rsquo;inférence permet de <strong>précalculer des liens ou des données qui facilitent l&rsquo;écriture des requêtes et améliorent les temps de réponse</strong>. Le total des buts marqués par une équipe de football dans une compétition est calculé comme la somme de tous les buts marqués par cette équipe dans les matchs de cette compétition. La donnée est calculée une fois, et peut ensuite être présentée directement sur la page de l&rsquo;équipe, il n&rsquo;y a pas de calcul à faire au moment de l&rsquo;affichage (voir <a href="http://news.bbc.co.uk/sport2/hi/football/world_cup_2010/groups_and_teams/team/france">le site de la coupe du monde de la BBC</a>, réalisé à partir des technologies du web de données en utilisant le raisonnement).</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Consistance</span></p>
<p style="text-align: justify;">L&rsquo;inférence est aussi ce qui permet de contrôler la consistance par rapport au modèle de données. Car si en RDF il est possible de ne pas avoir de schéma, dans les cas où il y en a un, <strong>le moteur d&rsquo;inférence sera capable de déterminer si les données sont consistantes par rapport à ce schéma</strong> ou non.</p>
<h2 style="text-align: justify;">Conclusion&#8230;</h2>
<p style="text-align: justify;">Ce travail d&rsquo;analyse partiel est une synthèse des expériences acquises avec ces technologies, et des lectures spécialisées (le forum <a href="http://answers.semanticweb.com" target="_blank">answers.semanticweb.com</a> contient beaucoup de réponses intéressantes). Il doit permettre de bien <strong>situer les avantages de ces technos pour ne pas en faire une évangélisation aveugle</strong>, et de les utiliser au mieux pour résoudre des problèmes concrets. Il y aurait peut-être d&rsquo;autres avantages à étudier, comme la réutilisation possibles de schémas existants, comme ceux que l&rsquo;on peut trouver dans le <a href="http://lov.okfn.org" target="_blank">LOV</a> (Linked Open Vocabularies).</p>
<p style="text-align: justify;">De plus en plus de projets vont vouloir soit tirer parti de ce qui est publié librement sur le web de données, soit rationnaliser des intégrations d&rsquo;API compliquées, ou encore améliorer leurs chaines de traitement et de diffusion de contenus, ouvrir des données de bases auparavant fermées, aligner des référentiels avec du raisonnement, etc&#8230; tous ces projets peuvent bénéficier d&rsquo;une approche basée sur le web de données. Si vous voulez en savoir plus, n&rsquo;hésitez pas à réagir ici ou à me <a href="http://sparna.fr/contact.html" target="_blank">contacter</a>.</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2012/10/25/benefices-cles-des-technologies-du-web-de-donnees-22-absence-de-modele-raisonnement/">Bénéfices clés des technologies du web de données 2/2 – absence de modèle, raisonnement</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/10/25/benefices-cles-des-technologies-du-web-de-donnees-22-absence-de-modele-raisonnement/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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>
