Avec Karma Web, on peut plaquer un un modèle RDF sur du JSON, CSV, ou base SQL.
C'est mieux que DataLift, qui ne fait que SQL.
C'est une application Java Web versionnée dans Github, qui stocke dans une base de triplets Sesame (OpenRDF).
Le développeur principal répond aux issues sur GitHub.
J'ai pris comme exemple cette table des pharmaciens d'Ile de France:
On peut l'avoir en CSV aussi, mais Karma ne comprend pas les séparateurs points-virgules:
J'ai préchargé dans Karma ces vocabulaires:
ls -l --dereference preloaded-ontologies/
total 1244
-rw-rw-r-- 1 jmv jmv 1150363 oct. 14 21:16 dbpedia_3.9.owl
-rw-r--r-- 1 jmv jmv 17568 mars 17 13:17 dc.rdf
-rw-rw-r-- 1 jmv jmv 43191 nov. 9 2011 foaf.rdf
-rw-r--r-- 1 jmv jmv 48977 mars 17 13:19 sioc.rdf
-rw-r--r-- 1 jmv jmv 7866 mars 17 13:20 wgs84_pos.rdf
Ce qui est troublant au premier abord, c'est que dès qu'on a associé deux colonnes chacune à une propriété RDF et une classe OWL, alors il essaye de chapeauter ça avec une classe qui se veut une représentation de la table. Il utilise pour ça les domaines et les plages de valeurs (ranges) des propriétés. On obtient ceci, chapeauté par Island:
On doit alors annuler les deux associations de colonnes, et en choisir deux qui ont du sens. Heureusement dans l'ontologie dbPedia on trouve son bonheur. Une pharmacie peut raisonnablement correspondre à un cas particulier de dbo:Organization. Ensuite il est assez simple d'associer chaque colonne soit à City, soit à Organization. on peut même modéliser les dates de première autorisation et d'ouverture:
Ensuite, pour d'autres tables, on pourra capitaliser sur les classes et les propriétés qui ont déjà été associées à une colonne. Mais je n'ai pas encore testé.
A noter que Karma sauve ses associations dans un document R2RML, le standard pour la sémantisation des bases RDF.
Conclusion: un outils utile, et vu la quantité de JSON dans la nature on en a vraiment besoin.
Bien sûr, il y a pas mal d'imperfections dans l'IHM:
mais c'est assez utilisable après une période d'adaption d'un jour, et à condition de connaître suffisament les vocabulaires de base.
Mais aussi, vu la quantité de JSON disponible, on a besoin d'un agent plus intelligent, qui entre autres, analyse linguistiquement les noms des champs et les contenus.
De plus, Karma aide à appliquer des propriétés et des classes, mais ne propose rien pour lier les instances avec des URI existant ailleurs, ce qui est vraiment le but des LOD (
Linked Open Data
http://linkeddata.org/). Pour cela, je propose d'utiliser le lookup dbPedia (
http://wiki.dbpedia.org/Lookup). Une entrée dans la colonne "comune", par exemple "BOURRON MARLOTTE", qui est associée au foaf:name d'une dbo:City via Karma, peut être via le lookup dbPedia associée de manière unique à l'URI:
grâce à la requête:
Cette fonctionalité devrait être implémentée de manière à être réutilisable dans DataGUI, dans Karma et ailleurs. Des tas de concepts sont présents dans dbPedia: Villes, personnages de tous types, chansons, espèces de plantes et d'animaux, oeuvres littéraires et autres, marques, etc. Bien sûr, il y a des cas où la solution n'est pas unique, même en indiquant QueryClass= dans la requête, comme Paris la ville: en France et aux USA. Dans ces cas, on pourrait utiliser un contexte RDF pour désambiguer.
--