A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 37KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang=fr>
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset=utf-8>
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name=viewport content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Au-delà des limites, que reste-t-il concrètement du Web sémantique ? (archive) — David Larlet</title>
  13. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
  15. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
  16. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
  17. <link rel="manifest" href="/manifest.json">
  18. <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
  19. <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
  20. <meta name="apple-mobile-web-app-title" content="David Larlet">
  21. <meta name="application-name" content="David Larlet">
  22. <meta name="msapplication-TileColor" content="#da532c">
  23. <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- That good ol' feed, subscribe :p. -->
  26. <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
  27. <meta name="robots" content="noindex, nofollow">
  28. <meta content="origin-when-cross-origin" name="referrer">
  29. <!-- Canonical URL for SEO purposes -->
  30. <link rel="canonical" href="http://www.lespetitescases.net/au-dela-des-limites-que-reste-t-il-concretement-du-web-semantique">
  31. <style>
  32. /* http://meyerweb.com/eric/tools/css/reset/ */
  33. html, body, div, span,
  34. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  35. a, abbr, address, big, cite, code,
  36. del, dfn, em, img, ins,
  37. small, strike, strong, tt, var,
  38. dl, dt, dd, ol, ul, li,
  39. fieldset, form, label, legend,
  40. table, caption, tbody, tfoot, thead, tr, th, td,
  41. article, aside, canvas, details, embed,
  42. figure, figcaption, footer, header, hgroup,
  43. menu, nav, output, ruby, section, summary,
  44. time, mark, audio, video {
  45. margin: 0;
  46. padding: 0;
  47. border: 0;
  48. font-size: 100%;
  49. font: inherit;
  50. vertical-align: baseline;
  51. }
  52. /* HTML5 display-role reset for older browsers */
  53. article, aside, details, figcaption, figure,
  54. footer, header, hgroup, menu, nav, section { display: block; }
  55. body { line-height: 1; }
  56. blockquote, q { quotes: none; }
  57. blockquote:before, blockquote:after,
  58. q:before, q:after {
  59. content: '';
  60. content: none;
  61. }
  62. table {
  63. border-collapse: collapse;
  64. border-spacing: 0;
  65. }
  66. /* http://practicaltypography.com/equity.html */
  67. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  68. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  69. @font-face {
  70. font-family: 'EquityTextB';
  71. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  72. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  73. font-weight: 300;
  74. font-style: normal;
  75. font-display: swap;
  76. }
  77. @font-face {
  78. font-family: 'EquityTextB';
  79. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  80. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  81. font-weight: 300;
  82. font-style: italic;
  83. font-display: swap;
  84. }
  85. @font-face {
  86. font-family: 'EquityTextB';
  87. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  88. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  89. font-weight: 700;
  90. font-style: normal;
  91. font-display: swap;
  92. }
  93. @font-face {
  94. font-family: 'ConcourseT3';
  95. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  96. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  97. font-weight: 300;
  98. font-style: normal;
  99. font-display: swap;
  100. }
  101. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  102. body {
  103. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  104. font-family: "EquityTextB", Palatino, serif;
  105. background-color: #f0f0ea;
  106. color: #07486c;
  107. font-kerning: normal;
  108. -moz-osx-font-smoothing: grayscale;
  109. -webkit-font-smoothing: subpixel-antialiased;
  110. text-rendering: optimizeLegibility;
  111. font-variant-ligatures: common-ligatures contextual;
  112. font-feature-settings: "kern", "liga", "clig", "calt";
  113. }
  114. pre, code, kbd, samp, var, tt {
  115. font-family: 'TriplicateT4c', monospace;
  116. }
  117. em {
  118. font-style: italic;
  119. color: #323a45;
  120. }
  121. strong {
  122. font-weight: bold;
  123. color: black;
  124. }
  125. nav {
  126. background-color: #323a45;
  127. color: #f0f0ea;
  128. display: flex;
  129. justify-content: space-around;
  130. padding: 1rem .5rem;
  131. }
  132. nav:last-child {
  133. border-bottom: 1vh solid #2d7474;
  134. }
  135. nav a {
  136. color: #f0f0ea;
  137. }
  138. nav abbr {
  139. border-bottom: 1px dotted white;
  140. }
  141. h1 {
  142. border-top: 1vh solid #2d7474;
  143. border-bottom: .2vh dotted #2d7474;
  144. background-color: #e3e1e1;
  145. color: #323a45;
  146. text-align: center;
  147. padding: 5rem 0 4rem 0;
  148. width: 100%;
  149. font-family: 'ConcourseT3';
  150. display: flex;
  151. flex-direction: column;
  152. }
  153. h1.single {
  154. padding-bottom: 10rem;
  155. }
  156. h1 span {
  157. position: absolute;
  158. top: 1vh;
  159. left: 20%;
  160. line-height: 0;
  161. }
  162. h1 span a {
  163. line-height: 1.7;
  164. padding: 1rem 1.2rem .6rem 1.2rem;
  165. border-radius: 0 0 6% 6%;
  166. background: #2d7474;
  167. font-size: 1.3rem;
  168. color: white;
  169. text-decoration: none;
  170. }
  171. h2 {
  172. margin: 4rem 0 1rem;
  173. border-top: .2vh solid #2d7474;
  174. padding-top: 1vh;
  175. }
  176. h3 {
  177. text-align: center;
  178. margin: 3rem 0 .75em;
  179. }
  180. hr {
  181. height: .4rem;
  182. width: .4rem;
  183. border-radius: .4rem;
  184. background: #07486c;
  185. margin: 2.5rem auto;
  186. }
  187. time {
  188. display: bloc;
  189. margin-left: 0 !important;
  190. }
  191. ul, ol {
  192. margin: 2rem;
  193. }
  194. ul {
  195. list-style-type: square;
  196. }
  197. a {
  198. text-decoration-skip-ink: auto;
  199. text-decoration-thickness: 0.05em;
  200. text-underline-offset: 0.09em;
  201. }
  202. article {
  203. max-width: 50rem;
  204. display: flex;
  205. flex-direction: column;
  206. margin: 2rem auto;
  207. }
  208. article.single {
  209. border-top: .2vh dotted #2d7474;
  210. margin: -6rem auto 1rem auto;
  211. background: #f0f0ea;
  212. padding: 2rem;
  213. }
  214. article p:last-child {
  215. margin-bottom: 1rem;
  216. }
  217. p {
  218. padding: 0 .5rem;
  219. margin-left: 3rem;
  220. }
  221. p + p,
  222. figure + p {
  223. margin-top: 2rem;
  224. }
  225. blockquote {
  226. background-color: #e3e1e1;
  227. border-left: .5vw solid #2d7474;
  228. display: flex;
  229. flex-direction: column;
  230. align-items: center;
  231. padding: 1rem;
  232. margin: 1.5rem;
  233. }
  234. blockquote cite {
  235. font-style: italic;
  236. }
  237. blockquote p {
  238. margin-left: 0;
  239. }
  240. figure {
  241. border-top: .2vh solid #2d7474;
  242. background-color: #e3e1e1;
  243. text-align: center;
  244. padding: 1.5rem 0;
  245. margin: 1rem 0 0;
  246. font-size: 1.5rem;
  247. width: 100%;
  248. }
  249. figure img {
  250. max-width: 250px;
  251. max-height: 250px;
  252. border: .5vw solid #323a45;
  253. padding: 1px;
  254. }
  255. figcaption {
  256. padding: 1rem;
  257. line-height: 1.4;
  258. }
  259. aside {
  260. display: flex;
  261. flex-direction: column;
  262. background-color: #e3e1e1;
  263. padding: 1rem 0;
  264. border-bottom: .2vh solid #07486c;
  265. }
  266. aside p {
  267. max-width: 50rem;
  268. margin: 0 auto;
  269. }
  270. /* https://fvsch.com/code/css-locks/ */
  271. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  272. font-size: 1rem;
  273. line-height: calc( 1.5em + 0.2 * 1rem );
  274. }
  275. h1 {
  276. font-size: 1.9rem;
  277. line-height: calc( 1.2em + 0.2 * 1rem );
  278. }
  279. h2 {
  280. font-size: 1.6rem;
  281. line-height: calc( 1.3em + 0.2 * 1rem );
  282. }
  283. h3 {
  284. font-size: 1.35rem;
  285. line-height: calc( 1.4em + 0.2 * 1rem );
  286. }
  287. @media (min-width: 20em) {
  288. /* The (100vw - 20rem) / (50 - 20) part
  289. resolves to 0-1rem, depending on the
  290. viewport width (between 20em and 50em). */
  291. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  292. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  293. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  294. margin-left: 0;
  295. }
  296. h1 {
  297. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  298. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  299. }
  300. h2 {
  301. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  302. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  303. }
  304. h3 {
  305. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  306. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  307. }
  308. }
  309. @media (min-width: 50em) {
  310. /* The right part of the addition *must* be a
  311. rem value. In this example we *could* change
  312. the whole declaration to font-size:2.5rem,
  313. but if our baseline value was not expressed
  314. in rem we would have to use calc. */
  315. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  316. font-size: calc( 1rem + .6 * 1rem );
  317. line-height: 1.5em;
  318. }
  319. p, li, pre, details {
  320. margin-left: 3rem;
  321. }
  322. h1 {
  323. font-size: calc( 1.9rem + 1.5 * 1rem );
  324. line-height: 1.2em;
  325. }
  326. h2 {
  327. font-size: calc( 1.5rem + 1.5 * 1rem );
  328. line-height: 1.3em;
  329. }
  330. h3 {
  331. font-size: calc( 1.35rem + 1.5 * 1rem );
  332. line-height: 1.4em;
  333. }
  334. figure img {
  335. max-width: 500px;
  336. max-height: 500px;
  337. }
  338. }
  339. figure.unsquared {
  340. margin-bottom: 1.5rem;
  341. }
  342. figure.unsquared img {
  343. height: inherit;
  344. }
  345. @media print {
  346. body { font-size: 100%; }
  347. a:after { content: " (" attr(href) ")"; }
  348. a, a:link, a:visited, a:after {
  349. text-decoration: underline;
  350. text-shadow: none !important;
  351. background-image: none !important;
  352. background: white;
  353. color: black;
  354. }
  355. abbr[title] { border-bottom: 0; }
  356. abbr[title]:after { content: " (" attr(title) ")"; }
  357. img { page-break-inside: avoid; }
  358. @page { margin: 2cm .5cm; }
  359. h1, h2, h3 { page-break-after: avoid; }
  360. p3 { orphans: 3; widows: 3; }
  361. img {
  362. max-width: 250px !important;
  363. max-height: 250px !important;
  364. }
  365. nav, aside { display: none; }
  366. }
  367. ul.with_columns {
  368. column-count: 1;
  369. }
  370. @media (min-width: 20em) {
  371. ul.with_columns {
  372. column-count: 2;
  373. }
  374. }
  375. @media (min-width: 50em) {
  376. ul.with_columns {
  377. column-count: 3;
  378. }
  379. }
  380. ul.with_two_columns {
  381. column-count: 1;
  382. }
  383. @media (min-width: 20em) {
  384. ul.with_two_columns {
  385. column-count: 1;
  386. }
  387. }
  388. @media (min-width: 50em) {
  389. ul.with_two_columns {
  390. column-count: 2;
  391. }
  392. }
  393. .gallery {
  394. display: flex;
  395. flex-wrap: wrap;
  396. justify-content: space-around;
  397. }
  398. .gallery figure img {
  399. margin-left: 1rem;
  400. margin-right: 1rem;
  401. }
  402. .gallery figure figcaption {
  403. font-family: 'ConcourseT3'
  404. }
  405. footer {
  406. font-family: 'ConcourseT3';
  407. display: flex;
  408. flex-direction: column;
  409. border-top: 3px solid white;
  410. padding: 4rem 0;
  411. background-color: #07486c;
  412. color: white;
  413. }
  414. footer > * {
  415. max-width: 50rem;
  416. margin: 0 auto;
  417. }
  418. footer a {
  419. color: #f1c40f;
  420. }
  421. footer .avatar {
  422. width: 200px;
  423. height: 200px;
  424. border-radius: 50%;
  425. float: left;
  426. -webkit-shape-outside: circle();
  427. shape-outside: circle();
  428. margin-right: 2rem;
  429. padding: 2px 5px 5px 2px;
  430. background: white;
  431. border-left: 1px solid #f1c40f;
  432. border-top: 1px solid #f1c40f;
  433. border-right: 5px solid #f1c40f;
  434. border-bottom: 5px solid #f1c40f;
  435. }
  436. </style>
  437. <h1>
  438. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  439. Au-delà des limites, que reste-t-il concrètement du Web sémantique ? (archive)
  440. <time>Pour la pérennité des contenus liés. Non-indexé, retrait sur simple email.</time>
  441. </h1>
  442. <section>
  443. <article>
  444. <h3><a href="http://www.lespetitescases.net/au-dela-des-limites-que-reste-t-il-concretement-du-web-semantique">Source originale du contenu</a></h3>
  445. <p>Ce billet fait partie d'une série de quatre billets qui visent à proposer un bilan de plus de 12 ans de travail avec les technologies du Web sémantique, « <a href="http://www.lespetitescases.net/les-technos-du-web-semantique-ont-elles-tenu-leurs-promesses">Les technos du Web sémantique ont-elles tenu leurs promesses ?</a> » :</p>
  446. <p>Si, à travers les différents cas d’implémentation des technologies du Web sémantique décrits dans le <a href="http://www.lespetitescases.net/les-technologies-du-web-semantique-entre-theorie-et-pratique">précédent billet</a>, les promesses sont globalement tenues, force est de constater que les problèmes qui se posent en limitent aujourd’hui le déploiement à large échelle ou en dehors de marchés de niche clairement identifiés :</p>
  447. <ul class="c17 lst-kix_8umz1jj966ks-0 start"><li>les <strong>systèmes de stockage des données en RDF</strong> (ou triple store) ont montré des <strong>limites du point de vue de l’intégrité des données</strong> (gestion des transactions), <strong>des performances</strong> (temps de réponse de certaines requêtes) ainsi que de <strong>la montée en charge </strong>(volumétrie). Ainsi, parmi les trois axes qui définissent traditionnellement le Big Data : vitesse, volume et variété (les « 3V »), les deux premières caractéristiques ne sont pas encore atteintes par ces technologies et si la décentralisation des données, au cœur même du modèle du Web de données, a pu constituer en partie une solution, c’est oublier la problématique de résilience du réseau et la nécessité d’agrégation des données pour les interroger.</li><li>la<strong> structure même du modèle RDF a fait apparaître des limites quant à la gestion de la provenance des différentes informations et la contextualisation du triplet</strong> : or, si ce point était présent dans la feuille de route du Web sémantique écrite par Tim Berners-Lee, il n’est toujours pas vraiment résolu. Des <a href="https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph">solutions</a> sont apparues mais elles ne sont pas entièrement satisfaisantes. De ce point de vue, <a href="https://www.w3.org/TR/rdf11-concepts/">RDF 1.1</a> est un rendez-vous manqué, d’autant qu’à la même époque le modèle des “<a href="http://graphdatamodeling.com/Graph%20Data%20Modeling/GraphDataModeling/page/PropertyGraphs.html">property graph</a>” qui propose une réponse à cette limite a commencé à s’imposer… Ce modèle est aujourd’hui au coeur de toutes les technologies de bases de données graphes proposées par les gros acteurs du secteur : <a href="https://console.bluemix.net/docs/services/graphdb/index.html">IBM</a>, <a href="https://docs.microsoft.com/fr-fr/azure/cosmos-db/graph-introduction">Microsoft</a>, <a href="https://aws.amazon.com/fr/neptune/">Amazon</a> (basé a priori sur le produit <a href="https://www.blazegraph.com/">Blazegraph</a> dont la société<a href="http://www.snee.com/bobdc.blog/2017/12/sparql-and-amazon-web-services.html"> semble avoir été rachetée par Amazon</a>), <a href="http://janusgraph.org/">Google</a>, sans compter les nouveaux venus  : <a href="https://www.huaweicloud.com/en-us/product/ges.html">Huawei</a>, <a href="https://www.datastax.com/products/datastax-enterprise-graph">Datastax</a>, <a href="https://neo4j.com/">Neo4j</a> ou <a href="https://orientdb.com/">OrientDB</a>. Ainsi, le modèle de graphes se porte bien et, pour cause, il offre une souplesse inégalée dans la manipulation des données structurées et dans l’interrogation croisée de données hétérogènes. Mais, ils ont tous fait le choix d’implémenter le modèle des property graph et ils ont tous adopté le <a href="http://tinkerpop.apache.org/">framework Apache Tinkerpop</a> et le <a href="https://tinkerpop.apache.org/gremlin.html">langage de requêtes Gremlin</a> pour interagir avec le système de stockage, ce qui en fait un standard de fait.</li><li><strong>le destin d’une technologie, indépendamment de son intérêt ou de sa qualité, tient aussi à son degré d’appropriation par les développeurs</strong>. Or, malgré sa relative ancienneté (<a href="https://www.w3.org/TR/WD-rdf-syntax-971002/">le premier brouillon de RDF est publié en 1997 sur le site du W3C !!</a>), il reste encore beaucoup de travail en la matière et, à la vue du nombre incessant de technologies qui apparaissent (et disparaissent), il est à craindre que <strong>les technologies du Web sémantique restent des technologies de niche maîtrisées par peu de développeurs</strong>.</li></ul>
  448. <h1 class="c9" id="h.xsyv3sxpmg00">Que reste-t-il concrètement du Web sémantique aujourd’hui ?</h1>
  449. <p>Malgré ces limites, certaines initiatives, projets ou usages ont réussi à se dégager et viennent valider certains aspects des technologies du Web sémantique.</p>
  450. <h2 class="c3" id="h.pv10h99ww39y">Wikidata, un graphe de connaissances centralisé</h2>
  451. <p><a href="https://www.wikidata.org">Wikidata </a>est un projet de la Wikimedia Foundation développé à partir de 2012 à l’initiative de l’association Wikimedia Deutschland. Son objectif initial était de centraliser et faciliter la maintenance des <a href="https://www.slideshare.net/AntidotNet/fing-dataliftwikidataslideshare-32797347">données structurées des Wikipedias</a> (liens interlangues, infobox, catégories, coordonnées géographiques, liens vers des fichiers d’autorité). Ainsi, <strong>Wikidata est aux données structurées ce que Wikimedia Commons est aux médias : un centralisateur d’informations au service des Wikipedia</strong>s. A l’origine, le projet est donc bien ancré dans la communauté Wikipédienne à son service direct. En ce sens, il se différencie nettement d’un autre projet auquel il est souvent comparé : <a href="https://dbpedia.org/">Dbpedia</a>, <a href="https://www.lespetitescases.net/dbpedia-ou-la-puissance-du-rdf-au-profit-du-savoir">initiative issue de la recherche, apparue en 2007</a>, dont l’objectif était directement lié à l’exposition des données structurées des Wikipedias selon les principes du Linked Data. </p>
  452. <p>Wikidata reprend les principes qui ont fait le succès de Wikipedia : tout un chacun peut contribuer librement et l’ensemble des donnés est associé à une licence libre, dans ce cas la <a href="https://creativecommons.org/publicdomain/zero/1.0/deed.fr">Creative Commons Zero</a> (assimilable à la notion de domaine public). Les différences se situent évidemment dans les informations : là où Wikipedia propose des textes et Wikimedia Commons des médias,<strong> Wikidata propose des données structurées sous la forme de déclarations</strong>.</p>
  453. <p> Ainsi, chaque page est associée à une entité dont l’identifiant est unique et opaque (sauf dans quelques rares cas qui relèvent plutôt de l’easter egg, cf. l’exemple ci-dessous). Les entités sont décrites par des libellés localisés (c’est-à-dire associés à une langue), une description localisée, des libellés alternatifs eux aussi localisés et un ensemble de déclarations dont la propriété fait partie d’une <a href="">ontologie déterminée par la communauté au fur et à mesure</a>. Les valeurs peuvent être des liens vers d’autres entités de Wikidata ou des chaînes de caractères typées. Jusque là, <strong>le modèle ressemble à RDF</strong>. Là où il s’en écarte, c’est dans<strong> la possibilité d’associer à chaque déclaration des références</strong> pour la sourcer (reprenant ainsi le principe des notes de bas de page présentes dans les Wikipedia)<strong> et des qualificatifs</strong> pour la préciser, ce qui résout <a href="https://www.lespetitescases.net/quel-evenement-ou-comment-contextualiser-le-triplet">le gros problème de contextualisation du modèle RDF</a>. </p>
  454. <p><span><img alt="" src="http://www.lespetitescases.net/files/image18.png" title=""/></span><br/><span class="c4 c7"><a href="https://commons.wikimedia.org/wiki/File:Datamodel_in_Wikidata_fr.svg">Modèle de données de Wikidata</a></span><span class="c10 c7">, Charlie Kristschmar, CC0</span></p>
  455. <p>Si Wikidata n’est pas structuré selon le modèle RDF, le projet a, en revanche, choisi SPARQL comme langage de requêtes et protocole d’interrogation. Ce choix fait suite à <a href="http://aidanhogan.com/docs/wikidata-sparql-relational-graph.pdf">différentes études</a>. Ainsi, les données des entités sont traduites dans un <a href="http://korrekt.org/papers/Wikidata-RDF-export-2014.pdf">modèle RDF spécifique</a> et, à chaque mise à jour, sont indexées dans un triple store, en l’occurrence le logiciel <a href="https://www.blazegraph.com/">Blazegraph</a>. Avec <strong>l’importance que prend petit à petit Wikidata, le choix de SPARQL pour Wikidata justifie à lui seul l’apprentissage de ce langage de requêtes</strong>.</p>
  456. <p>En effet, les objectifs initiaux de Wikidata ont été rapidement dépassés, car <strong>ce projet répondait à de nombreux défauts des autres projets existants</strong> en la matière. Par rapport à Dbpedia, il présentait l’avantage d’être mis à jour en temps réel (Dbpedia est mis à jour tous les 6 mois…), d’offrir une qualité de service bien supérieure et de proposer une structuration des données plus rigoureuse, dbpedia étant issu de données dont l’objectif n’était pas celui d’alimenter une base de données structurées à l’origine. Comparé à <a href="http://www.lespetitescases.net/retour-sur-freebase-a-la-lumiere-du-web-of-data">Freebase</a>, initiative lancée par la société <a href="https://en.wikipedia.org/wiki/Metaweb">Metaweb </a><a href="https://googleblog.blogspot.com/2010/07/deeper-understanding-with-metaweb.html">rachetée par Google</a> en 2010, ce projet présentait l’avantage d’être porté par une communauté libre clairement établie. Bref, Wikidata est devenu LE projet de base de connaissances libre et ouvert que tout le monde attendait : <strong>le chaînon manquant de la gestion des connaissances</strong>. Il n’est donc pas étonnant que <strong>Wikidata soit rapidement devenu un hub</strong> supplantant peu à peu Dbpedia en tant que centre des<a href=""> alignements de référentiels divers</a> à travers le monde. Ce rôle me semble évoluer peu à peu ces derniers temps :  <strong>d’un hub de références, Wikidata tend à devenir un réceptacle des données elles-mêmes.</strong> Ainsi, à <a href="https://outreach.m.wikimedia.org/wiki/GLAM/Newsletter/August_2018/Contents/France_report">l’image du Musée St Raymond de Toulouse</a>, les institutions vont être peu à peu tentées de mettre directement leurs données dans Wikidata. Et le <a href="">projet WikiCite</a>, qui vise à centraliser les références bibliographiques pour les Wikipedias, risque fort d’accélérer ce mouvement. </p>
  457. <p>Ironie de l’histoire, alors que le Linked Open Data souhaitait mettre en relation des données hétérogènes et décentralisées chez différents fournisseurs, il aura suffi de 5 ans pour que les utilisateurs commencent à recentraliser leurs données au sein d’un espace unique.</p>
  458. <p>Et pour vous convaincre de l’importance de ce projet, il suffit de voir l’implication de Google : <a href="https://www.generation-nt.com/wikidata-donnees-structurees-wikipedia-actualite-1562481.html">mécène du projet à l’origine</a>, ils ont recruté son <a href="http://simia.net/wiki/Denny">développeur principal</a>, <a href="https://twitter.com/vrandezo">Denny Vrandečić</a>, lorsque le projet a été stabilisé. Et pour cause : grâce au rachat de la société Metaweb, Google a disposé non seulement d’une technologie de graphe scalable (qui <a href="https://web.archive.org/web/20160305041722/http://mql.freebaseapps.com/ch02.html">ne suivait pas non plus précisément le modèle RDF</a>…) mais aussi d’une base de connaissances déjà conséquente. C’est sur cette base que Google a commencé à construire le <a href="https://www.blog.google/products/search/introducing-knowledge-graph-things-not/">Knowledge graph</a>, un autre exemple de base de connaissances centralisé bâti sur le modèle de graphe sans utiliser RDF. Ils ont rapidement compris qu’ils ne pourraient convaincre la communauté de poursuivre l’alimentation de Freebase, car cela revenait à travailler directement pour eux. Ils ont donc intelligemment proposé de <a href="https://searchengineland.com/google-close-freebase-helped-feed-knowledge-graph-211103">reverser le contenu de Freebase dans Wikidata</a> et ils ont accompagné la mise en place de Wikidata. Permettre l’éclosion de Wikidata, c’était aussi pour Google un moyen d’assurer une mise à jour de son graphe de connaissance, même si bien évidemment Wikidata n’est pas <a href="https://ai.google/research/pubs/pub45634">la seule source de ce knowledge graph</a>.</p>
  459. <h2 class="c3" id="h.301ojpft1xdg"><span class="c10 c12">Schema.org, une ontologie unique pour les unir tous </span></h2>
  460. <p>Et, parmi les différentes sources de données qui alimente le Knowledge graph de Google, on trouve en bonne place les données structurées mises à disposition par les sites eux-mêmes sur les <a href="https://developers.google.com/search/docs/guides/">recommandations de Google</a> dans l’objectif d’améliorer pour le producteur du site l’affichage des résultats dans le moteur de recherche. Quel changement quand on se souvient <a href="https://static.googleusercontent.com/media/research.google.com/fr//pubs/archive/35179.pdf">d’articles</a> ou d’<a href="https://www.lespetitescases.net/web-semantique-utilisateurs-stupidite-et-google">avis</a> de certains ingénieurs de Google sur l’intérêt des données structurées au sein des pages Web... </p>
  461. <p>Ce doute longtemps entretenu chez Google explique certainement pourquoi cette innovation n’a pas été portée par Google mais par Yahoo. Petit retour en arrière : en 2008, Yahoo lance <a href="https://www.lespetitescases.net/yahoo-apporte-bananes-web-semantique-1">SearchMonkey</a>, une plateforme qui permet aux sites de proposer des plugins pour améliorer la présentation de leurs résultats sur le moteur de recherche de Yahoo en exploitant les données structurées à l’intérieur des pages Web. Il recommande alors l’utilisation de RDFa ou des <a href="http://microformats.org/">microformats</a>. Cette innovation de Yahoo est un véritable « game changer ». Google réplique dès l’année suivante avec les rich Snippets. Mais, l’un comme l’autre font face à un problème de taille : la normalisation du vocabulaire. C’est la raison pour laquelle Google, Yahoo et Microsoft vont s’allier pour proposer un vocabulaire commun. Préparé dans le plus grand secret, <a href="https://schema.org/">Schema.org</a> voit le jour en 2012. </p>
  462. <p>Dès l’origine, le projet vise à proposer un vocabulaire unique pour encoder les données structurées à l’intérieur des pages Web. La force de frappe de ces trois sociétés suffit à en faire un standard immédiat, d’autant que la promesse est à la hauteur : une meilleure visibilité dans leurs résultats de recherche par une mise en valeur du contenu. Il préconise alors RDFa et <a href="https://www.w3.org/TR/microdata/">Microdata</a>, standard concurrent mis au point dans le cadre de HTML5. Peu à peu, <a href="https://www.w3.org/TR/json-ld/">Json-LD</a> qui permet de sérialiser du RDF avec la syntaxe Json, s’est imposé car il s’est avéré plus simple et moins intrusif de proposer des données encodées en Json-LD dans un bloc unique d’une page Web plutôt que d’insérer le RDFa à l’intérieur du balisage HTML.</p>
  463. <p><span><img alt="" src="http://www.lespetitescases.net/files/image20.png" title=""/></span></p>
  464. <p>Avec Schema.org, c’est d’abord le <a href="http://www.lespetitescases.net/contrer-les-idees-re%25C3%25A7ues-sur-le-web-semantique%23comment-583">spectre de l’ontologie universelle</a> qui revient au galop, d’autant que ce vocabulaire sort tout droit des trois plus grosses entreprises du secteur de l’époque, autant dire des caves des enfers. Pour calmer le jeu, la maintenance de Schema.org est placé d’abord sous l’égide du W3C et un <a href="https://www.w3.org/TR/1998/WD-rdf-schema-19981030/">pionnier du Web sémantique</a>, <a href="http://danbri.org/">Dan Brickley</a>, en devient le mainteneur officiel. Employé par Google peu de temps après, il parvient à apaiser les craintes et à fédérer les énergies pour faire avancer depuis six ans cette initiative. Et force est de reconnaître que cela fonctionne. </p>
  465. <p>Tout ça pour ça ? Permettre aux moteurs de recherche de récupérer plus facilement de la donnée structurée pour améliorer la visibilité des résultats de recherche (et surtout leur permettre d’alimenter leur knowledge graph à moindre frais…). Il semblerait bien que schema.org soit le seul exemple d’utilisation des technologies du Web sémantique à très large échelle. Et, après tout, comme le rappelle Dan Brickley, n’est-ce pas la vocation initiale de ces technologies ? </p>
  466. <blockquote class="twitter-tweet" data-lang="fr"><p lang="en" dir="ltr">RDF was designed as a data interchange framework; what you do in the privacy of your own database is your own business</p>— Dan Brickley (@danbri) <a href="https://twitter.com/danbri/status/1041387356618743808?ref_src=twsrc%5Etfw">16 septembre 2018</a></blockquote>
  467. <h2 class="c3" id="h.yka4qljxd2iq"><span class="c10 c12">Exposition des données, des gros hubs plutôt que des petits satellites ?</span></h2>
  468. <p>Comme nous l’avons vu précédemment, la plupart des <strong>utilisateurs </strong>souhaite des <strong>mécanismes simples et efficaces pour récupérer les données</strong>. L’enjeu de l’Open Data (qui, au passage, n’est pas une fin en soi de la production de données…) étant de permettre la réutilisation, il paraît <strong>contre-productif pour les organisations de ne pas répondre aux besoins des utilisateurs</strong> et de s’entêter à exposer les données selon les principes du Linked Data. C’est d’autant plus vrai que <strong>les coûts pour maintenir ce genre de systèmes sont plus élevés que la simple mise à disposition de jeux de données en CSV</strong> voire en XML ou en Json. </p>
  469. <p>De plus, <strong>publier des données selon les principes du Linked Data implique des responsabilités</strong>. En effet, à partir du moment où les données sont liées par d’autres, les questions habituelles de maintien des URIs se posent. Or, on constate, en particulier dans le milieu de la recherche, que de <strong>très nombreuses initiatives d’exposition des données ont aujourd’hui disparu</strong>, emmenant avec elles non seulement les identifiants mais aussi les données elles-mêmes. Gageons que les <strong>initiatives autour des données de la recherche, en particulier le </strong><strong><a href="https://fr.wikipedia.org/wiki/Fair_data">FAIR</a></strong><strong>, vont offrir les moyens d’exposer les données de manière durable</strong>. </p>
  470. <p>Un des moyens de poursuivre le développement du Linked Open Data<strong> passera immanquablement par la centralisation de ces données dans quelques « hubs »</strong> qui seront capables d’exposer selon les principes du Linked Data (ou sous d’autres formes d’ailleurs...) pour mutualiser les coûts de développement, de maintien en condition opérationnelle et de ressources humaines.</p>
  471. <p><span><img alt="" src="http://www.lespetitescases.net/files/image7.png" title=""/></span><br/><span class="c4 c7"><a href="https://lod-cloud.net/">LOD cloud Diagram</a></span><span class="c10 c7"> (Version de 2014), CC-BY</span></p>
  472. <p>Il en va de même dans le milieu patrimonial : Gallica en France, Europeana en Europe, VIAF dans le monde, pour n’en citer que trois, jouent déjà le rôle d’agrégateur de données et/ou de contenus. Il paraît logique qu’ils offrent aussi ce service d’exposition que les plus petites organisations n’auraient pas moyen de se payer. </p>
  473. <p>Mais, est-ce bien nécessaire ? <strong>Oui à condition qu’on reconnaisse politiquement à ces organisations, indépendantes de tout organisme privé ou communautaire, la mission d’exposer des données garantissant un haut niveau de description et de structure (impossible en CSV)...</strong> Pour l’instant, ces organisations en sont convaincues mais pour combien de temps ? Le <a href="https://www.data.gouv.fr/fr/reference">service public de la donnée</a> ne pourrait-il pas aussi faire des recommandations en ce sens ?</p>
  474. </article>
  475. </section>
  476. <nav id="jumpto">
  477. <p>
  478. <a href="/david/blog/">Accueil du blog</a> |
  479. <a href="http://www.lespetitescases.net/au-dela-des-limites-que-reste-t-il-concretement-du-web-semantique">Source originale</a> |
  480. <a href="/david/stream/2019/">Accueil du flux</a>
  481. </p>
  482. </nav>
  483. <footer>
  484. <div>
  485. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  486. <p>
  487. Bonjour/Hi!
  488. Je suis <a href="/david/" title="Profil public">David&nbsp;Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
  489. Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
  490. </p>
  491. <p>
  492. Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
  493. </p>
  494. <p>
  495. Voici quelques articles choisis :
  496. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  497. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  498. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  499. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  500. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  501. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  502. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  503. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  504. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  505. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  506. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  507. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  508. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  509. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  510. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  511. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  512. </p>
  513. <p>
  514. On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
  515. </p>
  516. <p>
  517. Je ne traque pas ta navigation mais mon
  518. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  519. conserve des logs d’accès.
  520. </p>
  521. </div>
  522. </footer>
  523. <script type="text/javascript">
  524. ;(_ => {
  525. const jumper = document.getElementById('jumper')
  526. jumper.addEventListener('click', e => {
  527. e.preventDefault()
  528. const anchor = e.target.getAttribute('href')
  529. const targetEl = document.getElementById(anchor.substring(1))
  530. targetEl.scrollIntoView({behavior: 'smooth'})
  531. })
  532. })()
  533. </script>