<?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; talend</title>
	<atom:link href="https://blog.sparna.fr/tag/talend/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>Alimenter Talend avec SPARQL (sur Wikidata)</title>
		<link>https://blog.sparna.fr/2021/03/24/alimenter-talend-avec-sparql-sur-wikidata/</link>
		<comments>https://blog.sparna.fr/2021/03/24/alimenter-talend-avec-sparql-sur-wikidata/#comments</comments>
		<pubDate>Wed, 24 Mar 2021 09:40:55 +0000</pubDate>
		<dc:creator><![CDATA[Thomas Francart]]></dc:creator>
				<category><![CDATA[RDF]]></category>
		<category><![CDATA[Talend]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[talend]]></category>
		<category><![CDATA[wikidata]]></category>

		<guid isPermaLink="false">http://blog.sparna.fr/?p=1409</guid>
		<description><![CDATA[<p>Dans le billet précédent nous avons vu comment Talend pouvait être utilisé pour convertir des données existantes vers du RDF/XML pour alimenter un graphe de connaissances. Ici nous allons voir… exactement l’inverse ! Comment alimenter Talend avec une requête SPARQL ? En d&#8217;autres termes comment votre graphe de connaissances RDF pourra servir d’entrée à un&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2021/03/24/alimenter-talend-avec-sparql-sur-wikidata/">Alimenter Talend avec SPARQL (sur Wikidata)</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Dans le billet précédent nous avons vu <a href="http://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/">comment Talend pouvait être utilisé pour convertir des données existantes vers du RDF/XML</a> pour alimenter un graphe de connaissances. Ici nous allons voir… exactement l’inverse ! <strong>Comment alimenter Talend avec une requête SPARQL</strong> ? En d&rsquo;autres termes <em>comment votre graphe de connaissances RDF pourra servir d’entrée à un traitement de conversion de données pour exporter des données tabulaires, alimenter d’autres bases, ou se combiner avec d’autres flux.</em></p>
<p>Le principe est simple : arriver à <strong>exécuter une requête SPARQL puis traiter les résultats correspondants pour en faire un tableau de données</strong>. Ce tableau de données pourra ensuite être exporté, combiné, enregistré, comme vous le souhaitez.</p>
<p>Pour illustrer cela nous allons interroger <a href="http://wikidata.org"><strong>Wikidata</strong></a> au travers de son <a href="https://query.wikidata.org">service d’interrogation SPARQL</a> en utilisant sa première requête d’exemple qui récupère… les chats !</p>
<p>La requête est la suivante, et voici le <a href="https://query.wikidata.org/#%23Chats%0ASELECT%20%3Fitem%20%3FitemLabel%20%0AWHERE%20%0A%7B%0A%20%20%3Fitem%20wdt%3AP31%20wd%3AQ146.%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22%5BAUTO_LANGUAGE%5D%2Cen%22.%20%7D%0A%7D">lien direct pour l’exécuter dans Wikidata</a> :</p>
<pre><span style="font-size: 10pt;">SELECT ?item ?itemLabel</span>
<span style="font-size: 10pt;">WHERE {</span>
<span style="font-size: 10pt;">  ?item wdt:P31 wd:Q146.</span>
<span style="font-size: 10pt;">  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }</span>
<span style="font-size: 10pt;">}</span>
<span style="font-size: 10pt;">LIMIT 10</span></pre>
<p>Vous pouvez télécharger le job présenté ici dans <a href="https://github.com/sparna-git/talend-rdf-components/tree/main/SPARQL_CSV_test/BUILDERRDF">ce repository Github d’exemple</a>, et l’importer directement dans Talend.</p>
<p>Nous allons utiliser les composants Talend suivant :</p>
<ul>
<li><a href="https://help.talend.com/r/4~rC6oITH8avsLVct2LPSA/9XSS~cm5dHaZcH2mrWSR1w"><strong>tRESTClient</strong></a> envoie des requêtes HTTP à un service REST et retourne les réponses; en effet, un service SPARQL n’est ni plus ni moins qu’une URL où on passe un paramètre “query”, comme spécifié par le <a href="https://www.w3.org/TR/2013/REC-sparql11-protocol-20130321/">protocole SPARQL</a>.</li>
<li><a href="https://help.talend.com/r/AsV4_TX51DXfRElBkPQ4Qw/Pc9RZi6IiWw1Kb~Jf0bE0Q"><strong>tExtractXMLField</strong></a> pour traiter le format XML de réponse SPARQL; en effet, le <a href="https://www.w3.org/TR/2013/REC-rdf-sparql-XMLres-20130321/">format de réponse d’un service SPARQL</a> est lui-aussi standardisé, en XML ou en JSON;</li>
<li><a href="https://help.talend.com/r/atTvdntoupqchAynyb03~Q/cGhZ8PINK8GErF~qZbpprA"><strong>tFileOutputDelimited</strong></a> pour simplement écrire le résultat dans un fichier de sortie.</li>
</ul>
<p style="text-align: left;"><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/1_Flow.png"><img class="size-full wp-image-1410 aligncenter" src="http://blog.sparna.fr/wp-content/uploads/2021/03/1_Flow.png" alt="1_Flow" width="605" height="76" /></a></p>
<h2>Création d’un Job</h2>
<p>Pour commencer, vous devez créer un nouveau job.</p>
<ul>
<li>Faite un clic droit sur <strong>Jobs</strong> dans le panneau de gauche<strong>. </strong>choisissez l’option <strong>Créer un Job</strong>.</li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/2_CréerJob.png"><img class="aligncenter size-medium wp-image-1411" src="http://blog.sparna.fr/wp-content/uploads/2021/03/2_CréerJob-300x195.png" alt="2_CréerJob" width="300" height="195" /></a></p>
<ul>
<li> Remplissez les champs nécessaires de la fenêtre <strong>Nouveau Job</strong> et cliquez sur le bouton finish.</li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/3_ParametrerJob.png"><img class="aligncenter size-medium wp-image-1412" src="http://blog.sparna.fr/wp-content/uploads/2021/03/3_ParametrerJob-300x184.png" alt="3_ParametrerJob" width="300" height="184" /></a></p>
<h2> Appel SPARQL avec tRESTClient</h2>
<ul>
<li>Ajoutez au job le composant <strong>tRESTClient</strong>.</li>
<li>Cliquez deux fois sur le composant <strong>tRESTClient</strong>, allez à la propriété <strong>Paramètres simple</strong> et remplissez les paramètres suivants:</li>
</ul>
<ol>
<ol>
<li><strong>URL</strong>: L’URL du service SPARQL de Wikidata est <strong><a href="https://query.wikidata.org/sparql">https://query.wikidata.org/sparql</a></strong> .</li>
<li><strong>Méthode HTTP</strong>: Choisissez la méthode HTTP <strong>GET</strong></li>
<li><strong>Paramètre de la Requête</strong>: Nous devons ajouter le paramètre “query”, cliquez sur le bouton plus [+], et dans la colonne Nom entrez “query”. Dans la <strong>colonne Valeur</strong> vous allez saisir la requête SPARQL.</li>
</ol>
</ol>
<p><span style="color: #ff0000;"><strong>Attention!</strong></span>  La requête SPARQL est une chaîne de caractères Java, vous devez donc : 1/ L&rsquo;entourer avec des guillemets doubles 2/ ajouter le caractère d’échappement <strong>\</strong> avant les guillemets dans la requête et 3/ écrire la requête sur une seule ligne. Voici la chaîne de caractères correspondante :</p>
<pre><span style="font-size: 10pt;"><span style="font-weight: 400;">“SELECT ?item ?itemLabel WHERE { ?item wdt:P31 wd:Q146. SERVICE wikibase:label { bd:serviceParam wikibase:language </span><b>\</b><span style="font-weight: 400;">"[AUTO_LANGUAGE],en</span><b>\</b><span style="font-weight: 400;">". } } LIMIT 10”</span></span></pre>
<p>&nbsp;</p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/4_ParametrerComponentSource.png"><img class="aligncenter size-large wp-image-1413" src="http://blog.sparna.fr/wp-content/uploads/2021/03/4_ParametrerComponentSource-1024x430.png" alt="4_ParametrerComponentSource" width="650" height="273" /></a><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/4_ParametrerComponentSource.png"><br />
</a></p>
<h2>Transformation des résultats SPARQL avec tExtractXMLField</h2>
<ul>
<li>Ajoutez dans le projet un composant <strong>tExtractXMLField</strong>.</li>
<li>Connectez le composant tRESTClient au tExtractXMLField.</li>
</ul>
<p>Nous allons paramétrer le tExtractXMLField :</p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/5_tExtractXMLField_Colonne.png"><img class="aligncenter size-large wp-image-1414" src="http://blog.sparna.fr/wp-content/uploads/2021/03/5_tExtractXMLField_Colonne-1024x408.png" alt="5_tExtractXMLField_Colonne" width="650" height="259" /></a></p>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">Cliquez sur le bouton <strong>Modifier le schéma</strong> pour ouvrir la fenêtre des colonnes d&rsquo;entrée et sortie du composant <strong>tExtractXMLField</strong>. </span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Ajoutez deux nouvelles colonnes <strong>Uri </strong>et <strong>Label </strong>de <strong>type String</strong> avec le bouton <strong>plus [+] </strong>et cliquez sur le bouton Ok. <a href="http://blog.sparna.fr/wp-content/uploads/2021/03/6_tExtractXMLField_Colonne_sortie.png"><img class="aligncenter size-large wp-image-1415" src="http://blog.sparna.fr/wp-content/uploads/2021/03/6_tExtractXMLField_Colonne_sortie-1024x408.png" alt="6_tExtractXMLField_Colonne_sortie" width="650" height="259" /></a></span></li>
<li style="font-weight: 400;">Allez à <strong>Paramètres simple</strong> et modifiez les options suivantes:</li>
</ol>
<ul>
<li><strong>Champ XML</strong>: Choisissez le champs “<strong>body”</strong>, qui est le champ qui contient la réponse à l’appel SPARQL du composant précédent;</li>
<li><strong>Requête XPath boucle</strong>: Saisissez &laquo;&nbsp;/sparql/results/result&nbsp;&raquo; qui est d’après la spec du format de résultat SPARQL le chemin vers chaque <strong>ligne de résultats</strong> dans la réponse.</li>
<li>La table <strong>Mapping</strong> : <em>c’est ici que tout se joue !!! ce mapping va vous permettre d’associer les colonnes de votre résultat SPARQL au champs de sortie du composant, par le biais de chemins XPath</em>:
<ol>
<li>Pour la colonne <strong>Uri</strong> la valeur de la colonne Requête Xpath sera <strong>&laquo;&nbsp;binding[@name=&rsquo;item&rsquo;]/uri&nbsp;&raquo;</strong></li>
<li>pour la colonne <strong>Label</strong> la valeur de la colonne Requête Xpath sera <strong>&laquo;&nbsp;binding[@name=&rsquo;itemLabel&rsquo;]/literal&nbsp;&raquo;</strong>.</li>
<li>Si la requête SPARQL retournait plus de colonnes, il faudrait ajouter ici les mappings correspondants pour alimenter les autres colonnes du résultat.</li>
</ol>
</li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/7_tExtractXMLField_Component.png"><img class="aligncenter size-large wp-image-1416" src="http://blog.sparna.fr/wp-content/uploads/2021/03/7_tExtractXMLField_Component-1024x297.png" alt="7_tExtractXMLField_Component" width="650" height="189" /></a></p>
<h2> Génération du fichier de sortie</h2>
<ul>
<li>Ajoutez le composant de sortie <strong>tFileOutputDelimited</strong>.</li>
<li>Connectez le composant <strong>tExtractXMLField </strong>au composant <strong>tFileOutputDelimited</strong>.</li>
<li>Paramétrez le composant dans la section de <strong>Paramètres simple</strong> → <strong>Nom de fichier</strong>: le chemin dans lequel vous souhaitez sauvegarder le fichier de sortie.</li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/8_tFileOutputDelimited.png"><img class="aligncenter size-large wp-image-1417" src="http://blog.sparna.fr/wp-content/uploads/2021/03/8_tFileOutputDelimited-1024x175.png" alt="8_tFileOutputDelimited" width="650" height="111" /></a></p>
<h2> Lancer le Job</h2>
<ul>
<li>Allez à la section <strong>Exécuter</strong>.</li>
<li>Cliquez sur le bouton <strong>Exécuter.</strong></li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/9_LancerJob.png"><img class="aligncenter size-large wp-image-1418" src="http://blog.sparna.fr/wp-content/uploads/2021/03/9_LancerJob-1024x222.png" alt="9_LancerJob" width="650" height="141" /></a></p>
<h2> Profitez !</h2>
<p>Naviguez vers l’emplacement du fichier pour le récupérer.</p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/10_RouteFile.png"><img class="aligncenter size-large wp-image-1419" src="http://blog.sparna.fr/wp-content/uploads/2021/03/10_RouteFile-1024x439.png" alt="10_RouteFile" width="650" height="279" /></a></p>
<p><strong>Et voilà le résultat :</strong></p>
<p>&nbsp;</p>
<pre><span style="font-size: 10pt;">Uri;Label</span>
<span style="font-size: 10pt;"> http://www.wikidata.org/entity/Q378619;CC</span>
<span style="font-size: 10pt;"> http://www.wikidata.org/entity/Q498787;Muezza</span>
<span style="font-size: 10pt;"> http://www.wikidata.org/entity/Q677525;Orangey</span>
<span style="font-size: 10pt;"> http://www.wikidata.org/entity/Q851190;Mrs. Chippy</span>
<span style="font-size: 10pt;"> http://www.wikidata.org/entity/Q1050083;Catmando</span>
<span style="font-size: 10pt;"> http://www.wikidata.org/entity/Q1201902;Tama</span>
<span style="font-size: 10pt;"> http://www.wikidata.org/entity/Q1207136;Dewey Readmore Books</span>
<span style="font-size: 10pt;"> http://www.wikidata.org/entity/Q1371145;Socks</span>
<span style="font-size: 10pt;"> http://www.wikidata.org/entity/Q1386318;F. D. C. Willard</span>
<span style="font-size: 10pt;"> http://www.wikidata.org/entity/Q1413628;Nora</span></pre>
<p>Vous savez donc maintenant <strong>comment alimenter Talend à partir d’une base accessible en SPARQL, en quelques clics et sans code</strong> ! Cela permet de valoriser votre graphe de connaissances pour l’intégrer dans le reste du système d’information.</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2021/03/24/alimenter-talend-avec-sparql-sur-wikidata/">Alimenter Talend avec SPARQL (sur Wikidata)</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/2021/03/24/alimenter-talend-avec-sparql-sur-wikidata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Générer du RDF avec Talend (un tutorial)</title>
		<link>https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/</link>
		<comments>https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/#comments</comments>
		<pubDate>Wed, 17 Mar 2021 17:42:32 +0000</pubDate>
		<dc:creator><![CDATA[Thomas Francart]]></dc:creator>
				<category><![CDATA[Talend]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[rdf/xml]]></category>
		<category><![CDATA[talend]]></category>

		<guid isPermaLink="false">http://blog.sparna.fr/?p=1352</guid>
		<description><![CDATA[<p>Talend Open Studio est un outil d’ETL, open-source et avec une version gratuite, utilisé pour récupérer des données d’une ou plusieurs bases, ou flux, les transformer, et alimenter d’autres bases, ou générer des rapports. On le rencontre parfois en lien avec des projets de graphes de connaissances RDF, sans toutefois l’avoir jamais réellement mis en&#8230;</p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/">Générer du RDF avec Talend (un tutorial)</a> est apparu en premier sur <a rel="nofollow" href="https://blog.sparna.fr">Sparna Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><a href="https://www.talend.com/fr/products/talend-open-studio/"><strong>Talend Open Studio</strong></a> est un outil d’ETL, open-source et avec une version gratuite, utilisé pour récupérer des données d’une ou plusieurs bases, ou flux, les transformer, et alimenter d’autres bases, ou générer des rapports.</p>
<p>On le rencontre parfois en lien avec des projets de graphes de connaissances RDF, sans toutefois l’avoir jamais réellement mis en œuvre. Nous vous proposons ici d’explorer <strong><u>comment Talend peut être utilisé pour convertir des données CSV en RDF</u></strong> (RDF/XML plus précisément), tout cela uniquement avec des <strong>composants graphiques et sans écrire de code</strong>. C’est là un des gros avantages de l’approche : l’agencement de composants graphiques, de façon (relativement) simple, permet le paramétrage de <em>jobs</em> de conversion par des profils qui ne sont pas des développeurs.</p>
<p>Le code source du Job Talend pour produire du RDF que nous vous proposons de suivre ici peut être <a href="https://github.com/sparna-git/talend-rdf-components/tree/main/RDFXML/BUILDERRDF">téléchargé depuis ce repository Github</a> pour être importé dans Talend.</p>
<p>Les projets de mise en place de <strong>graphes de connaissances</strong> nécessitent en effet invariablement de la <strong>conversion de données</strong> vers du RDF pour alimenter le graphe. Ces conversions peuvent être faites :</p>
<ul>
<li>de façon <strong>massive et une seule fois</strong> (reprise intégrale d’une source de données pour basculer dans le graphe)</li>
<li>de façon <strong>massive et répétées plusieurs fois</strong> (synchronisation périodique d’une source de données avec le graphe, pour maintenir les deux en synchro, mais sans temps réel)</li>
<li>de façon <strong>unitaire au fil de l’eau</strong> (synchronisation des enregistrements un par un, à chaque modification dans les données source, pour maintenir les données source et le graphe synchronisés en temps réel ou quasi temps-réel)</li>
</ul>
<p>Il y a de nombreuses techniques de conversion des données source pour alimenter le graphe, on citera :</p>
<ul>
<li>les <strong>feuilles de style XSLT</strong> pour traiter du XML (pour moi la “voie royale”), à l’expressivité quasi sans limite et aux performances excellentes (technique utilisée dans le développement du <a href="https://github.com/ArchivesNationalesFR/rico-converter">convertisseur Records in Context</a> par exemple);</li>
<li>L’ajout d’entêtes de <strong>@context </strong><a href="https://json-ld.org/"><strong>JSON-LD</strong></a> sur des flux JSON, pour que le flux JSON soit interprétable directement comme du RDF;</li>
<li>L’écriture de <strong>scripts</strong> custom, bien sûr, Python, Java, etc.</li>
<li>L’utilisation d’outils de <strong>mapping de base relationnelles</strong> basés sur <a href="https://www.w3.org/TR/r2rml/">R2RML</a> comme <a href="https://ontop-vkg.org/">OnTop</a>;</li>
<li>L’utilisation de la nouvelle <a href="https://graphdb.ontotext.com/documentation/free/loading-data-using-ontorefine.html">interface de mapping RDF de </a><a href="https://graphdb.ontotext.com/documentation/free/loading-data-using-ontorefine.html"><strong>GraphDB</strong></a>, comme une extension d’OpenRefine (il faudra qu&rsquo;on en reparle);</li>
<li>L’utilisation du <a href="https://skos-play.sparna.fr/play/convert">convertisseur Excel vers RDF</a> de <strong>SKOS Play</strong>, lorsque les données source sont saisies à la main dans des tableurs (on fait plein de choses avec ça, y compris créer des <a href="https://www.w3.org/TR/shacl/">règles SHACL</a>);</li>
</ul>
<p>Et donc, en plus de tout cela, nous pouvons maintenant ajouter <strong>Talend</strong> à la panoplie des techniques possibles de production de graphes RDF !</p>
<h2>Installez Talend et paramétrez un Job avec 3 composants</h2>
<p>Pour suivre l’exemple de job de conversion proposé ici, <a href="https://www.talend.com/fr/products/talend-open-studio/">téléchargez et installez Talend Open Studio For Data Integration</a>.</p>
<p>Le job d’exemple que nous allons paramétrer utilise les composants suivants :</p>
<ul>
<li>Un composant <a href="https://help.talend.com/r/q23BCE3W4MjloHD1RvMJ4A/1UUiC6QzuUN4eQE4niDz4w"><strong>tFixedFlowInput</strong></a> pour lire (ici, générer) les données d’entrée.</li>
<li>Un composant <a href="https://help.talend.com/r/ZndcSsDNtKg8FpNIRCdjag/lsGcvH5xX62VBCkwJGS~wA"><strong>tMap</strong></a> pour transformer les données et en particulier générer tout ce qui est nécessaire pour produire le RDF, en particulier les URIs des sujets et des objets.</li>
<li>Un composant <a href="https://help.talend.com/r/yfVJmc99tpfXkmHYCvG8pw/i_YvOl2oUaVpW1UTnJao_g"><strong>tAdvancedFileOutputXML</strong></a> pour créer le fichier RDF/XML de sortie.</li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/1.png"><img class="aligncenter size-large wp-image-1353" src="http://blog.sparna.fr/wp-content/uploads/2021/03/1-1024x146.png" alt="1" width="650" height="93" /></a></p>
<p>Créez un nouveau Job Talend, et à partir de la palette de composants sur la droite de l’écran, ajoutez les 3 composants dans votre job.</p>
<h2>Configurer les données d’entrée</h2>
<p>Nous allons configurer des données d’entrée d’exemple, type CSV, avec 3 colonnes qui décrivent des personnes : ID, Prénom et Nom.</p>
<ol>
<li>Dans l&rsquo;espace de travail, sélectionnez le <strong>tFixedFlowInput_1</strong> .</li>
<li>Cliquez sur la vue Component pour paramétrer ses propriétés de base dans l&rsquo;onglet Basic settings.</li>
<li>Cliquez sur le bouton <strong>[&#8230;]</strong> à côté du champ <strong>Edit Schema</strong> pour décrire la structure des données que vous souhaitez à partir des variables internes. Dans ce scénario, le schéma est constitué de trois colonnes : <em>ID</em>, <em>first</em> et <em>last</em>, toutes de type <strong>String</strong>.</li>
<li>Cliquez sur <b>OK</b> pour fermer la boîte de dialogue.</li>
<li><span style="font-weight: 400;"> Dans les propriétés Basic settings du composant </span><b>tFixedFlowInput 1 </b><span style="font-weight: 400;">sélectionnez</span><span style="font-weight: 400;"><span style="font-weight: 400;"> “Use Inline Content (delimited file)”. Dans le champ contenu, ajoutez les informations:  </span></span><br />
<code><br />
1;John;Doe<br />
2;Rutherford;McKinley<br />
3;Marc;Van Buren<br />
4;Theodore;Roosevelt<br />
5;John;Truman<br />
</code><img class=" size-large wp-image-1356 aligncenter" src="http://blog.sparna.fr/wp-content/uploads/2021/03/schema_source_donnees-1024x339.png" alt="schema_source_donnees" width="650" height="215" /></li>
<li></li>
<li>Connectez le composant <strong>tFixedFlowInput_1</strong>  au <strong>tMAP_1</strong> avec le bouton gauche de la souris. Choisir l’option Row &gt; Main et connectez au composant <strong>tMAP</strong>.</li>
</ol>
<p>&nbsp;</p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/Connection1.png"><img class="aligncenter size-large wp-image-1358" src="http://blog.sparna.fr/wp-content/uploads/2021/03/Connection1-1024x200.png" alt="Connection1" width="650" height="127" /></a></p>
<h2></h2>
<h2><b>Mapper les données pour générer des URIs (et le reste)</b></h2>
<p style="text-align: justify;">La seconde étape consiste à produire tout ce dont on a besoin pour générer le RDF, en particulier <strong>générer les URI des ressources</strong>. Nous allons donc générer une URI pour chaque personne à partir de son ID.</p>
<ol>
<li style="text-align: justify;">Configurez le composant <strong>tMAP_1</strong>.</li>
</ol>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Éditez le composant avec l’option éditeur de mapping. Cette option ouvrira une fenêtre séparée.   </span></li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_Editeur.png"><br />
</a><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_Editeur.png"><img class="aligncenter size-large wp-image-1359" src="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_Editeur-1024x433.png" alt="tMap_Editeur" width="650" height="275" /></a></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_Schema.png"><img class="aligncenter size-large wp-image-1362" src="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_Schema-1024x424.png" alt="tMap_Schema" width="650" height="269" /></a></p>
<ul>
<li style="font-weight: 400;">Ajoutez une table de sortie avec le bouton <strong>plus [+] </strong>et donner un nom : <strong>out1</strong>.</li>
<li style="font-weight: 400;">Ajoutez les colonnes dans la section correspondante comme affiché dans l’image ci-dessous : en sortie nous allons produire une colonne “URI” à la place de “ID”, et les colonnes “First” et “Last” restent les même.</li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_OutputColonne.png"><img class="aligncenter wp-image-1361 size-medium" src="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_OutputColonne-300x93.png" alt="tMap_OutputColonne" width="300" height="93" /></a></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Glissez chaque colonne d&rsquo;entrée à la table de sortie :</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">First va sur First</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Last va sur Last</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">et ID va vers URI</span></li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Nous allons <strong>transformer la colonne ID pour générer l’URI</strong>, en utilisant une expression de concaténation <strong>&laquo;&nbsp;http://sparna.fr/dataset/persons/person_&nbsp;&raquo;+row1.ID.toString()</strong>. Pour cela, dans le champs “Expression” de la colonne “URI, copiez/collez l’expression de concaténation &laquo;&nbsp;<a href="http://sparna.fr/dataset/persons/person_%22+row1.ID.toString()">http://sparna.fr/dataset/persons/person_&nbsp;&raquo;+row1.ID.toString()</a>. Vous pouvez également cliquer sur le bouton “constructeur d’expression” pour ouvrir une fenêtre dédiée où vous pourrez saisir l’expression.  </span></li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_StructureOutput.png"><img class="aligncenter size-large wp-image-1363" src="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_StructureOutput-1024x402.png" alt="tMap_StructureOutput" width="650" height="255" /></a></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_Expression.png"><img class="aligncenter size-large wp-image-1360" src="http://blog.sparna.fr/wp-content/uploads/2021/03/tMap_Expression-1024x408.png" alt="tMap_Expression" width="650" height="259" /></a></p>
<p>&nbsp;</p>
<ul>
<li>Cliquez sur <strong>OK</strong>pour valider et revenir à l&rsquo;espace de modélisation.</li>
<li>Reliez le composant <strong>tMap_1</strong> au composant <strong>tAdvancedFileOutputXML_1</strong></li>
</ul>
<p>&nbsp;</p>
<h2><b>Configurer la sortie RDF/XML</b></h2>
<p>&nbsp;</p>
<p>Une fois que toutes les informations nécessaires à la génération du RDF (en particulier les URIs) ont été produites, on peut mapper les différentes informations vers la structure d’un fichier RDF/XML de sortie.</p>
<ol>
<li>Nous allons définir l’arbre XML dans le composant <strong>tAdvancedFileOutputXML_1</strong>.</li>
<li>Double-cliquez sur le composant <strong>tAdvancedFileOutputXML_1</strong> pour ouvrir l&rsquo;interface dédiée ou cliquez sur le bouton <strong>[&#8230;]</strong> du champ <strong>Configure Xml Tree</strong> de l&rsquo;onglet <strong>Basic settings </strong>dans la vue <strong>Component</strong>.</li>
<li>Dans la section Linked Target (cible du lien),  définissez la structure XML comme sortie.
<ul>
<li>Cliquez sur la ligne  <strong>rootTag </strong>et renommer par <strong>rdf:RDF.<a href="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_Racine.png"><img class="aligncenter size-large wp-image-1371" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_Racine-1024x147.png" alt="RDFXML_Racine" width="650" height="93" /></a></strong></li>
<li>Cliquez sur le bouton <strong>plus [+]</strong> et ajoutez une ligne de type namespace avec son prefix <strong>rdf</strong> et son namespace “http://www.w3.org/1999/02/22-rdf-syntax-ns#”.
<ul>
<li><strong>Etape 1:<img class="aligncenter size-large wp-image-1368" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_NameSpace-1024x306.png" alt="RDFXML_NameSpace" width="650" height="194" /></strong></li>
<li><b>Étape 2</b>: Choisissez l’option<b> create as name space</b>.<img class="aligncenter wp-image-1369 size-medium" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_NameSpace_Option-300x199.png" alt="RDFXML_NameSpace_Option" width="300" height="199" /></li>
<li> <b>Étape 3:</b> Tapez le prefix et le Namespace.</li>
</ul>
</li>
</ul>
</li>
</ol>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_NameSpace_Prefix_Namespace.png"><img class="aligncenter wp-image-1370 size-medium" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_NameSpace_Prefix_Namespace-300x154.png" alt="RDFXML_NameSpace_Prefix_Namespace" width="300" height="154" /></a></p>
<ul>
<li>Ajoutez autre namespace comment les pas précédents. et avec le prefix <strong>foaf</strong> et le namespace “<a href="http://xmlns.com/foaf/0.1/">http://xmlns.com/foaf/0.1/</a>”.</li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Choisissez la ligne racine (rdf:RDF) et  Créer une sous élément qui doit s&rsquo;appelle <strong>foaf:Person</strong> et cliquez sur le bouton OK.  </span></li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_SousElement.png"><img class="aligncenter wp-image-1372 size-medium" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_SousElement-300x199.png" alt="RDFXML_SousElement" width="300" height="199" /></a></p>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_SousElement_libelle.png"><img class="aligncenter wp-image-1373 size-medium" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_SousElement_libelle-300x104.png" alt="RDFXML_SousElement_libelle" width="300" height="104" /></a></p>
<ul>
<li style="font-weight: 400;">Cliquez sur la ligne <strong>foaf:Person</strong> et créer un attribut <strong>rdf:about</strong> et cliquez sur le bouton OK.</li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_attribut.png"><img class="aligncenter wp-image-1364 size-medium" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_attribut-300x199.png" alt="RDFXML_attribut" width="300" height="199" /></a><br />
<a href="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_attribut_libelle.png"><img class="aligncenter wp-image-1365 size-medium" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_attribut_libelle-300x104.png" alt="RDFXML_attribut_libelle" width="300" height="104" /></a></p>
<p>&nbsp;</p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Cliquez sur la ligne <strong>foaf:Person</strong> et ajoutez les sous éléments <strong>foaf:firstName et foaf:lastName</strong>. </span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Pour connecter les sources avec la structure, glissez chaque champ source  avec le champ cible.  URI → @rdf:about et immédiatement s&rsquo;afficher une  fenêtre où nous devons choisir l’option <strong>Add linker to target node</strong>. </span></li>
</ul>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_Linker.png"><img class="aligncenter wp-image-1367 size-medium" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_Linker-300x194.png" alt="RDFXML_Linker" width="300" height="194" /></a><br />
<a href="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_Structure_final.png"><img class="aligncenter size-full wp-image-1374" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_Structure_final.png" alt="RDFXML_Structure_final" width="922" height="265" /></a></p>
<p>&nbsp;</p>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">Cliquez sur le bouton OK pour confirmer.</span></li>
</ol>
<p>&nbsp;</p>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">Dans le Basic Settings du composant <strong>tAdvancedFileOutputXML_1</strong>, entrez le chemin de sauvegarde du fichier XML de sortie.</span></li>
</ol>
<p style="text-align: center;"><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_Composant1.png"><img class="aligncenter size-large wp-image-1375" src="http://blog.sparna.fr/wp-content/uploads/2021/03/RDFXML_Composant1-1024x245.png" alt="RDFXML_Composant" width="650" height="156" /></a></p>
<h2><b>Lancer notre Job.</b></h2>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">Aller à la section <strong>Exécuter</strong>.</span></li>
<li style="font-weight: 400;">Cliquez sur le bouton<b> <strong>Exécuter</strong>.</b></li>
</ol>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/Job_Executer.png"><img class="aligncenter size-large wp-image-1376" src="http://blog.sparna.fr/wp-content/uploads/2021/03/Job_Executer-1024x719.png" alt="Job_Executer" width="650" height="456" /></a></p>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">Le résultat final est la création du fichier RDF/XML, qui est stocké à l’endroit configuré.</span></li>
</ol>
<p><a href="http://blog.sparna.fr/wp-content/uploads/2021/03/Job_FileOutput.png"><img class="aligncenter size-large wp-image-1377" src="http://blog.sparna.fr/wp-content/uploads/2021/03/Job_FileOutput-1024x291.png" alt="Job_FileOutput" width="650" height="185" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Et voilà un magnifique fichier RDF/XML, produit à partir de CSV, en quelques clics et avec des composants graphiques</strong> ! Pas belle la vie ?</p>
<pre>&lt;rdf:RDF 
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"&gt;
   
    &lt;foaf:Person rdf:about="http://sparna.fr/dataset/persons/person_1"&gt;
        &lt;foaf:firstName&gt;Theodore&lt;/foaf:firstName&gt;
        &lt;foaf:lastName&gt;Roosevelt&lt;/foaf:lastName&gt;
    &lt;/foaf:Person&gt;
    &lt;foaf:Person rdf:about="http://sparna.fr/dataset/persons/person_2"&gt;
        &lt;foaf:firstName&gt;Ulysses&lt;/foaf:firstName&gt;
        &lt;foaf:lastName&gt;Clinton&lt;/foaf:lastName&gt;
    &lt;/foaf:Person&gt;
    &lt;foaf:Person rdf:about="http://sparna.fr/dataset/persons/person_3"&gt;
        &lt;foaf:firstName&gt;John&lt;/foaf:firstName&gt;
        &lt;foaf:lastName&gt;Truman&lt;/foaf:lastName&gt;
    &lt;/foaf:Person&gt;
    &lt;foaf:Person rdf:about="http://sparna.fr/dataset/persons/person_4"&gt;
        &lt;foaf:firstName&gt;Chester&lt;/foaf:firstName&gt;
        &lt;foaf:lastName&gt;Van Buren&lt;/foaf:lastName&gt;
    &lt;/foaf:Person&gt;
    &lt;foaf:Person rdf:about="http://sparna.fr/dataset/persons/person_5"&gt;
        &lt;foaf:firstName&gt;Rutherford&lt;/foaf:firstName&gt;
        &lt;foaf:lastName&gt;McKinley&lt;/foaf:lastName&gt;
    &lt;/foaf:Person&gt;
&lt;/rdf:RDF&gt;
</pre>
<p>&nbsp;</p>
<p><em>Crédit illustration : <a href="https://www.talend.com/">Talend</a> et <a href="https://www.w3.org/TR/rdf11-primer/">RDF</a></em></p>
<p>Cet article <a rel="nofollow" href="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/">Générer du RDF avec Talend (un tutorial)</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/2021/03/17/rdf-talend-tutorial/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
