<?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; SHACL</title>
	<atom:link href="https://blog.sparna.fr/category/technologie/shacl/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>European Parliament Open Data Portal : a SHACL-powered knowledge graph</title>
		<link>https://blog.sparna.fr/2025/04/09/european-parliament-open-data-portal-a-shacl-powered-knowledge-graph/</link>
		<comments>https://blog.sparna.fr/2025/04/09/european-parliament-open-data-portal-a-shacl-powered-knowledge-graph/#comments</comments>
		<pubDate>Wed, 09 Apr 2025 14:10:12 +0000</pubDate>
		<dc:creator><![CDATA[Marie Muller]]></dc:creator>
				<category><![CDATA[Editeurs]]></category>
		<category><![CDATA[FAIR]]></category>
		<category><![CDATA[Linked Data]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[Open Data]]></category>
		<category><![CDATA[SHACL]]></category>
		<category><![CDATA[SHACL Play]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[DCAT]]></category>
		<category><![CDATA[ELI]]></category>
		<category><![CDATA[google spreadsheets]]></category>
		<category><![CDATA[json-ld]]></category>
		<category><![CDATA[knowledge graph]]></category>
		<category><![CDATA[SKOS]]></category>
		<category><![CDATA[SPARQL]]></category>

		<guid isPermaLink="false">https://blog.sparna.fr/?p=1959</guid>
		<description><![CDATA[<p>A second usecase Thomas wrote for Veronika Heimsbakk’s SHACL for the Practitioner upcoming book is about Sparna&#8217;s work for the European Parliament. From validation of the data in the knowledge graph to further projects of data integration and dissemination, many different usages of SHACL specifications were explored&#8230; &#8230; and more exploratory usages of SHACL are foreseen ! “&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2025/04/09/european-parliament-open-data-portal-a-shacl-powered-knowledge-graph/">European Parliament Open Data Portal : a SHACL-powered knowledge graph</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>A second usecase Thomas wrote for Veronika Heimsbakk’s <em><a href="https://veronahe.wordpress.com/shacl-for-the-practitioner/">SHACL for the Practitioner</a></em> upcoming book is about Sparna&rsquo;s work for the European Parliament.</p>
<p>From validation of the data in the knowledge graph to further projects of data integration and dissemination, many different usages of SHACL specifications were explored&#8230;</p>
<p>&#8230; and more exploratory usages of SHACL are foreseen !</p>
<h1>“</h1>
<h2><strong>A knowledge-graph powered open data portal</strong></h2>
<p><a href="https://data.europarl.europa.eu/">The European Parliament Open Data Portal (EPODP)</a> went live in January 2023. Its particularity is that it is not a mere aggregation of documents or dump files from business applications in custom formats; but rather a <strong>collection of datasets each extracted from a central semantic knowledge graph</strong>, itself aggregating data migrated from approximately <strong>twenty business applications</strong>. The result is a semantically interoperable open data portal : the semantic of its data model is clearly defined and documented, and reuses widely deployed existing ontologies. It already provides its data to different consumers (most notably <a href="https://www.europarl.europa.eu/">the europarl website</a> and <a href="https://law-tracker.europa.eu/">the EU law tracker</a>) in a context of cross-institutions interoperability. The data captures the activity of the parliament : as co-legislator together with the Council of the EU, the European Parliament (EP) holds plenary sittings, in which reports originating from committees, as well as motion for resolutions, are amended and voted; after the vote, the final adopted texts are published.</p>
<p>The focus on semantic interoperability of EPODP maximizes the potential of reuse and linkage of its datasets, and <strong>maximizes the quality</strong> of the offered data. It comes however at a cost when building the portal : deep analysis and understanding of the existing data and documents structure is required to capture the business semantic. SHACL is the way to formally encode this business semantic &#8211; but how is it deployed in practice ? how is it maintained ? what are the different types of SHACL specifications used ?</p>
<h2><strong>SHACL at the center of a model-driven approach</strong></h2>
<p>SHACL in the EPODP is at the basis of multiple model-driven usages depicted in the following diagram:</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2025/04/spec-SHACL.png"><img class="aligncenter size-large wp-image-1961" src="https://blog.sparna.fr/wp-content/uploads/2025/04/spec-SHACL-1024x508.png" alt="spec-SHACL" width="650" height="322" /></a></p>
<p>There was two key drivers for introducing the use of SHACL in the EPODP project : <strong>validation of the data</strong> in the knowledge graph, and <strong>generation of public documentations</strong> of the models. The same SHACL specification that captures the business semantic is directly actionable to be published as a documentation and to validate the data. The produced documentation is a set of public files, such as <a href="https://data.europarl.europa.eu/def/eli-ep">the ELI-EP application profile documentation</a> and others accessible from <a href="https://data.europarl.europa.eu/en/developer-corner">the EPODP developer&rsquo;s corner</a>. <a href="https://shacl-play.sparna.fr/play/doc">The SHACL Play documentation generator</a> is used to produce the documentation pages. Data validation happens at earlier stages, after data transformation steps.</p>
<p>Two additional usages of SHACL specifications were explored : one was to generate SPARQL queries to extract the content of datasets from the larger knowledge graph. The SHACL specification of a dataset content is interpreted to generate SPARQL CONSTRUCT queries, executed against the entire knowledge graph, to return a subset of data corresponding to the specification. The query generation was implemented <a href="https://shacl-play.sparna.fr/play/sparql">in SHACL Play</a>, however the EPODP chose to continue using manually crafted SPARQL queries to generate the datasets. The other usage was to complement the SHACL specifications with the mapping rules used to feed the corresponding properties or classes in the graph. This has the advantage that the mapping rules are documented and maintained alongside the specification and not in a separate document. This work is ongoing.</p>
<p>More exploratory usages of SHACL are foreseen : generating a query user interface based on the SHACL specification, <a href="https://docs.sparnatural.eu/how-to-configure-shacl/How-to-configure-Sparnatural-shacl.html">using the <strong>Sparnatural</strong> query builder</a>, and also input forms to facilitate the creation of DCAT datasets descriptions. Additionally, automated generation of the JSON-LD context and the JSON schema of the API are foreseen.</p>
<h2><strong>Not &laquo;&nbsp;1 SHACL to rule them all&nbsp;&raquo;, but application profiles, dataset definitions, and migration specifications</strong></h2>
<p>The definition of the EPODP knowledge graph is not captured in a single SHACL specification, but rather in three different application profiles, each being a selection of classes and properties of one sub-domain : <strong><a href="https://data.europarl.europa.eu/def/eli-ep">ELI-EP</a></strong> covers the description of documents and activities, <strong><a href="https://data.europarl.europa.eu/def/org-ep">ORG-EP</a></strong> covers the definitions of EP organisations (such as committees, political groups, etc.) and members of the parliament, and <strong><a href="https://europarl.github.io/skos-ep">SKOS-EP</a></strong> covers how controlled vocabularies are structured. In addition, <a href="https://data.europarl.europa.eu/def/dcat-ep">DCAT-EP</a> is the specification for how dataset records are described in the EPODP catalog &#8211; but this is not part of the knowledge graph <em>per se</em>.</p>
<p>Together, ELI-EP, ORG-EP and SKOS-EP specify the structure of the entire knowledge graph from which the datasets are extracted. In addition, the structure of each dataset family available in the EPODP (such as adopted texts, plenary documents, parliamentary questions, etc.) is also described in SHACL, referred to as <strong>&laquo;&nbsp;DSD&nbsp;&raquo; for &laquo;&nbsp;Dataset Definition&nbsp;&raquo;</strong>. While the application profiles describe every possible properties on generic shapes, the DSDs will specify only the subset of properties used in a dataset, with possibly different cardinalities or range. For example, ELI-EP specifies that <em>&laquo;&nbsp;a Work may have the property</em><em> </em><em>eli:adopts</em><em>&laquo;&nbsp;</em> (with no minimum cardinality (eli:adopts is defined as <em>&laquo;&nbsp;Indicates that the work represents the adopted work of one or several related works&nbsp;&raquo;</em>). The DSD for adopted texts datasets specifies the shape of &laquo;&nbsp;Adopted texts&nbsp;&raquo; as a subset of the Works, and indicates that the minimum cardinality of eli:adopts is 1 for this particular subset. Besides, some properties, such as eli:amends are not available for adopted texts, thus not declared in the DSD.</p>
<p>In addition, specifications of the conversion of some data sources are also specified in independent SHACL files. The articulations of these 3 kinds of SHACL files and the reused ontologies is depicted in the following diagram:</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2025/04/3-SHACL-shapes.png"><img class="aligncenter size-large wp-image-1962" src="https://blog.sparna.fr/wp-content/uploads/2025/04/3-SHACL-shapes-1024x603.png" alt="3-SHACL-shapes" width="650" height="383" /></a></p>
<p>There is currently no reuse or reference of shapes across the different specifications. Each is independent. A nice improvement would be to study how SHACL DSDs could be derived from the application profile SHACL, without redeclaring the identical constraints.</p>
<h2><strong>Editing SHACL in spreadsheets</strong></h2>
<p>In total 16 SHACL specifications are currently published in the EPODP, and around 80 are used to validate data migrated from each individual sources. The first step in the specification of each model is the design in a diagram such as the ones visible in the public documentations of the models. The EPODP team is then using spreadsheets to encode the specifications, adapted from the one provided <a href="https://shacl-play.sparna.fr/play/shaclexcel">in the SHACL Play suite</a>. The spreadsheet is converted to SHACL using <a href="https://xls2rdf.sparna.fr/rest/">the xls2rdf converter</a>. <strong>Spreadsheets provide a simple editing solution</strong>, with an easy learning curve, made even easier with a few formulas to compute cell values automatically. It even provides ways for editing advanced patterns (such as the ability to directly turtle lists for sh:or, or blank nodes for property paths), but of course still limits the expressivity. The following screenshot shows how property shapes look like in the spreadsheet:</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2025/04/properties-ELI.png"><img class="aligncenter size-large wp-image-1963" src="https://blog.sparna.fr/wp-content/uploads/2025/04/properties-ELI-1024x442.png" alt="properties-ELI" width="650" height="281" /></a></p>
<h2></h2>
<h2><strong>Results and future perspectives</strong></h2>
<p>The EPODP use-case shows how SHACL can be applied in a systematic way in a data integration and dissemination project : at the data transformation step, at the knowledge graph level, and at the data dissemination. <strong>Public documentation, data validation, data extraction are tasks that can be be automated based on a SHACL specification</strong>. While the context is one of a large public institution, the same approach can be applied in industrial contexts. The SHACL specifications are a cornerstone of such projects, enabling semantic interoperability at large and a mutual understanding between business experts, data analysts, developers, and data consumers.</p>
<p>&nbsp;</p>
<h1>”</h1>
<p>Veronika&rsquo;s book will be divided into three parts :<br class="html-br" /><br class="html-br" />1. Back to Basics<br class="html-br" />Introduction to logic and RDF, brief skimming of the topics. Also covering various world assumptions.</p>
<p>2. Getting to know the stuff<br class="html-br" />Introduction to SHACL, including core, sh-sparql, advanced features.</p>
<p>3. Working with the stuff<br class="html-br" />SHACL Stories. Use cases, user stories and implementations.</p>
<p><em>Image : © European Union, [2024] &#8211; EP</em></p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2025/04/09/european-parliament-open-data-portal-a-shacl-powered-knowledge-graph/">European Parliament Open Data Portal : a SHACL-powered knowledge graph</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/04/09/european-parliament-open-data-portal-a-shacl-powered-knowledge-graph/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nakala : from an RDF dataset to a query UI in minutes &#8211; SHACL automated generation and Sparnatural</title>
		<link>https://blog.sparna.fr/2025/02/06/nakala-from-an-rdf-dataset-to-a-query-ui-in-minutes-shacl-automated-generation-and-sparnatural/</link>
		<comments>https://blog.sparna.fr/2025/02/06/nakala-from-an-rdf-dataset-to-a-query-ui-in-minutes-shacl-automated-generation-and-sparnatural/#comments</comments>
		<pubDate>Thu, 06 Feb 2025 10:38:25 +0000</pubDate>
		<dc:creator><![CDATA[Marie Muller]]></dc:creator>
				<category><![CDATA[Linked Data]]></category>
		<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[Recherche d'informations]]></category>
		<category><![CDATA[SHACL]]></category>
		<category><![CDATA[Sparnatural]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[Visualisation de données]]></category>
		<category><![CDATA[dcterms]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[EDM]]></category>
		<category><![CDATA[endpoint]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">https://blog.sparna.fr/?p=1867</guid>
		<description><![CDATA[<p>Here is a usecase of an automated version of Sparnatural submitted as an example for Veronika Heimsbakk&#8217;s SHACL for the Practitioner upcoming book about the Shapes Constraint Language (SHACL). “ The Sparnatural knowledge graph explorer leverages SHACL specifications to drive a user interface (UI) that allows end users to easily discover the content of an RDF graph. What&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2025/02/06/nakala-from-an-rdf-dataset-to-a-query-ui-in-minutes-shacl-automated-generation-and-sparnatural/">Nakala : from an RDF dataset to a query UI in minutes &#8211; SHACL automated generation and Sparnatural</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Here is a usecase of an automated version of Sparnatural submitted as an example for Veronika Heimsbakk&rsquo;s <em><a href="https://veronahe.wordpress.com/shacl-for-the-practitioner/">SHACL for the Practitioner</a></em> upcoming book about the Shapes Constraint Language (SHACL).</p>
<h1></h1>
<h1>“</h1>
<p>The <a href="https://sparnatural.eu/">Sparnatural knowledge graph explorer</a> leverages SHACL specifications to drive a user interface (UI) that allows end users to easily discover the content of an RDF graph. What is the best way to make this UI-oriented SHACL specification ? if a SHACL specification for the knowledge graph structure already exists, can it be used directly ? does it require customization ? or is the Sparnatural SHACL spec completely decoupled from an existing knowledge graph spec ? and what if no SHACL spec exists at all ?</p>
<p>We faced all these different situations while deploying Sparnatural, and used various approaches to produce a satisfying end-user oriented specification. In particular, <a href="https://www.nakala.fr/">the Nakala repository</a> is one of the latest graph <a href="https://www.nakala.fr/sparnatural/">for which Sparnatural was deployed</a>. Nakala is a data repository that aims to preserve and disseminate data produced by French research projects in the Humanities and Social Sciences, in compliance with the FAIR principles. Nakala is a service offered by <a href="https://www.huma-num.fr/">Huma-Num</a>, a research infrastructure dedicated to the digital humanities. The Nakala knowledge graph contains `dcterms` metadata provided by researchers to describe the resources they upload. Additional non-dcterms metadata can also be provided. The metadata varies in quality and quantity depending on the researcher. When exposed <a href="https://www.nakala.fr/sparql">in a SPARQL endpoint</a>, resources, collections of resources and agents are described using <a href="https://pro.europeana.eu/page/edm-documentation">the Europeana Data Model (EDM)</a>.</p>
<p>As the EDM dissemination channel for Nakala was new, no SHACL specification existed for it. We could have designed one for Sparnatural from scratch, but the choice was make to generate it automatically, with no human intervention. This was for three reasons : ease of configuration, flexibility in maintenance over time, and pedagogical reason, as it was important to explain the structure of the graph to target users.</p>
<h2>Sparnatural UI</h2>
<p>Let&rsquo;s first have a look at what the Sparnatural UI looks like on an example from Nakala:</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2025/02/SHACLNAKALA11.png"><img class="aligncenter size-large wp-image-1883" src="https://blog.sparna.fr/wp-content/uploads/2025/02/SHACLNAKALA11-1024x365.png" alt="SHACLNAKALA1" width="650" height="232" /></a></p>
<p>Once you know that &laquo;&nbsp;ProvidedCHO&nbsp;&raquo; stands for &laquo;&nbsp;Provided Cultural Heritage Object&nbsp;&raquo;, and that &laquo;&nbsp;asWKT&nbsp;&raquo; encodes the location of a Place, you will be able to understand that the query searches for all ProvidedCHO entries gathered into a certain collection (&laquo;&nbsp;Cartes Université Bordeaux Montaigne&nbsp;&raquo; &#8211; a collection of maps), and selects their location and an optional description (and yes, the results of this query are displayed on a map, but that&rsquo;s out of scope).</p>
<h2>SHACL is derived automatically</h2>
<p>In this project we wanted the shortest path from the graph to the query UI. Hence we used <a href="https://shacl-play.sparna.fr/play/generate#documentation">a SHACL generation algorithm, available in SHACL Play</a>. By issuing SPARQL queries on an RDF graph, the algorithm determines the NodeShapes (targeting the classes used as values of `rdf:type`), and PropertyShapes (from all predicates used on instances on each class) of the model, with their node kinds, datatypes, class range, and cardinalities. It generates `sh:or` constraints when multiple datatypes or ranges are found. Note that in the case of Nakala a large variety of ranges are used, since the data comes from very open user inputs : the same `dcterms` property can be either an IRI or a Literal, with varying datatypes.</p>
<p>In addition, the algorithm computes some statistics on the dataset : the number of targets of each NodeShapes, the number of occurrences and the number of distinct values for each property shapes. The statistics are expressed using the `void` vocabulary, and `dcterms:conformsTo` is used to link void partitions to the corresponding shapes.</p>
<p><a href="https://shacl-play.sparna.fr/play/doc">The SHACL Play documentation tool</a> was then used to generate a report of the generated SHACL combined with the statistics. A few errors were spotted in the exported data, and fixed. We also saw that around 70 properties were present only a few times out of 700.000+ ProvidedCHO records. These properties were applied by probably a single or very few researchers when describing their data. It was decided to filter them out to keep the final UI simple, with an extra filtering step : based on statistics, property shapes used less than 0.1% of the number of targets of their node shapes are removed.</p>
<p>Here is a screenshot of the report : the right column shows the number of distinct values, and the column before is the number of total occurrences; we can immediately see that `dct:isReplacedBy` occurs only once, and `dct:isRequiredBy` occurs 81 times. They will be filtered out.</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2025/02/SHACLNAKALA21.png"><img class="aligncenter size-large wp-image-1882" src="https://blog.sparna.fr/wp-content/uploads/2025/02/SHACLNAKALA21-1024x481.png" alt="SHACLNAKALA2" width="650" height="305" /></a></p>
<h2>Sparnatural reads SHACL</h2>
<p>Sparnatural can then read <a href="https://docs.sparnatural.eu/SHACL-based-configuration.html">the SPARQL specification</a>, together with the dataset statistics. When designing a query, value selection widgets for literal properties are determined by looking at the `sh:datatype` constraint (for number, dates, boolean, or map widgets). For IRI properties, statistics are used to distinguish between list and autocomplete widgets. Predicates with less than 500 distinct values will use a dropdown list, and those with more will use an autocomplete search field. The range is determined by reading `sh:class` or `sh:node`. The label to show in dropdown lists or to search on autocomplete field is determined by looking at a `dash:propertyRole = dash:LabelRole` annotation.</p>
<p>How about labels ? Sparnatural can read them from classes and properties of the original OWL file, if provided with it. Otherwise local names of target classes or predicates are used.</p>
<h2>Other configuration techniques</h2>
<p>Other Sparnatural deployments, such as <a href="https://sparnatural.eu/demos/demo-dbpedia-en/">the DBPedia demo</a> are designed in SHACL from scratch, <a href="https://docs.sparnatural.eu/how-to-configure-shacl/How-to-configure-Sparnatural-shacl.html">using spreadsheets</a>. This requires more manual work, but has the advantage of tailoring the UI to exactly what needs to be shown, including user-oriented labels/tooltips/icons, hiding some properties, taking shortcuts or declaring inverses using property paths, etc. In the case of DBPedia, no SHACL spec exists, and deriving it automatically for the entire graph would probably not make a lot of sense, hence the necessity for a manual design.</p>
<p>For other projects we are working on a third configuration technique : a SHACL spec that describes the exact content of the graph is first built. It is used to publish the documentation of the model and to validate the data. A separate shapes file containing a Sparnatural-specific configuration layer is then added on top of it. That layer can hide shapes by applying an `sh:deactivated` annotation on them, can specify the UI widgets to use, add additional `dash:LabelRole` flags, add shortcut or inverse properties, etc.</p>
<p>The 3 configuration paths are shown in the following diagram:</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2025/02/SHACLNAKALA31.png"><img class="aligncenter size-large wp-image-1881" src="https://blog.sparna.fr/wp-content/uploads/2025/02/SHACLNAKALA31-1024x569.png" alt="SHACLNAKALA3" width="650" height="361" /></a></p>
<h2>Your query UI in minutes</h2>
<p>We combined 4 tools (all open-source) : an algorithm to generate a &laquo;&nbsp;profile&nbsp;&raquo; in SHACL of an RDF dataset, a statistical report generator, a SHACL filter based on statistics, and the Sparnatural query UI. The ability to generate the SHACL profile and review it in the report provided a way to understand the structure of the data in a matter of minutes, while hours would have been necessary with SPARQL queries, without a guarantee of completeness. The provision of the query UI was made by dropping the SHACL file and the statistics to Sparnatural, without manual intervention. This shows the pivotal role of SHACL for data quality and model-driven approaches for knowledge graphs projects.</p>
<h1>”</h1>
<p>We look forward to reading Veronika&rsquo;s book, and you ?</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2025/02/06/nakala-from-an-rdf-dataset-to-a-query-ui-in-minutes-shacl-automated-generation-and-sparnatural/">Nakala : from an RDF dataset to a query UI in minutes &#8211; SHACL automated generation and Sparnatural</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/02/06/nakala-from-an-rdf-dataset-to-a-query-ui-in-minutes-shacl-automated-generation-and-sparnatural/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sparnatural SHACL configuration : manual, automated, off-the-shelf</title>
		<link>https://blog.sparna.fr/2025/01/21/sparnatural-shacl-configuration-manual-automated-off-the-shelf/</link>
		<comments>https://blog.sparna.fr/2025/01/21/sparnatural-shacl-configuration-manual-automated-off-the-shelf/#comments</comments>
		<pubDate>Tue, 21 Jan 2025 07:00:35 +0000</pubDate>
		<dc:creator><![CDATA[Thomas Francart]]></dc:creator>
				<category><![CDATA[SHACL]]></category>
		<category><![CDATA[Sparnatural]]></category>
		<category><![CDATA[SPARQL]]></category>

		<guid isPermaLink="false">https://blog.sparna.fr/?p=1844</guid>
		<description><![CDATA[<p>Sparnatural is a knowledge graph visual browser made for end-users. The user is guided in the creation of her graph traversal query by selecting the kind of entities she is searching, how these entities are connected to other entities in the graph, and which properties she would like to have in her result columns. The&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2025/01/21/sparnatural-shacl-configuration-manual-automated-off-the-shelf/">Sparnatural SHACL configuration : manual, automated, off-the-shelf</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><strong><a href="https://sparnatural.eu" target="_blank">Sparnatural</a></strong> is a knowledge graph visual browser made for end-users. The user is guided in the creation of her graph traversal query by selecting the kind of entities she is searching, how these entities are connected to other entities in the graph, and which properties she would like to have in her result columns.</p>
<p>The possible entities, connections and properties that are shown to the user need to be specified to Sparnatural. This configuration is written in a <a href="https://docs.sparnatural.eu/how-to-configure-shacl/How-to-configure-Sparnatural-shacl.html" target="_blank">SHACL specification</a>. This specification encodes both the structure of the knowledge graph (as we want it to be presented to the user), plus some additionnal UI-oriented information, like icons, order of entries, or value selection widgets to use.</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2025/01/sparnatural-dbpedia-2.webm.gif"><img class="aligncenter size-full wp-image-1853" src="https://blog.sparna.fr/wp-content/uploads/2025/01/sparnatural-dbpedia-2.webm.gif" alt="sparnatural-dbpedia-2.webm" /></a></p>
<p>How can the SHACL configuration of Sparnatural be produced ? we faced 3 different situations : either we do it manually, or (semi-)automatically, or with an off-the-shelf specification complemented with manual annotations. We will give you a brief description of each possibility below.</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2025/01/image-20241013221653603.png"><img class="aligncenter wp-image-1845 size-large" src="https://blog.sparna.fr/wp-content/uploads/2025/01/image-20241013221653603-1024x576.png" alt="image-20241013221653603" width="650" height="366" /></a></p>
<h3>Write your SHACL manually (in Excel)</h3>
<p>SHACL has one main disadvantage : there is no widely available, free-to-use SHACL editor to create/edit these specs (while <a href="https://protege.stanford.edu/" target="_blank">Protégé</a>, for example, allows anyone to edit an OWL ontology). To overcome this lack of tool, we are using an Excel-to-SHACL conversion tool, xls2rdf. We (and our users) write the specification in an <a href="https://docs.google.com/spreadsheets/d/1lduSARo-zyL8qxObwPVD4Z2m8iKQpye-" target="_blank">Excel template</a>, that is then turned in SHACL by an API call to <a href="https://xls2rdf.sparna.fr/rest/" target="_blank">xls2rdf</a>. This is what we described in a <a href="https://blog.sparna.fr/2024/10/15/sparnatural-say-it-with-shacl/" target="_blank">previous post</a>.</p>
<p>We have a good documentation on <a href="https://docs.sparnatural.eu/how-to-configure-shacl/How-to-configure-Sparnatural-shacl.html" target="_blank">how to design your Sparnatural documentation in Excel</a>, if you want to try it (but see the <a href="https://docs.sparnatural.eu/hello-sparnatural/Hello-Sparnatural.html" target="_blank">Hello Sparnatural tutorial</a> first to setup your working test page). And we are here to help if you need to ! (ask questions on the <a href="https://github.com/sparna-git/Sparnatural" target="_blank">Github repository</a>).</p>
<p>If you are looking for a general-purpose SHACL Excel template, there is <a href="https://shacl-play.sparna.fr/play/shaclexcel">one in SHACL Play</a>.</p>
<h3>Get your SHACL automatically (statistics included)</h3>
<p>SHACL is machine-readable and also writable, so we can use our <a href="https://shacl-play.sparna.fr/play/generate#documentation">SHACL generation algorithm</a> to produce a SHACL &laquo;&nbsp;profile&nbsp;&raquo; of an RDF dataset. The algorithm sends SPARQL queries to identify all classes and properties, with their range, cardinalities, datatype, etc. This SHACL profile can be fed to Sparnatural directly. With an additionnal bonus : it is also very useful to gather <strong>statistics</strong> of the dataset at this stage. Number of instances of each class, number of occurrences of each property and number of distinct values. Why is it useful ? first because Sparnatural is able to show them in the UI, giving a hint to the user on how many entities of each type exist in the dataset:</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2025/01/Capture-d’écran-du-2025-01-18-15-18-31.png"><img class="aligncenter size-full wp-image-1847" src="https://blog.sparna.fr/wp-content/uploads/2025/01/Capture-d’écran-du-2025-01-18-15-18-31.png" alt="Capture d’écran du 2025-01-18 15-18-31" width="695" height="460" /></a></p>
<p>second because by knowing how many distinct values exist for a given property, Sparnatural can show either a dropdown list (if there are less than 500) or an autocomplete search field (if there are more).</p>
<p>Also, as a side effect, seeing the profile and statistics of your dataset can help you spot errors (<em>&laquo;&nbsp;why does the statistics tells me that this identifier is not always present ? it should be mandatory !&nbsp;&raquo;</em>).</p>
<p>You can also provide the OWL ontology to Sparnatural along with the SHACL specification. Simply pass the 2 files in the configuration of the component. The ontology can be leveraged for 2 things : the hierarchy of classes and properties from the ontology can be used in the Sparnatural UI, and all labels and comments of classes and properties can be read to be displayed in the UI, giving nice defaults if they are not present in the SHACL spec.<br />
This automated SHACL generation was the one used for the <a href="https://www.nakala.fr/sparnatural/">Nakala Sparnatural query interface</a>, and here is how the properties look like, you can see it is organized according to the DublinCore properties hierarchy:</p>
<h3><a href="https://blog.sparna.fr/wp-content/uploads/2025/01/sparnatural-hierarchy.gif"><img class="aligncenter size-full wp-image-1848" src="https://blog.sparna.fr/wp-content/uploads/2025/01/sparnatural-hierarchy.gif" alt="sparnatural-hierarchy" width="640" height="343" /></a>Grab an off-the-shelf SHACL specification</h3>
<p>Some clients do write and publish SHACL specifications. Yes. This is the case for example for the <a href="https://data.europarl.europa.eu/en/developer-corner">European Parliament in their open-data portal</a>. They publish the documentation of their data-model with our <a href="https://shacl-play.sparna.fr/play/doc">SHACL Play documentation generator</a>. The specification existed long before we tried Sparnatural on their data. We simply took their specification, loaded it in Sparnatural and&#8230; voilà ! it worked seamlessly, but to make it nicer we added in a separate file additionnal icons and tooltips information.</p>
<h3>SHACL Synergies</h3>
<p>There is a lot of synergies to find with a SHACL configuration in a model-driven perspective. You can publish the documentation, validate data, power your Sparnatural UI, and generate your API JSON schema from the same specification file. And probably much more &#8211; what would YOU do with a SHACL specification of your knowledge graph ?</p>
<p>&nbsp;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2025/01/21/sparnatural-shacl-configuration-manual-automated-off-the-shelf/">Sparnatural SHACL configuration : manual, automated, off-the-shelf</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/01/21/sparnatural-shacl-configuration-manual-automated-off-the-shelf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sparnatural : say it with SHACL !</title>
		<link>https://blog.sparna.fr/2024/10/15/sparnatural-say-it-with-shacl/</link>
		<comments>https://blog.sparna.fr/2024/10/15/sparnatural-say-it-with-shacl/#comments</comments>
		<pubDate>Tue, 15 Oct 2024 16:02:59 +0000</pubDate>
		<dc:creator><![CDATA[Marie Muller]]></dc:creator>
				<category><![CDATA[SHACL]]></category>
		<category><![CDATA[Sparnatural]]></category>
		<category><![CDATA[DBpedia]]></category>
		<category><![CDATA[endpoint]]></category>
		<category><![CDATA[SPARQL]]></category>

		<guid isPermaLink="false">https://blog.sparna.fr/?p=1800</guid>
		<description><![CDATA[<p>Do you Sparnatural ? If you follow us here, you may be familiar with our most well-known Sparnatural visual query builder. If not, have a look at the website and give us your impressions on it ! To make it short, Sparnatural is a client-side component that allows non-expert users to explore an RDF Knowledge Graph&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2024/10/15/sparnatural-say-it-with-shacl/">Sparnatural : say it with SHACL !</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400;">Do you Sparnatural ? If you follow us here, you may be familiar with our most well-known Sparnatural visual query builder. If not, have a look <a href="https://sparnatural.eu/">at the website</a></span><span style="font-weight: 400;"> and give us your impressions on it !</span></p>
<p><span style="font-weight: 400;">To make it short, Sparnatural is a client-side component that allows non-expert users to explore an RDF Knowledge Graph by building SPARQL queries with little effort.</span><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">Fully configurable &#8211; and </span><span style="font-weight: 400;">customizable</span><span style="font-weight: 400;"> &#8211; it </span><span style="font-weight: 400;">can be plugged to any existing SPARQL endpoint, without additional server required</span><span style="font-weight: 400;"> to adapt to your knowledge graph ontology.</span><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">Innovative and intuitive, it aims at bringing your knowledge graph to your end-users in a visual way that &laquo;&nbsp;gamifies&nbsp;&raquo; the knowledge graph experience.</span><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">Nb : Sparnatural is open source, under a LGPL-3.0 license.</span></p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2024/10/sparnaturaleu.png"><img class="aligncenter size-large wp-image-1808" src="https://blog.sparna.fr/wp-content/uploads/2024/10/sparnaturaleu-1024x521.png" alt="sparnaturaleu" width="650" height="331" /></a></p>
<p><span style="font-weight: 400;">So far, the configuration was made through an OWL ontology&#8230;</span></p>
<p>&nbsp;</p>
<p><strong><em>Sparnatural in SHACL !</em></strong><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">&#8230; until now,</span></p>
<p><em><span style="font-weight: 400;">But </span><span style="font-weight: 400;">the times they are a-changin&rsquo;</span><span style="font-weight: 400;"> &#8230;</span></em></p>
<p><span style="font-weight: 400;">You can now configure Sparnatural starting <a href="https://docs.sparnatural.eu/#31-shacl-configuration">from a SHACL configuration spreadsheet</a> !</span></p>
<p><span style="font-weight: 400;"> </span><span style="font-weight: 400;"> </span></p>
<p><em><strong>SHACL in a nutshell</strong></em><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">Defined by a </span><a href="http://www.w3.org/2014/data-shapes/wiki/Main_Page"><span style="font-weight: 400;">W3C Working Group</span></a><span style="font-weight: 400;">, <a href="https://www.w3.org/TR/shacl/">SHACL, as for « Shapes Constraint Language »</a>,</span><span style="font-weight: 400;"> is </span><span style="font-weight: 400;">« </span><em><span style="font-weight: 400;">a language for validating RDF graphs against a set of conditions. These conditions are provided as shapes and other constructs expressed in the form of an RDF graph.</span></em><span style="font-weight: 400;"> »</span><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">First published in 2017, it has become a widely used standard to :</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">describe structural constraints on data graphs ;</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">validate that data graphs satisfy a set of conditions ;</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">but also build </span><span style="font-weight: 400;">user interface, generate code and integrate data</span><span style="font-weight: 400;"> !</span></li>
</ul>
<p><span style="font-weight: 400;">The latter we will leverage for our brand new Sparnatural SHACL configuration.</span></p>
<p>&nbsp;</p>
<p><em><strong>Yes, in a spreadsheet !</strong></em></p>
<p><span style="font-weight: 400;">SHACL may be quite unfamiliar for our users.</span></p>
<p><span style="font-weight: 400;">A good thing is you don’t need to be a SHACL expert to build your SHACL-shaped Sparnatural configuration.</span></p>
<p><span style="font-weight: 400;">Indeed ! the entire configuration is done <a href="https://github.com/sparna-git/sparnatural.eu/raw/refs/heads/main/demos/demo-dbpedia-en/sparnatural-config.xlsx">via a spreadsheet</a> whose columns correspond to the SHACL model.</span></p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2024/10/configxlsx.png"><img class="aligncenter size-large wp-image-1807" src="https://blog.sparna.fr/wp-content/uploads/2024/10/configxlsx-1024x415.png" alt="configxlsx" width="650" height="263" /></a></p>
<p><span style="font-weight: 400;">Still, you can observe that all the Sparnatural features are here :</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">the nodes &amp; the edges of the knowledge graph, of course ;</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">its labels and literal attributes (different kind of notes) ;</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">but also the Sparnatural search widgets, icons, etc.</span></li>
</ul>
<p>&nbsp;</p>
<p><em><strong>Give it a try !</strong></em><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">Go to</span> <span style="font-weight: 400;">the <a href="https://sparnatural.eu/demos/demo-dbpedia-en/index.html?lang=en">DBpedia Museums demo</a></span><span style="font-weight: 400;"> :</span></p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2024/10/start.png"><img class="aligncenter size-large wp-image-1806" src="https://blog.sparna.fr/wp-content/uploads/2024/10/start-1024x556.png" alt="start" width="650" height="353" /></a></p>
<p>&nbsp;</p>
<p><em><strong>Navigate the graph</strong></em><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">Start with picking up a class from the list and navigate through the properties to another class of the graph, search for a value&#8230;</span></p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2024/10/navigate.png"><img class="aligncenter size-large wp-image-1805" src="https://blog.sparna.fr/wp-content/uploads/2024/10/navigate-1024x768.png" alt="navigate" width="650" height="488" /></a></p>
<p><span style="font-weight: 400;">&#8230; then click on the arrow to launch the query </span>▶️</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2024/10/launch-query.png"><img class="aligncenter size-large wp-image-1804" src="https://blog.sparna.fr/wp-content/uploads/2024/10/launch-query-1024x733.png" alt="launch query" width="650" height="465" /></a></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400;">Click on « </span><i><span style="font-weight: 400;">Toggle SPARQL editor</span></i><span style="font-weight: 400;"> »</span><span style="font-weight: 400;"> below the query builder to display the </span><span style="font-weight: 400;">corresponding SPARQL query :</span></p>
<p><img class="aligncenter size-large wp-image-1803" src="https://blog.sparna.fr/wp-content/uploads/2024/10/SPARQL-1024x1000.png" alt="SPARQL" width="650" height="635" /></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400;">&#8230; no need to say that you can create even more elaborate queries, just by adding new parameters when navigating through the knowledge graph !</span></p>
<p>&nbsp;</p>
<p><em><strong>Sample queries </strong></em></p>
<p><span style="font-weight: 400;">To give you a quick overview of it, you can also try to launch one of the sample queries we added to the demo.</span></p>
<p><span style="font-weight: 400;">On the screenshot below we can observe this one is a quite more complex query, using an optional parameter as we noticed that some values happen to be missing on DBpedia, either for Movements or Artworks&#8230;</span></p>
<p>Can we deduce that 19th-Century French women artists records are rather incomplete in English DBpedia ? <img src="https://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><a href="https://sparnatural.eu/demos/demo-dbpedia-en/index.html?query=XQAAAAJ9BgAAAAAAAABtAYrNc5EUmvX8DWAhQM_bO-RQtw8eLv5AfYUbHEHKg8akAeq81XRpWDKqgPFC6wFYkF9uefA_M1YPtUEFzqfNkOzRoORdqJdSqPunlpPDRtYOdThL-Rrlj29P6MGeLGpCE6d9GUG95msHusjvbvBBcy3M5V6BQh29xB3VKbXXDqKH_thv6xoP64-p5Xtke6piQ_O25w_Puab4_OglI3gIdGC_6WUL91vh_5fgu9FXp38b7j2alfs8tQia6zFJOy8m9sdWC_wpMlXxpZL8PhuceKyNSwN7RmNsX1ogUfiUVlV1GG3CjySXEKxJU_xzrDmAX4Y4nRw2M2kw0SlMQ-cud_iCp-OPwaMy2r95of-gKzQJOXI6sKIa56rWrweIiOIsL6elNaQhGDgVKEFd3fgQxTqz-WRRMaqzLmWbeq0YW7gFLczxOy1lkXLO-8KEpGVCG_5ZINJ2warZKFmrGfBbG6Du2jpBvD9pBnUfs36GmmMKlDxSplRdInD6fL1coq5Gvs2U6qQwMKfGv5YXCIH-nHBHut2GvZsi9-X9__LER9o">We&rsquo;ll let you investigate on this point</a>.</p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2024/10/sample.png"><img class="aligncenter size-large wp-image-1836" src="https://blog.sparna.fr/wp-content/uploads/2024/10/sample-1024x942.png" alt="sample" width="650" height="598" /></a></p>
<p>&nbsp;</p>
<p><em><strong>Multilingual</strong></em><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">It is also possible to translate (and display) your configuration in any language of your choice, so that you can showcase your knowledge graph in different languages &#8211; even if the graph itself does not contain labels or values with this language&#8230;</span><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">Here translated in French :</span></p>
<p><a href="https://blog.sparna.fr/wp-content/uploads/2024/10/multilingual1.png"><img class="aligncenter size-large wp-image-1824" src="https://blog.sparna.fr/wp-content/uploads/2024/10/multilingual1-1024x630.png" alt="multilingual" width="650" height="400" /></a></p>
<p>&nbsp;</p>
<p><em><strong>Fully documented</strong></em><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">This new version of Sparnatural comes with </span><a href="https://docs.sparnatural.eu/"><span style="font-weight: 400;">an extensive documentation of all the features that can be used to date</span></a><span style="font-weight: 400;">, from basic installation to more advanced configuration of the tool.</span></p>
<p><a href="https://docs.sparnatural.eu/hello-sparnatural/Hello-Sparnatural.html"><b><i>Get started with Hello Sparnatural !</i></b></a></p>
<p>&nbsp;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2024/10/15/sparnatural-say-it-with-shacl/">Sparnatural : say it with SHACL !</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/2024/10/15/sparnatural-say-it-with-shacl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2013-2023 : ‘Tis SKOSPlay!’s Birthday !</title>
		<link>https://blog.sparna.fr/2023/03/13/2013-2023-tis-skosplays-birthday/</link>
		<comments>https://blog.sparna.fr/2023/03/13/2013-2023-tis-skosplays-birthday/#comments</comments>
		<pubDate>Mon, 13 Mar 2023 14:28:53 +0000</pubDate>
		<dc:creator><![CDATA[Marie Muller]]></dc:creator>
				<category><![CDATA[Linked Data]]></category>
		<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[SHACL]]></category>
		<category><![CDATA[SHACL Play]]></category>
		<category><![CDATA[SKOS]]></category>
		<category><![CDATA[SKOS Play]]></category>
		<category><![CDATA[Thesaurus]]></category>
		<category><![CDATA[Visualisation de données]]></category>
		<category><![CDATA[ontologie]]></category>
		<category><![CDATA[skos play]]></category>
		<category><![CDATA[thesaurus]]></category>
		<category><![CDATA[web sémantique]]></category>

		<guid isPermaLink="false">http://blog.sparna.fr/?p=1540</guid>
		<description><![CDATA[<p>Hi, it’s Marie (aka chutjetweet here). To be short I’m a documentalist, terminologist, old (linked &#8211; open) data maniac &#38; lil’ onto-Padawan and… just came to join Sparna’s team this early January ! To inaugurate my first article on Sparna’s blog, let’s share a little feedback of mine today about Sparna’s well-known SKOSPlay! whose 10 years’ birthday&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2023/03/13/2013-2023-tis-skosplays-birthday/">2013-2023 : ‘Tis SKOSPlay!’s Birthday !</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400;">Hi, it’s Marie (aka chutjetweet </span><a href="https://twitter.com/chutjetweet"><span style="font-weight: 400;">here</span></a><span style="font-weight: 400;">). To be short I’m a documentalist, terminologist, old (linked &#8211; open) data maniac &amp; lil’ onto-Padawan and… just came to join Sparna’s team this early January !</span></p>
<p><span style="font-weight: 400;">To inaugurate my first article on Sparna’s blog, let’s share a little feedback of mine today about Sparna’s well-known </span><a href="https://skos-play.sparna.fr/play/"><span style="font-weight: 400;">SKOSPlay!</span></a><span style="font-weight: 400;"> whose 10 years’ birthday is to celebrate this year !</span></p>
<p><span style="font-weight: 400;">10 yo, quite a historic tool ! but more than ever actual in a context where the semantic technologies get front of the scene anew due to growing interest shown by the digital humanities movement to data interoperability projects via the standardized knowledge structuration (Wikipedia-Wikidata projects e.g., as semantic wiki devices), and also due to the last progress of artificial intelligence, now able to processing large amount of data and </span><a href="https://www.epimorphics.com/writing-ontologies-with-chatgpt/"><span style="font-weight: 400;">soon fully leveraging the potential of ontologies and knowledge graphs</span></a><span style="font-weight: 400;">.</span></p>
<table>
<tbody>
<tr>
<td><i><span style="font-weight: 400;"><a href="https://twitter.com/taxobob/status/1615594349512851456"><img class="alignnone wp-image-1561 size-full" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image5.png" alt="image5" width="878" height="321" /></a></span></i><em><span style="font-weight: 400;">From asking for a taxonomy </span><a href="https://twitter.com/mommi84/status/1631027355987656706"><span style="font-weight: 400;">to querying RDF files with an API</span></a><span style="font-weight: 400;">…</span></em></td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400;">This said, in a more practical way, semantic web standards are not always easy to manipulate as a professional &#8211; if non-initiate to SPARQL and nor confirmed data scientist, and even when you have got to deal with a simple structured list of terms !</span></p>
<p><span style="font-weight: 400;">Either your data is already SKOS-standardized (great !), there sometimes come to have a gap between normalization step and visualization step that requires a bit more technical IT skills. Either &#8211; most of time &#8211; the common muggle-born is to start with a plain Excel spreadsheet, create a list, add some hierarchy, maybe other scope notes or definitions and&#8230; end far puzzled wondering how to </span><span style="font-weight: 400;">get </span><a href="https://www.w3.org/DesignIssues/diagrams/lod/597992118v2_350x350_Back.jpg"><span style="font-weight: 400;">a 5-star data vocabulary</span></a><span style="font-weight: 400;"> ⭐ !</span></p>
<p>&nbsp;</p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image14.gif"><img class="alignnone size-full wp-image-1577" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image14.gif" alt="image14" width="500" height="208" /></a></p>
<p>&nbsp;</p>
<p><strong>A SKOSPlay!-within-a-SKOSPlay!</strong></p>
<table>
<tbody>
<tr>
<td><a href="https://twitter.com/belett/status/1583128873877008384"><img class="alignnone wp-image-1565 size-full" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image3.png" alt="image3" width="886" height="359" /></a><em><span style="font-weight: 400;">Wink to <a href="https://twitter.com/belett">@belett</a>, anything possible now with SKOSPlay!</span></em></td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400;">Aiming at visualizing (and printing !) SKOS thesauri, taxonomies and vocabularies at the very beginning, SKOSPlay! is a full online free and open source tool leveraging semantic technologies (RDF, SPARQL, inference, Linked Data) to generate downloadable HTML or PDF documents. More and more new features have been added since then : alignments display, OWL and SKOS-XL files processing, autocomplete fields and permuted indexes generating …</span></p>
<table>
<tbody>
<tr>
<td><a href="https://twitter.com/veronikaheim/status/1612375648948846592"><img class="alignnone size-full wp-image-1566" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image7.png" alt="image7" width="884" height="237" /></a><em><span style="font-weight: 400;">Hello <a href="https://twitter.com/veronikaheim">@veronikaheim</a>, maybe SKOSPlay! could match your need ?</span></em></td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400;">… among other nice and useful developments.</span></p>
<p><span style="font-weight: 400;">But as an Excel aficionada, the one that I prefer is </span><a href="https://skos-play.sparna.fr/play/convert?lang=en"><span style="font-weight: 400;">the Excel-to-RDF converter tool</span></a><span style="font-weight: 400;">.</span></p>
<p><span style="font-weight: 400;">One sheet. One import. One result. Easy-peasy, happy terminologist :))</span></p>
<p><span style="font-weight: 400;">(And you can even keep your custom colors templates and formats !!! </span><span style="font-weight: 400;">🦄</span><span style="font-weight: 400;"> )</span></p>
<p>&nbsp;</p>
<p><strong>Come on &amp; let’s SKOSPlay!</strong></p>
<p><span style="font-weight: 400;">Let&rsquo;s figure out you want to display or construct a small vocabulary you could quickly visualize in a standardized SKOS-structured way :</span></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image10-2.png"><img class="alignnone size-full wp-image-1607" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image10-2.png" alt="image10-2" width="1657" height="1079" /></a></p>
<p><span style="font-weight: 400;">Now to fit in the SKOS model your data has to follow </span><a href="https://skos-play.sparna.fr/play/excel_test/excel2skos-exemple-1.xlsx"><span style="font-weight: 400;">a particular template</span></a><span style="font-weight: 400;"> you can fullfill by downloading on SKOSPlay! website.</span></p>
<p><span style="font-weight: 400;">First you have to define </span><a href="https://skos-play.sparna.fr/play/convert#excel-file-structure"><span style="font-weight: 400;">the header of the template</span></a><span style="font-weight: 400;"> : the global scheme of your vocabulary, its URI, title and description :</span></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image12.png"><img class="alignnone size-full wp-image-1575" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image12.png" alt="image12" width="1347" height="189" /></a></p>
<p><span style="font-weight: 400;">Adding the terms of your list (with the URIs)… Here with the “@en” language indication on top of the column </span><a href="https://skos-play.sparna.fr/play/convert#languages"><span style="font-weight: 400;">as I am to create an English-French multilingual vocabulary</span></a><span style="font-weight: 400;"> :</span></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image15.png"><img class="alignnone size-full wp-image-1578" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image15.png" alt="image15" width="1509" height="1021" /></a></p>
<p><span style="font-weight: 400;">Recreating the arborescent structure through the Excel template (don’t mind my color palette, I always like colouring my Excel sheets to better visualize the info at a glance !).</span></p>
<p><span style="font-weight: 400;">The hierarchical broader-narrower structure is to be recreated </span><a href="https://skos-play.sparna.fr/play/convert#sheet-body"><span style="font-weight: 400;">by adding a “skos:narrower” column</span></a><span style="font-weight: 400;"> (or skos:broader, as you want, with only 1 broader value per line) where you will list the different specific values front of the more generic one (separated by comas). Here I used a PREFIX too in order to shorten my http:// URIs, SKOSPlay! can process them anyway !</span></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image9.png"><img class="alignnone size-full wp-image-1572" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image9.png" alt="image9" width="1943" height="1431" /></a></p>
<p><span style="font-weight: 400;">Then adding a few notes and other information (multilingual values, skos:notation, any other default properties known in the converter (</span><a href="https://skos-play.sparna.fr/play/convert#prefixes"><span style="font-weight: 400;">see the documentation</span></a><span style="font-weight: 400;">) or different custom elements of yours by adding other PREFIXes :</span></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image4.png"><img class="alignnone size-full wp-image-1569" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image4.png" alt="image4" width="1999" height="1269" /></a></p>
<p><span style="font-weight: 400;">Your Excel template is ready to go ! quite an easy configuration in my demo here, but SKOSPlay! can also deal with skos:Collections, SKOS-XL and other </span><a href="https://skos-play.sparna.fr/play/convert#advanced-features"><span style="font-weight: 400;">advanced RDF structures</span></a><span style="font-weight: 400;"> : blank nodes, RDF lists, named graphs. And now possible to generate OWL and SHACL files with the converter too !</span></p>
<p><span style="font-weight: 400;">Now it’s time to turn your (finally-not-so-dirty-<img src="https://s.w.org/images/core/emoji/72x72/1f438.png" alt="🐸" class="wp-smiley" style="height: 1em; max-height: 1em;" />) data into a SKOS-charming file. Take your favorite </span><del><span style="font-weight: 400;">magic wand</span></del><span style="font-weight: 400;"> SKOSPlay! </span><a href="https://skos-play.sparna.fr/play/convert"><span style="font-weight: 400;">Excel-to-RDF converter tool</span></a><span style="font-weight: 400;"> and load your Excel file in it (adding some optional parameters if needed).</span></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image8.png"><img class="alignnone size-full wp-image-1571" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image8.png" alt="image8" width="1601" height="885" /></a></p>
<p><span style="font-weight: 400;">Well done, it’s a wonderful RDF-ized vocabulary file (here in a Turtle format but you have also RDF/XML, N-Triples, N-Quads, N3 and TriG available) :</span></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image1.png"><img class="alignnone size-full wp-image-1567" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image1.png" alt="image1" width="1617" height="1029" /></a></p>
<p>&nbsp;</p>
<p><strong>Wingardium Visualiza !</strong></p>
<p>We&rsquo;re almost done. <span style="font-weight: 400;">Go back to the website, </span><a href="https://skos-play.sparna.fr/play/upload"><span style="font-weight: 400;">tab “Play!”</span></a><span style="font-weight: 400;">, load your last RDF-serialized file and go to the next step to chose the kind of display you want to get, endly press (SKOS)Play! and … abracadataaaaaaa !</span></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image2.png"><img class="alignnone size-full wp-image-1568" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image2.png" alt="image2" width="1657" height="1197" /></a></p>
<p><span style="font-weight: 400;">Many different options to visualize your arborescent data. Tree, static and dynamic, but also more « professional » and printable sorts of displays like alphabetical, hierarchical or permuted views :</span></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image6.png"><img class="alignnone size-full wp-image-1570" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image6.png" alt="image6" width="1999" height="1361" /></a></p>
<p><span style="font-weight: 400;">And KWIC (as for « </span><span style="font-weight: 400;">KeyWord In Context ») :</span></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2023/03/image13.png"><img class="alignnone size-full wp-image-1576" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image13.png" alt="image13" width="1999" height="937" /></a></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400;">Even possible to load an online Google spreadsheet (</span><a href="https://docs.google.com/spreadsheets/d/1MpN4tzd7S7m7Dnr7IFOz43YoWcSYqUG1/edit?usp=share_link&amp;ouid=118425122592371390359&amp;rtpof=true&amp;sd=true"><span style="font-weight: 400;">mine is shared here</span></a><span style="font-weight: 400;">), just by adapting a little its URL for the converter’s need. Interesting feature in a collaborative purpose when you are team-building a vocabulary !</span></p>
<p><span style="font-weight: 400;">The whole pack </span><a href="https://skos-play.sparna.fr/play/convert#documentation"><span style="font-weight: 400;">fully documented</span></a><span style="font-weight: 400;"> and findable on Sparna’s </span><a href="https://skos-play.sparna.fr/play/"><span style="font-weight: 400;">website</span></a><span style="font-weight: 400;"> &amp; </span><a href="https://github.com/sparna-git/skos-play"><span style="font-weight: 400;">Git</span></a><span style="font-weight: 400;">. Some recent users even produced a </span><a href="http://blog.sparna.fr/2021/06/30/fair-data-collective-is-doing-cool-things-with-skos-play-and-xls2rdf/"><span style="font-weight: 400;">short video tutorial</span></a><span style="font-weight: 400;"> to show what they managed to do with different SKOSPlay! visualization tools.</span></p>
<p><span style="font-weight: 400;">Already knew about SKOSPlay! ? go see his little brother, </span><a href="https://shacl-play.sparna.fr/play/home;jsessionid=40BBB04DA1F3DCC1EBFB084A08EE2924?lang=en"><span style="font-weight: 400;">SHACLPlay!</span></a><span style="font-weight: 400;"> and feel free to give us some feedback in the comments <img src="https://blog.sparna.fr/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></p>
<p><span style="font-weight: 400;">Happy Birthday SKOSPlay! &amp; Long live Semantic Web !</span></p>
<p><span style="font-weight: 400;">A bit more Vouvray with your nougat de Tours ?</span></p>
<p><a href="https://www.my-loire-valley.com/2018/06/top-10-des-specialites-gourmandes-de-touraine/"><img class="alignnone size-full wp-image-1574" src="http://blog.sparna.fr/wp-content/uploads/2023/03/image11.png" alt="image11" width="1280" height="939" /></a></p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2023/03/13/2013-2023-tis-skosplays-birthday/">2013-2023 : ‘Tis SKOSPlay!’s Birthday !</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/2023/03/13/2013-2023-tis-skosplays-birthday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SHACL Play! free online SHACL validator for RDF data</title>
		<link>https://blog.sparna.fr/2020/03/11/shacl-play-online-shacl-rdf-validator/</link>
		<comments>https://blog.sparna.fr/2020/03/11/shacl-play-online-shacl-rdf-validator/#comments</comments>
		<pubDate>Wed, 11 Mar 2020 14:00:37 +0000</pubDate>
		<dc:creator><![CDATA[Thomas Francart]]></dc:creator>
				<category><![CDATA[SHACL]]></category>
		<category><![CDATA[SHACL Play]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://blog.sparna.fr/?p=1301</guid>
		<description><![CDATA[<p>SHACL Play! at http://shacl-play.sparna.fr/ is a free online RDF validator based on SHACL. It encapsulates TopQuadrant&#8217;s Java SHACL implementation as the actual validation engine. The code of SHACL Play is available on Github. Give the input RDF data to be validated, by uploading an RDF file, pointing to a URL, or copy/pasting inline data; Give the&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2020/03/11/shacl-play-online-shacl-rdf-validator/">SHACL Play! free online SHACL validator for RDF data</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><strong>SHACL Play!</strong> at <strong><a href="http://shacl-play.sparna.fr/">http://shacl-play.sparna.fr/</a></strong> is a free online RDF validator based on <a href="https://www.w3.org/TR/shacl/">SHACL</a>. It encapsulates <a href="https://github.com/TopQuadrant/shacl">TopQuadrant&rsquo;s Java SHACL implementation</a> as the actual validation engine. The code of SHACL Play is <a href="https://github.com/sparna-git/shacl-play">available on Github</a>.</p>
<ol>
<li>Give the input RDF data to be validated, by uploading an RDF file, pointing to a URL, or copy/pasting inline data;</li>
<li>Give the SHACL rules to use for validation, by uploading a file, pointing to a URL, copy/pasting inline data, or selecting the shapes from the catalog (see below);</li>
<li>Validate, and get a human-readable report generated from the <a href="https://www.w3.org/TR/shacl/#validation-report">SHACL raw validation report</a>;</li>
<li>Access to the report in its RDF or CSV variant;</li>
</ol>
<p>Here is a screenshot of how the validation report looks like :</p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2020/03/shacl-play-validation-report.png"><img class="aligncenter size-large wp-image-1305" src="http://blog.sparna.fr/wp-content/uploads/2020/03/shacl-play-validation-report-1024x603.png" alt="shacl-play-validation-report" width="650" height="383" /></a></p>
<p><strong>SHACL Play!</strong> features :</p>
<ol>
<li><strong>Free, no registration required, no limit</strong>;</li>
<li>Easy-to-use <strong>input form</strong>;</li>
<li><strong>Multiple RDF serialisations</strong> supported (Turtle, RDF/XML, n3, TriG);</li>
<li><strong>Versatile input methods</strong> for both RDF data and SHACL rules (upload, URL, copy/paste, catalog);</li>
<li><strong>Human-readable validation report</strong>, for quick analysis of the issues to be fixed in the data (or adjusted in the shapes);</li>
<li><strong>Downloadable validation reports</strong> in CSV or raw RDF;</li>
<li><strong>Asynchronous validation</strong> to avoid timeouts, for large datasets (greater than 100000 triples);</li>
<li><strong>Permalinks</strong> to validation reports when both RDF dataset and SHACL rules are online;</li>
<li><strong>Catalog of online public shapes</strong> for documentation and quick validation (see below);</li>
</ol>
<p>SHACL Play also features a command-line variant (see the <a href="https://github.com/sparna-git/shacl-play/wiki">documentation on the Github wiki</a>).</p>
<p>Future features could include :</p>
<ol>
<li>Improved display of validation report, with possibly different styles of report (depending on the &laquo;&nbsp;styles&nbsp;&raquo; of the Shapes):</li>
<li>Human-readable display of a SHACL graph;</li>
<li>Online data transformation engine based on <a href="https://www.w3.org/TR/shacl-af/">SHACL Rules</a>, with a first focus on converting an OWL ontology to SHACL constraints (see this <a href="https://www.topquadrant.com/from-owl-to-shacl-in-an-automated-way/">excellent description of one possible set of rules to derive SHACL shapes from an OWL ontology</a>, by Irene Polikoff from TopQuadrant);</li>
</ol>
<p>&nbsp;</p>
<h3>The Shapes Catalog</h3>
<p>SHACL Play includes a <a href="http://shacl-play.sparna.fr/catalog">catalog of online Shapes</a>. The catalog is collaboratively editable by modifying the <a href="https://github.com/sparna-git/SHACL-Catalog/blob/master/shacl-catalog.ttl">Shapes Catalog source file on Github</a>, through pull requests.</p>
<p>Adding an entry to the catalog allows to:</p>
<ul>
<li>See the shapes listed in the catalog page;</li>
<li>Get a form to directly validate data against these Shapes, e.g. if you want to validate your Shapes against &laquo;&nbsp;SHACL for SHACL&nbsp;&raquo; you can go to <a href="http://shacl-play.sparna.fr/validate?shapes=shsh">http://shacl-play.sparna.fr/validate?shapes=shsh</a>;</li>
<li>Get a direct permaling to the validation report if the validated RDF data is also online, so there even no need to submit anything through a form to get a validation report. e.g. <a href="http://shacl-play.sparna.fr/validate?shapes=shaclplay-catalog&amp;url=https://raw.githubusercontent.com/sparna-git/SHACL-Catalog/master/shacl-catalog.ttl">http://shacl-play.sparna.fr/validate?shapes=shaclplay-catalog&amp;url=https://raw.githubusercontent.com/sparna-git/SHACL-Catalog/master/shacl-catalog.ttl</a> is the direct link for the validation of the <a href="https://github.com/sparna-git/SHACL-Catalog/blob/master/shacl-catalog.ttl">Shapes Catalog source file</a> against the <a href="http://shacl-play.sparna.fr/resources/shapes/shacl-play-shapes-catalog.ttl">Shapes Catalog SHACL file</a>;</li>
</ul>
<h3>Another SHACL Validator</h3>
<p>Another SHACL validator is the SHACL playground is at <a href="https://shacl.org/playground/">https://shacl.org/playground/</a>. However the UI is too technical for newcomers, and it relies on a Javascript validator in the browser, thus I am not sure it would be capable of validating large Datasets.</p>
<h3>How to edit/create SHACL rules ?</h3>
<p>You need to create your own set of SHACL rules ? You don&rsquo;t have a tool to do that and you don&rsquo;t want to write Turtle file by hand ? One technique I use is to edit them in an Excel spreadsheet that is converted in RDF using <a href="http://labs.sparna.fr/skos-play/convert">SKOS Play Excel 2 RDF converter</a>. Here are 1 example of such a file : <a href="http://openarchaeo.huma-num.fr/federation/resources/shapes/OpenArchaeo-Shapes.xlsx">OpenArchaeo shapes</a> in Excel.</p>
<p>You could start from this template and modify it to create your own Shapes Graph.</p>
<p><strong>Now let&rsquo;s SHACL Play!</strong></p>
<p>&nbsp;</p>
<p><em>Post illustration : &laquo;&nbsp;Calculateur&nbsp;&raquo; Bulletin des sciences mathématiques 1922, found from https://www.bnf.fr/fr/mathematiques-informatique-et-sciences-du-numerique, from Gallica at <a href="https://gallica.bnf.fr/ark:/12148/bpt6k9620547z/f123.item">https://gallica.bnf.fr/ark:/12148/bpt6k9620547z/f123.item</a><br />
</em></p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2020/03/11/shacl-play-online-shacl-rdf-validator/">SHACL Play! free online SHACL validator for RDF data</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/2020/03/11/shacl-play-online-shacl-rdf-validator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
