<?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; Shapes</title>
	<atom:link href="https://blog.sparna.fr/tag/shapes/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>SHACL (RDF Shapes Constraint Language) : enfin la possibilité de valider des données RDF</title>
		<link>https://blog.sparna.fr/2017/01/02/shacl-rdf-shapes-constraint-language-enfin-la-possibilite-de-valider-des-donnees-rdf/</link>
		<comments>https://blog.sparna.fr/2017/01/02/shacl-rdf-shapes-constraint-language-enfin-la-possibilite-de-valider-des-donnees-rdf/#comments</comments>
		<pubDate>Mon, 02 Jan 2017 12:27:45 +0000</pubDate>
		<dc:creator><![CDATA[Thomas Francart]]></dc:creator>
				<category><![CDATA[Linked Data]]></category>
		<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[SHACL]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[Shapes]]></category>

		<guid isPermaLink="false">http://blog.sparna.fr/?p=1065</guid>
		<description><![CDATA[<p>Edit (16/04/2020) : intéressé pour essayer SHACL ? testez SHACL Play! La vie des standards est parfois un peu difficile à comprendre, et c&#8217;est particulièrement vrai pour ce qui concerne le web de données. Pourquoi en effet existe-t-il depuis 2004 un standard &#8211; OWL &#8211; permettant de faire des raisonnements automatiques sur des données, ce&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2017/01/02/shacl-rdf-shapes-constraint-language-enfin-la-possibilite-de-valider-des-donnees-rdf/">SHACL (RDF Shapes Constraint Language) : enfin la possibilité de valider des données RDF</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;"><strong>Edit (16/04/2020)</strong> : <em>intéressé pour essayer SHACL ? testez <strong><a href="http://shacl-play.sparna.fr/">SHACL Play!</a></strong></em></p>
<p style="text-align: justify;">La vie des standards est parfois un peu difficile à comprendre, et c&rsquo;est particulièrement vrai pour ce qui concerne le <a href="https://www.w3.org/2013/data/" target="_blank">web de données</a>. Pourquoi en effet existe-t-il depuis 2004 un standard &#8211; <a href="https://www.w3.org/TR/owl-features/" target="_blank">OWL</a> &#8211; permettant de faire des raisonnements automatiques sur des données, ce dont on a rarement besoin, alors qu&rsquo;<strong>il n&rsquo;existe aucun standard W3C pour vérifier si des données sont conformes, ce dont on a <em>toujours</em> besoin</strong> ? la réponse est sans doute dans les besoins et les problématiques des participants au W3C à l&rsquo;époque, et dans la vision d&rsquo;un web &laquo;&nbsp;sémantique&nbsp;&raquo; qui penchait plus vers un idéal d&rsquo;Intelligence Artificielle que vers un idéal de <a href="http://linkeddata.org/" target="_blank">Données Liées</a>. Seulement on a vite compris que pour faire du raisonnement il faut avoir des données correctes.</p>
<p style="text-align: justify;">Une nouvelle recommandation W3C prévue pour juin 2017,<strong> <a href="https://www.w3.org/TR/shacl/" target="_blank">SHACL (SHapes Constraint Language)</a>, va remédier à ce manque en permettant d&rsquo;exprimer des contraintes de vérification sur un graphe RDF</strong>.</p>
<p><span id="more-1065"></span></p>
<h2>Le problème avec OWL</h2>
<p style="text-align: justify;">Je participe à beaucoup de projets qui impliquent des transformations et des publications de données RDF ou <a href="http://www.sparna.fr/skos/SKOS-traduction-francais.html" target="_blank">SKOS</a> sur le web. Et <strong>c&rsquo;est bel et bien d&rsquo;abord des problématiques de validation et de vérification de données que nous avons, et pratiquement jamais des besoins de raisonnements</strong>. Or une ontologie n&rsquo;est pas faite pour vérifier la conformité des données à une spécification, ni faite pour décrire la structure d&rsquo;un formulaire de saisie de données répondant à ces spécifications.</p>
<p style="text-align: justify;">Ce que nous faisons donc systématiquement est donc de quand même créer une ontologie, mais de &laquo;&nbsp;tordre&nbsp;&raquo; l&rsquo;interprétation de cette ontologie en l&rsquo;utilisant pour vérifier des contraintes. Par exemple le fait d&rsquo;exprimer que la propriété &laquo;&nbsp;a_pour_auteur&nbsp;&raquo; a pour &laquo;&nbsp;<a href="https://fr.wikipedia.org/wiki/RDF_Schema#Propri.C3.A9t.C3.A9s" target="_blank">domaine</a>&nbsp;&raquo; la classe &laquo;&nbsp;Document&nbsp;&raquo; en OWL/<a href="https://www.w3.org/TR/rdf-schema/" target="_blank">RDFS</a> veut dire &laquo;&nbsp;si X porte la propriété a_pour_auteur, alors c&rsquo;est un Document&nbsp;&raquo;, et certainement pas &laquo;&nbsp;la propriété a_pour_auteur ne devrait être exprimée que sur des Document&nbsp;&raquo;; mais c&rsquo;est pourtant comme cela que l&rsquo;ontologie créée est utilisée dans ce contexte (en dérivant par exemple des règles de vérification SPARQL à partir des axiomes OWL).</p>
<h2 style="text-align: justify;">SHACL</h2>
<p style="text-align: justify;"><strong>SHACL permettra de spécifier la &laquo;&nbsp;forme&nbsp;&raquo; (Shape) à laquelle on souhaite qu&rsquo;un graphe RDF réponde</strong>. Cette spécification s&rsquo;exprime par exemple comme cela <em>(<strong>Attention</strong>, cet exemple est extrait de la version temporaire de SHACL au 02/01/2017 et peut changer dans la recommendation finale)</em> :</p>
<blockquote>
<pre><span style="font-size: 10pt;">ex:PersonShape
	a sh:Shape ;</span>
<span style="font-size: 10pt;">        # Applies to all persons
	sh:targetClass ex:Person ;
	sh:property [</span>
<span style="font-size: 10pt;">                # Constrains the values of the ex:ssn property
		sh:predicate ex:ssn ;     
		sh:maxCount 1 ;
		sh:datatype xsd:string ;
		sh:pattern "^\\d{3}-\\d{2}-\\d{4}$" ;
	] ;
	sh:property [
		sh:predicate ex:child ;
		sh:class ex:Person ;
		sh:nodeKind sh:IRI ;
	] ;
	sh:property [
		rdfs:comment "A person's parents are represented via ex:child used in the inverse direction." ;
		sh:path [ sh:inversePath ex:child ] ;
		sh:name "parent" ;
		sh:maxCount 2 ;
	] .
</span>

</pre>
</blockquote>
<p style="text-align: justify;">Comment décoder cet exemple ? &laquo;&nbsp;Sur les ex:Person, il faut que la propriété ex:ssn (numéro de sécu) soit présente au maximum une fois, et qu&rsquo;elle soit une chaine de caractère qui réponde à une certaine expression régulière. Il faut également que la propriété ex:child soit une référence à des IRI/URI qui soit une autre ex:Person. Il faut également qu&rsquo;une ex:Person soit référencée au maximum 2 fois par ex:child&nbsp;&raquo;. Et ainsi de suite.</p>
<p style="text-align: justify;">La version publique de SHACL est publiée à <a href="https://www.w3.org/TR/shacl/">https://www.w3.org/TR/shacl/</a> mais je vous recommande d&rsquo;ici juin de vous référer au document en cours d&rsquo;écriture à <a href="https://w3c.github.io/data-shapes/shacl/">https://w3c.github.io/data-shapes/shacl/.</a></p>
<h2>Validateurs SHACL</h2>
<p style="text-align: justify;">De la même façon que des ontologies OWL peuvent être interprétées par des raisonneurs OWL, les contraintes SHACL seront vérifiées par des vérificateurs SHACL. L&rsquo;implémentation la plus avancée est sans doute celle de TopQuadrant (les éditeurs principaux de la recommendations SHACL) qui a publié en open-source l&rsquo;<a href="https://github.com/TopQuadrant/shacl">implémentation de SHACL utilisé dans TopBraid</a>.</p>
<p style="text-align: justify;">Europeana a également <a href="https://lists.w3.org/Archives/Public/public-rdf-shapes/2016Nov/0031.html">annoncé</a> un <a href="https://github.com/hugomanguinhas/europeana_shapes">ensemble de règles SHACL</a> pour vérifier les données <a href="http://pro.europeana.eu/page/edm-documentation" target="_blank">EDM (Europeana Data Model)</a>, ainsi qu&rsquo;une implémentation d&rsquo;un validateur SHACL.</p>
<p style="text-align: justify;">Il faut également noter que, si SHACL permet de valider des données a posteriori, la recommandation inclut également ce qu&rsquo;il faut pour <a href="https://www.w3.org/TR/shacl/#nonValidation">utiliser les règles pour créer des formulaires de saisie (ordre des propriétés, libellés/regroupement des zones, etc.)</a>, ce qui permettra donc de spécifier la structure de <strong>formulaires de données sémantiques</strong>.</p>
<h2>Une technologie importante pour la publication et l&rsquo;intégration de données</h2>
<p style="text-align: justify;"><strong>SHACL va modifier profondément la façon dont on mène les projets web de données</strong>. Plutôt que de définir une ontologie forcément un peu bancale ou limitée (car pas utilisée pour son objectif principal qui est de donner un point de vue sur des données), on commencera par définir un jeu de contraintes SHACL que l&rsquo;on souhaite vérifier sur les données. Tous les projets d&rsquo;échange et d&rsquo;intégration de données vont pouvoir tirer parti de cette nouvelle brique.</p>
<p style="text-align: justify;">Cela assainira également le discours autour du web de données : il ne sera plus obligatoire de passer par une étape où l&rsquo;on doit expliquer ce qu&rsquo;est une ontologie ! Bref, je vois SHACL comme un composant important dans l&rsquo;ensemble d&rsquo;outils dont nous disposons pour partager et lier des données de qualité sur le web. Et vous, pensez-vous que SHACL vous sera utile ?</p>
<p style="text-align: justify;"><span style="font-size: 10pt;"><em>Illustration de l&rsquo;article : By Deutsche Fotothek, Public Domain, <a href="https://commons.wikimedia.org/w/index.php?curid=6483869">https://commons.wikimedia.org/w/index.php?curid=6483869</a></em></span></p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2017/01/02/shacl-rdf-shapes-constraint-language-enfin-la-possibilite-de-valider-des-donnees-rdf/">SHACL (RDF Shapes Constraint Language) : enfin la possibilité de valider des données RDF</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/2017/01/02/shacl-rdf-shapes-constraint-language-enfin-la-possibilite-de-valider-des-donnees-rdf/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
