CINXE.COM
Générer du RDF avec Talend (un tutorial) - Sparna Blog
<!DOCTYPE html> <html lang="fr-FR" prefix="og: http://ogp.me/ns#"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Générer du RDF avec Talend (un tutorial) - Sparna Blog</title> <link rel="pingback" href="https://blog.sparna.fr/xmlrpc.php"> <!--[if lt IE 9]> <script src="https://blog.sparna.fr/wp-content/themes/wpex-luxmag/js/plugins/html5.js"></script> <![endif]--> <!-- This site is optimized with the Yoast WordPress SEO plugin v2.2.1 - https://yoast.com/wordpress/plugins/seo/ --> <link rel="canonical" href="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/" /> <meta property="og:locale" content="fr_FR" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Générer du RDF avec Talend (un tutorial) - Sparna Blog" /> <meta property="og:description" content="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…" /> <meta property="og:url" content="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/" /> <meta property="og:site_name" content="Sparna Blog" /> <meta property="article:tag" content="ETL" /> <meta property="article:tag" content="RDF" /> <meta property="article:tag" content="rdf/xml" /> <meta property="article:tag" content="talend" /> <meta property="article:section" content="Talend" /> <meta property="article:published_time" content="2021-03-17T18:42:32+00:00" /> <meta property="article:modified_time" content="2021-03-24T10:42:37+00:00" /> <meta property="og:updated_time" content="2021-03-24T10:42:37+00:00" /> <meta property="og:image" content="https://blog.sparna.fr/wp-content/uploads/2021/03/TalendRDF-e1616002923943.png" /> <meta name="twitter:card" content="summary"/> <meta name="twitter:description" content="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…"/> <meta name="twitter:title" content="Générer du RDF avec Talend (un tutorial) - Sparna Blog"/> <meta name="twitter:domain" content="Sparna Blog"/> <meta name="twitter:image:src" content="https://blog.sparna.fr/wp-content/uploads/2021/03/TalendRDF-e1616002923943.png"/> <!-- / Yoast WordPress SEO plugin. --> <link rel="alternate" type="application/rss+xml" title="Sparna Blog » Flux" href="https://blog.sparna.fr/feed/" /> <link rel="alternate" type="application/rss+xml" title="Sparna Blog » Flux des commentaires" href="https://blog.sparna.fr/comments/feed/" /> <link rel="alternate" type="application/rss+xml" title="Sparna Blog » Générer du RDF avec Talend (un tutorial) Flux des commentaires" href="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/feed/" /> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/72x72\/","ext":".png","source":{"concatemoji":"https:\/\/blog.sparna.fr\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.2.38"}}; !function(e,n,t){var a;function o(e){var t=n.createElement("canvas"),a=t.getContext&&t.getContext("2d");return!(!a||!a.fillText)&&(a.textBaseline="top",a.font="600 32px Arial","flag"===e?(a.fillText(String.fromCharCode(55356,56812,55356,56807),0,0),3e3<t.toDataURL().length):(a.fillText(String.fromCharCode(55357,56835),0,0),0!==a.getImageData(16,16,1,1).data[0]))}function i(e){var t=n.createElement("script");t.src=e,t.type="text/javascript",n.getElementsByTagName("head")[0].appendChild(t)}t.supports={simple:o("simple"),flag:o("flag")},t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.simple&&t.supports.flag||(a=function(){t.readyCallback()},n.addEventListener?(n.addEventListener("DOMContentLoaded",a,!1),e.addEventListener("load",a,!1)):(e.attachEvent("onload",a),n.attachEvent("onreadystatechange",function(){"complete"===n.readyState&&t.readyCallback()})),(a=t.source||{}).concatemoji?i(a.concatemoji):a.wpemoji&&a.twemoji&&(i(a.twemoji),i(a.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='symple_shortcode_styles-css' href='https://blog.sparna.fr/wp-content/plugins/symple-shortcodes/shortcodes/css/symple_shortcodes_styles.css?ver=4.2.38' type='text/css' media='all' /> <link rel='stylesheet' id='wpex-style-css' href='https://blog.sparna.fr/wp-content/themes/wpex-luxmag/style.css?ver=4.2.38' type='text/css' media='all' /> <link rel='stylesheet' id='wpex-google-font-source-sans-pro-css' href='http://fonts.googleapis.com/css?family=Source+Sans+Pro%3A300%2C400%2C600%2C700&subset=latin%2Cvietnamese%2Clatin-ext&ver=4.2.38' type='text/css' media='all' /> <link rel='stylesheet' id='jetpack_social_media_icons_widget-css' href='https://blog.sparna.fr/wp-content/plugins/jetpack/modules/widgets/social-media-icons/style.css?ver=20150602' type='text/css' media='all' /> <link rel='stylesheet' id='genericons-css' href='https://blog.sparna.fr/wp-content/plugins/jetpack/_inc/genericons/genericons/genericons.css?ver=3.1' type='text/css' media='all' /> <link rel='stylesheet' id='jetpack_css-css' href='https://blog.sparna.fr/wp-content/plugins/jetpack/css/jetpack.css?ver=3.6.4' type='text/css' media='all' /> <script type='text/javascript' src='https://blog.sparna.fr/wp-includes/js/jquery/jquery.js?ver=1.11.2'></script> <script type='text/javascript' src='https://blog.sparna.fr/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blog.sparna.fr/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://blog.sparna.fr/wp-includes/wlwmanifest.xml" /> <link rel='shortlink' href='https://wp.me/p55RD1-lO' /> <style type='text/css'>img#wpstats{display:none}</style><!-- Theme Customizer Styling Options --> <style type="text/css"> #header-wrap{ padding-top:0 !important; }#header-wrap{ padding-bottom:0 !important; }.author-badge{ color:#ffffff !important; } </style><style type="text/css" id="custom-background-css"> body.custom-background { background-color: #f9f9f9; } </style> <style id="custom-css-css">body{font-size:16px}</style> </head> <body class="single single-post postid-1352 single-format-standard custom-background symple-shortcodes symple-shortcodes-responsive wpex-theme responsive default-skin right-sidebar entry-columns-3 with-sidebar"> <div id="wrap" class="clr"> <div id="header-wrap" class="clr"> <header id="header" class="site-header clr container" role="banner"> <div class="site-branding clr"> <div id="logo" class="clr"> <a href="https://blog.sparna.fr" title="Sparna Blog" rel="home"><img src="http://blog.sparna.fr/wp-content/uploads/2015/04/header2.jpg" alt="Sparna Blog" /></a> </div><!-- #logo --> <div id="blog-description" class="clr"> Web de données | Architecture de l'information | Accès aux connaissances </div><!-- #blog-description --> </div><!-- .site-branding --> <div class="site-social clr"><a href="https://fr.linkedin.com/in/thomasfrancart" title="LinkedIn" target="_blank"><i class="fa fa-linkedin"></i></a><a href="http://blog.sparna.fr/feed" title="RSS" target="_blank"><i class="fa fa-rss"></i></a></div> </header><!-- #header --> </div><!-- #header-wrap --> <div id="site-navigation-wrap" class="clr "> <div id="site-navigation-inner" class="clr"> <nav id="site-navigation" class="navigation main-navigation clr container" role="navigation"> <a href="#mobile-nav" class="navigation-toggle"><span class="fa fa-bars navigation-toggle-icon"></span><span class="navigation-toggle-text">Click here to navigate</span></a> <div class="menu-menu-container"><ul id="menu-menu" class="main-nav dropdown-menu sf-menu"><li id="menu-item-1009" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1009"><a href="http://blog.sparna.fr">Accueil</a></li> <li id="menu-item-1008" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown menu-item-1008"><a href="#">Thèmes</a> <ul class="sub-menu"> <li id="menu-item-1002" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1002"><a href="https://blog.sparna.fr/category/theme/linked-data/">Linked Data</a></li> <li id="menu-item-1004" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1004"><a href="https://blog.sparna.fr/category/theme/opendata/">Open Data</a></li> <li id="menu-item-1003" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1003"><a href="https://blog.sparna.fr/category/theme/ontologies-theme/">Ontologies</a></li> <li id="menu-item-1005" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1005"><a href="https://blog.sparna.fr/category/theme/recherche-informations/">Recherche d’informations</a></li> <li id="menu-item-1006" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1006"><a href="https://blog.sparna.fr/category/theme/thesaurus-theme/">Thesaurus</a></li> <li id="menu-item-1007" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1007"><a href="https://blog.sparna.fr/category/theme/visualisation-de-donnees/">Visualisation de données</a></li> </ul> </li> <li id="menu-item-1019" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown menu-item-1019"><a href="#">Outils</a> <ul class="sub-menu"> <li id="menu-item-1013" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1013"><a href="https://blog.sparna.fr/category/outils/triplestores/">Triplestores</a></li> <li id="menu-item-1010" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1010"><a href="https://blog.sparna.fr/category/outils/editeurs/">Editeurs</a></li> <li id="menu-item-1011" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1011"><a href="https://blog.sparna.fr/category/outils/moteurs-de-recherche/">Moteurs de recherche</a></li> <li id="menu-item-1012" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1012"><a href="https://blog.sparna.fr/category/outils/skos-play-outils/">SKOS Play</a></li> </ul> </li> <li id="menu-item-1020" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown menu-item-1020"><a href="#">Technologies</a> <ul class="sub-menu"> <li id="menu-item-1015" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1015"><a href="https://blog.sparna.fr/category/technologie/rdf/">RDF</a></li> <li id="menu-item-1018" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1018"><a href="https://blog.sparna.fr/category/technologie/sparql-technologies/">SPARQL</a></li> <li id="menu-item-1014" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1014"><a href="https://blog.sparna.fr/category/technologie/owl/">OWL</a></li> <li id="menu-item-1017" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1017"><a href="https://blog.sparna.fr/category/technologie/skos-technologies/">SKOS</a></li> <li id="menu-item-1016" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1016"><a href="https://blog.sparna.fr/category/technologie/schema-org-technologies/">Schema.org</a></li> </ul> </li> <li id="menu-item-1024" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown menu-item-1024"><a href="#">Autres</a> <ul class="sub-menu"> <li id="menu-item-1023" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1023"><a href="https://blog.sparna.fr/category/projets/">Projets</a></li> <li id="menu-item-1022" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1022"><a href="https://blog.sparna.fr/category/evenements/">Evénements</a></li> <li id="menu-item-1021" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1021"><a href="https://blog.sparna.fr/category/et/">Et…</a></li> </ul> </li> <li id="menu-item-1025" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1025"><a href="http://sparna.fr">sparna.fr</a></li> </ul></div> <a href="#" class="header-search-icon" title="Search"> <span class="fa fa-search"></span> </a><!-- .header-search-icon --> </nav><!-- #site-navigation --> </div><!-- #site-navigation-inner --> </div><!-- #site-navigation-wrap --> <div class="site-main-wrap clr"> <div id="main" class="site-main clr container"> <div class="search-overlay clr"> <form method="get" id="searchform" class="overlay-searchform" action="https://blog.sparna.fr/" role="search"> <input type="search" class="field" name="s" id="s" value="To search type and hit enter" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" autocomplete="off" /> </form> </div><!-- .search-overlay --> <div id="primary" class="content-area clr"> <div id="content" class="site-content left-content boxed-content clr" role="main"> <article class="single-post-article clr"> <div class="single-post-media clr"> <div class="post-thumbnail"> <img src="https://blog.sparna.fr/wp-content/uploads/2021/03/TalendRDF-e1616002923943-650x450.png" alt="Générer du RDF avec Talend (un tutorial)" width="650" height="450" /> </div><!-- .post-thumbnail --> </div><!-- .single-post-media --> <header class="post-header clr"> <div class="post-meta clr"> <div class="post-meta-date"> <span class="fa fa-clock-o"></span>17 mars 2021 </div> <div class="post-meta-author"> <span class="fa fa-user"></span><a href="https://blog.sparna.fr/author/thomas/" title="Articles par Thomas Francart" rel="author">Thomas Francart</a> </div> <div class="post-meta-category"> <span class="fa fa-folder"></span><a href="https://blog.sparna.fr/category/outils/talend/">Talend</a> </div> <div class="post-meta-comments"> <span class="fa fa-comments"></span><a href="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/#comments">Un commentaire <span class="screen-reader-text"> sur Générer du RDF avec Talend (un tutorial)</span></a> </div> </div><!-- .post-meta --> <h1 class="post-header-title">Générer du RDF avec Talend (un tutorial)</h1> </header><!-- .page-header --> <div class="entry clr"> <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’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’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’onglet Basic settings.</li> <li>Cliquez sur le bouton <strong>[…]</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 > Main et connectez au composant <strong>tMAP</strong>.</li> </ol> <p> </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’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> </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>« http://sparna.fr/dataset/persons/person_ »+row1.ID.toString()</strong>. Pour cela, dans le champs “Expression” de la colonne “URI, copiez/collez l’expression de concaténation « <a href="http://sparna.fr/dataset/persons/person_%22+row1.ID.toString()">http://sparna.fr/dataset/persons/person_ »+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> </p> <ul> <li>Cliquez sur <strong>OK</strong>pour valider et revenir à l’espace de modélisation.</li> <li>Reliez le composant <strong>tMap_1</strong> au composant <strong>tAdvancedFileOutputXML_1</strong></li> </ul> <p> </p> <h2><b>Configurer la sortie RDF/XML</b></h2> <p> </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’interface dédiée ou cliquez sur le bouton <strong>[…]</strong> du champ <strong>Configure Xml Tree</strong> de l’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’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> </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’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> </p> <ol> <li style="font-weight: 400;"><span style="font-weight: 400;">Cliquez sur le bouton OK pour confirmer.</span></li> </ol> <p> </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> </p> <p> </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><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/"> <foaf:Person rdf:about="http://sparna.fr/dataset/persons/person_1"> <foaf:firstName>Theodore</foaf:firstName> <foaf:lastName>Roosevelt</foaf:lastName> </foaf:Person> <foaf:Person rdf:about="http://sparna.fr/dataset/persons/person_2"> <foaf:firstName>Ulysses</foaf:firstName> <foaf:lastName>Clinton</foaf:lastName> </foaf:Person> <foaf:Person rdf:about="http://sparna.fr/dataset/persons/person_3"> <foaf:firstName>John</foaf:firstName> <foaf:lastName>Truman</foaf:lastName> </foaf:Person> <foaf:Person rdf:about="http://sparna.fr/dataset/persons/person_4"> <foaf:firstName>Chester</foaf:firstName> <foaf:lastName>Van Buren</foaf:lastName> </foaf:Person> <foaf:Person rdf:about="http://sparna.fr/dataset/persons/person_5"> <foaf:firstName>Rutherford</foaf:firstName> <foaf:lastName>McKinley</foaf:lastName> </foaf:Person> </rdf:RDF> </pre> <p> </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> <div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Partager :</h3><div class="sd-content"><ul><li class="share-linkedin"><a rel="nofollow" data-shared="sharing-linkedin-1352" class="share-linkedin sd-button share-icon no-text" href="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/?share=linkedin" target="_blank" title="Cliquez pour partager sur LinkedIn"><span></span><span class="sharing-screen-reader-text">Cliquez pour partager sur LinkedIn(ouvre dans une nouvelle fenêtre)</span></a></li><li class="share-twitter"><a rel="nofollow" data-shared="sharing-twitter-1352" class="share-twitter sd-button share-icon no-text" href="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/?share=twitter" target="_blank" title="Partager sur Twitter"><span></span><span class="sharing-screen-reader-text">Partager sur Twitter(ouvre dans une nouvelle fenêtre)</span></a></li><li class="share-facebook"><a rel="nofollow" data-shared="sharing-facebook-1352" class="share-facebook sd-button share-icon no-text" href="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/?share=facebook" target="_blank" title="Partager sur Facebook"><span></span><span class="sharing-screen-reader-text">Partager sur Facebook(ouvre dans une nouvelle fenêtre)</span></a></li><li class="share-google-plus-1"><a rel="nofollow" data-shared="sharing-google-1352" class="share-google-plus-1 sd-button share-icon no-text" href="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/?share=google-plus-1" target="_blank" title="Cliquez pour partager sur Google+"><span></span><span class="sharing-screen-reader-text">Cliquez pour partager sur Google+(ouvre dans une nouvelle fenêtre)</span></a></li><li class="share-end"></li></ul></div></div></div> <div class="post-tags"><span class="strong">Post Tagged:</span> <a href="https://blog.sparna.fr/tag/etl/" rel="tag">ETL</a>, <a href="https://blog.sparna.fr/tag/rdf/" rel="tag">RDF</a>, <a href="https://blog.sparna.fr/tag/rdfxml/" rel="tag">rdf/xml</a>, <a href="https://blog.sparna.fr/tag/talend/" rel="tag">talend</a></div> <div class="single-post-pagination clr"> <div class="post-next"><strong>Next Post:</strong> <a href="https://blog.sparna.fr/2020/11/14/semweb-pro-2020-videos-jeudi-1911-et-2611/" rel="prev">semweb.pro 2020 : vidéos en ligne et 2 après-midi de rencontres (virtuelles) les jeudi 19/11 et 26/11</a></div> <div class="post-prev"><strong>Previous Post:</strong> <a href="https://blog.sparna.fr/2021/03/24/alimenter-talend-avec-sparql-sur-wikidata/" rel="next">Alimenter Talend avec SPARQL (sur Wikidata)</a></div> </div><!-- .post-post-pagination --> </div><!-- .entry --> </article> <section class="related-posts clr"> <div class="related-posts-title"><span class="fa fa-pencil"></span>Related Posts</div> <article class="related-entry"> <div class="related-entry-media clr"> <div class="related-entry-thumbnail"> <a href="https://blog.sparna.fr/2021/03/24/alimenter-talend-avec-sparql-sur-wikidata/" title="Alimenter Talend avec SPARQL (sur Wikidata)"> <img src="https://blog.sparna.fr/wp-content/uploads/2021/03/11_Presentation-650x450.png" alt="Alimenter Talend avec SPARQL (sur Wikidata)" width="650" height="450" /> <span class="overlay"></span> </a> </div><!-- .related-entry-thumbnail --> </div><!-- .related-entry-media --> <div class="related-entry-content clr"> <div class="related-entry-title"><a href="https://blog.sparna.fr/2021/03/24/alimenter-talend-avec-sparql-sur-wikidata/" title="Alimenter Talend avec SPARQL (sur Wikidata)">Alimenter Talend avec SPARQL (sur Wikidata)</a></div> <div class="related-entry-excerpt entry clr"> Dans le billet précédent nous avons vu comment Talend pouvait… </div><!-- .related-entry-excerpt --> </div><!-- .related-entry-content --> </article><!-- .related-entry --> </section> <div id="comments" class="comments-area clr"> <div class="comments-title"> <span class="fa fa-comments"></span> There is 1 comment for this article </div> <div class="comments-inner clr"> <ol class="commentlist"> <li id="li-comment-35659"> <article id="comment-35659" class="comment even thread-even depth-1 clr"> <div class="comment-author vcard"> <img alt='' src='https://2.gravatar.com/avatar/b9cdc7ce4f54eca0fa6579d9db30ec11?s=45&d=identicon&r=g' srcset='https://2.gravatar.com/avatar/b9cdc7ce4f54eca0fa6579d9db30ec11?s=90&d=identicon&r=g 2x' class='avatar avatar-45 photo' height='45' width='45' /> </div><!-- .comment-author --> <div class="comment-details clr"> <header class="comment-meta"> <cite class="fn"> <a href='https://www.mnemotix.com' rel='external nofollow' class='url'>Nicolas</a> </cite> <span class="comment-date"> <a href="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/#comment-35659"><time datetime="2023-06-06T13:00:56+00:00">6 juin 2023</time></a> at 13 h 00 min </span><!-- .comment-date --> </header><!-- .comment-meta --> <div class="comment-content entry clr"> <p>Merci Thomas pour ce tuto, c’est pile ce que je cherchais <img src="https://blog.sparna.fr/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> </div><!-- .comment-content --> <div class="reply comment-reply-link"> <a class='comment-reply-link' href='/2021/03/17/rdf-talend-tutorial/?replytocom=35659#respond' onclick='return addComment.moveForm( "comment-35659", "35659", "respond", "1352" )' aria-label='Répondre à Nicolas'>Reply to this message</a> </div><!-- .reply --> </div><!-- .comment-details --> </article><!-- #comment-## --> </li><!-- #comment-## --> </ol><!-- .commentlist --> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">Laisser un commentaire <small><a rel="nofollow" id="cancel-comment-reply-link" href="/2021/03/17/rdf-talend-tutorial/#respond" style="display:none;"><i class="fa fa-times"></i>Cancel comment reply</a></small></h3> <form action="https://blog.sparna.fr/wp-comments-post.php" method="post" id="commentform" class="comment-form"> <p class="comment-notes"><span id="email-notes">Votre adresse de messagerie ne sera pas publiée.</span> Les champs obligatoires sont indiqués avec <span class="required">*</span></p> <div class="col span_1_of_3 col-1"><input id="author" name="author" type="text" placeholder="Name*" value="" size="30" aria-required='true' /></div> <div class="col span_1_of_3"><input id="email" name="email" type="text" placeholder="Email*" value="" size="30" aria-required='true' /></div> <div class="col span_1_of_3"><input id="url" name="url" type="text" placeholder="Website" value="" size="30" /></div> <p class="comment-form-comment"><label for="comment">Commentaire</label> <textarea id="comment" name="comment" cols="45" rows="8" aria-describedby="form-allowed-tags" aria-required="true" required="required"></textarea></p> <p class="form-allowed-tags" id="form-allowed-tags">Vous pouvez utiliser ces balises et attributs <abbr title="HyperText Markup Language">HTML</abbr> : <code><a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> </code></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Laisser un commentaire" /> <input type='hidden' name='comment_post_ID' value='1352' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="f47a4a5852" /></p><p class="comment-subscription-form"><input type="checkbox" name="subscribe_comments" id="subscribe_comments" value="subscribe" style="width: auto; -moz-appearance: checkbox; -webkit-appearance: checkbox;" /> <label class="subscribe-label" id="subscribe-label" for="subscribe_comments">Prévenez-moi de tous les nouveaux commentaires par e-mail.</label></p><p class="comment-subscription-form"><input type="checkbox" name="subscribe_blog" id="subscribe_blog" value="subscribe" style="width: auto; -moz-appearance: checkbox; -webkit-appearance: checkbox;" /> <label class="subscribe-label" id="subscribe-blog-label" for="subscribe_blog">Prévenez-moi de tous les nouveaux articles par email.</label></p><p style="display: none;"><input type="hidden" id="ak_js" name="ak_js" value="110"/></p> </form> </div><!-- #respond --> </div><!-- .comments-inner --> </div><!-- #comments --> </div><!-- #content --> <aside id="secondary" class="sidebar-container" role="complementary"> <div class="sidebar-inner"> <div class="widget-area"> <div class="sidebar-widget widget_wpex_recent_posts_thumb clr"><span class="widget-title">Derniers articles</span> <ul class="wpex-widget-recent-posts clr"> <li class="clr wpex-widget-recent-posts-li left-thumbnail format- count-3" > <a href="https://blog.sparna.fr/2024/10/15/sparnatural-say-it-with-shacl/" title="Sparnatural : say it with SHACL !" class="wpex-widget-recent-posts-thumbnail clr"> <img src="https://blog.sparna.fr/wp-content/uploads/2024/10/navigate-55x55.png" alt="Sparnatural : say it with SHACL !" width="55" height="55" /> </a> <div class="clr"></div> <a href="https://blog.sparna.fr/2024/10/15/sparnatural-say-it-with-shacl/" title="Sparnatural : say it with SHACL !" class="wpex-widget-recent-posts-title">Sparnatural : say it with SHACL !</a> </li> <li class="clr wpex-widget-recent-posts-li left-thumbnail format- count-3" > <a href="https://blog.sparna.fr/2024/01/15/cordis-a-sparql-endpoint-is-born/" title="CORDIS : a SPARQL endpoint is born !" class="wpex-widget-recent-posts-thumbnail clr"> <img src="https://blog.sparna.fr/wp-content/uploads/2024/01/person-holding-bengal-light-hand_23-2147955677-55x55.jpg" alt="CORDIS : a SPARQL endpoint is born !" width="55" height="55" /> </a> <div class="clr"></div> <a href="https://blog.sparna.fr/2024/01/15/cordis-a-sparql-endpoint-is-born/" title="CORDIS : a SPARQL endpoint is born !" class="wpex-widget-recent-posts-title">CORDIS : a SPARQL endpoint is born !</a> </li> <li class="clr wpex-widget-recent-posts-li left-thumbnail format- count-3" > <a href="https://blog.sparna.fr/2023/03/13/2013-2023-tis-skosplays-birthday/" title="2013-2023 : ‘Tis SKOSPlay!’s Birthday !" class="wpex-widget-recent-posts-thumbnail clr"> <img src="https://blog.sparna.fr/wp-content/uploads/2023/03/SKOSPlayBDay-55x55.jpg" alt="2013-2023 : ‘Tis SKOSPlay!’s Birthday !" width="55" height="55" /> </a> <div class="clr"></div> <a href="https://blog.sparna.fr/2023/03/13/2013-2023-tis-skosplays-birthday/" title="2013-2023 : ‘Tis SKOSPlay!’s Birthday !" class="wpex-widget-recent-posts-title">2013-2023 : ‘Tis SKOSPlay!’s Birthday !</a> </li> </ul> </div><div class="sidebar-widget widget_wpex_recent_comments_avatars_widget clr"><span class="widget-title">Derniers commentaires</span> <ul class="wpex-recent-comments-widget clr"> <li class="clr"> <a href="https://blog.sparna.fr/2013/12/07/ontologie-thesaurus-taxonomie-web-de-donnees/#comment-44170" title="Générer du RDF avec Talend (un tutorial)" class="clr"> <img alt='' src='https://1.gravatar.com/avatar/d34d02d390b703a3345c70b3d4d97910?s=55&d=identicon&r=g' srcset='https://1.gravatar.com/avatar/d34d02d390b703a3345c70b3d4d97910?s=110&d=identicon&r=g 2x' class='avatar avatar-55 photo' height='55' width='55' /> <span class="title strong">Nicolas:</span> bonjour Rachid, je vous invite à lire "La survie des…... </a> </li> <li class="clr"> <a href="https://blog.sparna.fr/2013/12/07/ontologie-thesaurus-taxonomie-web-de-donnees/#comment-44169" title="Générer du RDF avec Talend (un tutorial)" class="clr"> <img alt='' src='https://1.gravatar.com/avatar/d34d02d390b703a3345c70b3d4d97910?s=55&d=identicon&r=g' srcset='https://1.gravatar.com/avatar/d34d02d390b703a3345c70b3d4d97910?s=110&d=identicon&r=g 2x' class='avatar avatar-55 photo' height='55' width='55' /> <span class="title strong">Nicolas:</span> Votre article est éclairant. merci!! Mais encore... "La Taxonomie n'est…... </a> </li> <li class="clr"> <a href="https://blog.sparna.fr/2024/01/15/cordis-a-sparql-endpoint-is-born/#comment-38753" title="Générer du RDF avec Talend (un tutorial)" class="clr"> <img alt='' src='https://2.gravatar.com/avatar/8adc53424babfab9191c11759c20c30e?s=55&d=identicon&r=g' srcset='https://2.gravatar.com/avatar/8adc53424babfab9191c11759c20c30e?s=110&d=identicon&r=g 2x' class='avatar avatar-55 photo' height='55' width='55' /> <span class="title strong">Marie Muller:</span> Thank you Vladimir for your comment ! I've seen there…... </a> </li> </ul> </div><div class="sidebar-widget jetpack_subscription_widget clr"><span class="widget-title">Abonnez-vous à ce blog par e-mail.</span> <form action="#" method="post" accept-charset="utf-8" id="subscribe-blog-blog_subscription-2"> <div id="subscribe-text"><p>Saisissez votre adresse e-mail pour vous abonner à ce blog et recevoir une notification de chaque nouvel article par email.</p> </div> <p id="subscribe-email"> <label id="jetpack-subscribe-label" for="subscribe-field"> Adresse e-mail </label> <input type="email" name="email" required="required" class="required" value="" id="subscribe-field-blog_subscription-2" placeholder="Adresse e-mail" /> </p> <p id="subscribe-submit"> <input type="hidden" name="action" value="subscribe" /> <input type="hidden" name="source" value="https://blog.sparna.fr/2021/03/17/rdf-talend-tutorial/" /> <input type="hidden" name="sub-type" value="widget" /> <input type="hidden" name="redirect_fragment" value="blog_subscription-2" /> <input type="submit" value="S'abonner" name="jetpack_subscriptions_widget" /> </p> </form> <script> /* Custom functionality for safari and IE */ (function( d ) { // Creates placeholders for IE if ( ( 'placeholder' in d.createElement( 'input' ) ) ) { var label = d.getElementById( 'jetpack-subscribe-label' ); label.style.clip = 'rect(1px, 1px, 1px, 1px)'; label.style.position = 'absolute'; label.style.height = '1px'; label.style.width = '1px'; label.style.overflow = 'hidden'; } // Make sure the email value is filled in before allowing submit var form = d.getElementById('subscribe-blog-blog_subscription-2'), input = d.getElementById('subscribe-field-blog_subscription-2'), handler = function( event ) { if ( '' === input.value ) { input.focus(); if ( event.preventDefault ){ event.preventDefault(); } return false; } }; if ( window.addEventListener ) { form.addEventListener( 'submit', handler, false ); } else { form.attachEvent( 'onsubmit', handler ); } })( document ); </script> </div><div class="sidebar-widget widget_wpcom_social_media_icons_widget clr"><ul><li><a title="Voir le profil de thomasfrancart sur LinkedIn" href="https://www.linkedin.com/in/thomasfrancart/" class="genericon genericon-linkedin-alt" target="_blank"><span class="screen-reader-text">Voir le profil de thomasfrancart sur LinkedIn</span></a></li><li><a title="Voir le profil de tfrancart sur GitHub" href="https://github.com/tfrancart/" class="genericon genericon-github" target="_blank"><span class="screen-reader-text">Voir le profil de tfrancart sur GitHub</span></a></li></ul></div> </div> </div> </aside><!-- #secondary --> </div><!-- #primary --> </div><!--.site-main --> </div><!-- .site-main-wrap --> </div><!-- #wrap --> <footer id="footer-wrap" class="site-footer clr"> <div id="footer-bottom" class="clr"> <div class="container clr"> <div id="copyright" class="clr" role="contentinfo"> Copyright 2014 Your Company LLC </div><!-- #copyright --> </div><!-- .container --> </div><!-- #footer-bottom --> </footer><!-- #footer-wrap --> <div style="display:none"> <div class="grofile-hash-map-b9cdc7ce4f54eca0fa6579d9db30ec11"> </div> <div class="grofile-hash-map-d34d02d390b703a3345c70b3d4d97910"> </div> <div class="grofile-hash-map-8adc53424babfab9191c11759c20c30e"> </div> </div> <div id="mobile-search"> <form method="get" action="https://blog.sparna.fr/" role="search" id="mobile-search-form"> <input type="search" class="field" name="s" value="" placeholder="To search type and hit enter" /> </form> </div> <a href="#" class="site-scroll-top"><span class="fa fa-arrow-up"></span></a> <script type="text/javascript"> window.WPCOM_sharing_counts = {"https:\/\/blog.sparna.fr\/2021\/03\/17\/rdf-talend-tutorial\/":1352}; window.WPCOM_jetpack = true; window.WPCOM_site_ID = 75279471; </script> <script type="text/javascript"> var windowOpen; jQuery(document).on( 'ready post-load', function(){ jQuery( 'a.share-linkedin' ).on( 'click', function() { if ( 'undefined' !== typeof windowOpen ){ // If there's another sharing window open, close it. windowOpen.close(); } windowOpen = window.open( jQuery(this).attr( 'href' ), 'wpcomlinkedin', 'menubar=1,resizable=1,width=580,height=450' ); return false; }); }); </script> <script type="text/javascript"> var windowOpen; jQuery(document).on( 'ready post-load', function(){ jQuery( 'a.share-twitter' ).on( 'click', function() { if ( 'undefined' !== typeof windowOpen ){ // If there's another sharing window open, close it. windowOpen.close(); } windowOpen = window.open( jQuery(this).attr( 'href' ), 'wpcomtwitter', 'menubar=1,resizable=1,width=600,height=350' ); return false; }); }); </script> <script type="text/javascript"> var windowOpen; jQuery(document).on( 'ready post-load', function(){ jQuery( 'a.share-facebook' ).on( 'click', function() { if ( 'undefined' !== typeof windowOpen ){ // If there's another sharing window open, close it. windowOpen.close(); } windowOpen = window.open( jQuery(this).attr( 'href' ), 'wpcomfacebook', 'menubar=1,resizable=1,width=600,height=400' ); return false; }); }); </script> <script type="text/javascript"> var windowOpen; jQuery(document).on( 'ready post-load', function(){ jQuery( 'a.share-google-plus-1' ).on( 'click', function() { if ( 'undefined' !== typeof windowOpen ){ // If there's another sharing window open, close it. windowOpen.close(); } windowOpen = window.open( jQuery(this).attr( 'href' ), 'wpcomgoogle-plus-1', 'menubar=1,resizable=1,width=480,height=550' ); return false; }); }); </script> <script type='text/javascript' src='https://blog.sparna.fr/wp-content/plugins/akismet/_inc/form.js?ver=3.1.5'></script> <script type='text/javascript' src='https://blog.sparna.fr/wp-content/plugins/contact-form-7/includes/js/jquery.form.min.js?ver=3.51.0-2014.06.20'></script> <script type='text/javascript'> /* <![CDATA[ */ var _wpcf7 = {"loaderUrl":"https:\/\/blog.sparna.fr\/wp-content\/plugins\/contact-form-7\/images\/ajax-loader.gif","sending":"Envoi en cours ..."}; /* ]]> */ </script> <script type='text/javascript' src='https://blog.sparna.fr/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=4.2.1'></script> <script type='text/javascript' src='https://s0.wp.com/wp-content/js/devicepx-jetpack.js?ver=202447'></script> <script type='text/javascript' src='https://secure.gravatar.com/js/gprofiles.js?ver=2024Novaa'></script> <script type='text/javascript'> /* <![CDATA[ */ var WPGroHo = {"my_hash":""}; /* ]]> */ </script> <script type='text/javascript' src='https://blog.sparna.fr/wp-content/plugins/jetpack/modules/wpgroho.js?ver=4.2.38'></script> <script type='text/javascript' src='https://blog.sparna.fr/wp-includes/js/comment-reply.min.js?ver=4.2.38'></script> <script type='text/javascript'> /* <![CDATA[ */ var wpexLocalize = {"mobileMenuOpen":"Click here to navigate","mobileMenuClosed":"Close navigation","flexSlideshow":"true","flexSlideshowSpeed":"7000"}; /* ]]> */ </script> <script type='text/javascript' src='https://blog.sparna.fr/wp-content/themes/wpex-luxmag/js/global-min.js?ver=1.0'></script> <script type='text/javascript'> /* <![CDATA[ */ var sharing_js_options = {"lang":"en","counts":"1"}; /* ]]> */ </script> <script type='text/javascript' src='https://blog.sparna.fr/wp-content/plugins/jetpack/modules/sharedaddy/sharing.js?ver=3.6.4'></script> <script type='text/javascript' src='https://stats.wp.com/e-202447.js' async defer></script> <script type='text/javascript'> _stq = window._stq || []; _stq.push([ 'view', {v:'ext',j:'1:3.6.4',blog:'75279471',post:'1352',tz:'1',srv:'blog.sparna.fr'} ]); _stq.push([ 'clickTrackerInit', '75279471', '1352' ]); </script> </body> </html>