- What is the Solid Project ?
Well first,
there are lot of things whose name is Solid on the net, and in computer programming too...
but the one we will discuss here is the project launched by Sir Tim Berners-Lee (the man known as the inventor of web in 1989).
Sure that it's hard to say one man invented the web, as there was many people that worked on it, but Tim wrote an important part to describe all you use each day.
Working at CERN, he proposed some tools to facilitate sharing and updating information among researchers, by making first HTML pages, & describing how the links works...
His goal was to provide each person a way to share what information he want.
From this time, its "invention" has been reused a lot until now and many businesses use it...
BUT,
as anyone knows, some companies use those technologies, but the user is not the owner of its data. Those companies uses your data, to show you ads that could interest you, sell your data...
As the director of the W3C consortium, Tim always applied to provide ways to share informations and to connect (LinkedData) them and now he want to revert the tendance.
The goal of Solid is to give back to each one a way to manage its data, to decide who he want to share one part of information.
To do that, Tim created the company Inrupt to help the Solid Project.
To know more about the Solid philosophy, check the Wikipedia page [ English ] [ French ]
or the SolidProject
an old page describing the Solid project
The Community Forum is a good start and the newcomers are always welcomed to ask questions and
more technical question can also be asked on gitter/Solid/chat
- How Solid Works ?
Building apps on Solid is really different as building apps in other ways. Whereas in current ways, data or information are stored in databases.
In the Solid philosophy, each user store its data on a POD and authorize apps to read its data or not.
For example, we could imagine a service provider that
02/05/2020
Solid & the Decentralized Web
04/05/2019
OSrdf
OSrdf :
Organic System Resource Data File
Organization System RDF
Operating System Rewritten by David F
or Something Ridiculous about ... ;-)
Un Operating System, système d'exploitation basé sur un système multi-agents, où tout est AGENT HOLACRATIQUE au sens Janus/SARL.
La machine est un agent
Le système de fichier est un agent
https://medium.com/datadriveninvestor/writing-your-own-file-system-is-not-as-hard-as-you-may-think-aa4af09329cd
Un dossier, un fichier, un périphérique (écran, clavier, souris, imprimante 3D, carte reseau...) sont des agents
Une donnée, un triplet, une ressource...
Un utilisateur, une connexion, une page web, un clic de souris, un formulaire, un champ de formulaire, un bouton, un composant web ( basé sur github/scenaristeur/evejs) sont des agents
Des agents autonomes ayant chacun un but propre ou contribuant à un but plus général.
Les buts / raisons d'être / prochaines actions de chacun de ces agents pouvant être définies grâce à un système inspiré du management à la manière de l'holacratie. ( Cercle, rôle, raison d'être)...
-> Résultat, un système d'exploitation, Os qui se rapproche :
- du cortex du cerveau humain ( des neurones interconnectés comme des noeuds d'un graphe Spoggy)
- de l'organisation de notre holacratique
- de notre vision limitée du monde et notre façon de le concevoir par association, découverte, apprentissage...
What about l'ordinateur quantique developpé par IBM et qui peine à trouver des applications ? Mais serait peut-être une opportunité pour ce genre d'OS ?
23/06/2018
Spoggy et la prise de notes
- Analyse des réseaux en Egyptologie
- Analyse Visuelle des réseaux
- Méthodologie de Conception de DataVisualisation
Ces notes ont été prises dans le feu de l'action, chacun peut les corriger, les compléter et demander leur modification sur cette page
Pour rappel, il est également possible des prendre des notes à plusieurs en même temps sur le même graphe... En passant par le bouton de menu "+" / mode / collaboratif
Pour savoir comment utiliser Spoggy consultez l'aide bouton de menu "+" / Aide
09/06/2018
Quand Spoggy s'attaque à Persée, Retour après la bataille
Pour tout vous dire, la vraie attaque a eu lieu le weekend dernier, à la Cuisine du Web et était organisée par l'équipe de Persée, lors de son premier hackathon : PerséeUP ... A noter également la complicité de l'équipe MuseomixAura et de quelques autres intervenants...
Super accueil, super conditions, super tout tout tout... Un hackathon tellement sympa qu'on aurait presque pu le faire en famille, m'enfin, je me comprend 😜...
Pour ceux qui débarque après la bataille, (et oui, il y en aura toujours, et c'est certainement mieux ainsi), il convient de rappeler ce qu'est Spoggy et en quoi l'assaut de Persée était une phase importante de son développement...

Pour le projet Smag0, il nous est en effet apparu plus judicieux de partir sur le format de données RDF qui permet l'interconnexion de bases de connaissances...

(Fuseki est un simple fichier Zip à décompresser & ne nécessite que java8).
Spoggy doit être capable de se connecter à plusieurs triplestores ou endpoints, tels qu'un serveur Fuseki personnel, DBPedia, ou d'autres format comme celui par exemple de Semantic Forms

Spoggy correspond à l'interface utilisateur (en vert) vers les triplestore, et le triplestore Persée correspond à ce format, il est l'un des "Autres serveurs et sourtces RDF" (cadre rouge sur le schéma).

Bon et concrètement qu'est ce que ça donne ?
1 En utilisant une url paramétrée pour Spoggy :
2 : Mode Exploration de Spoggy appliqué à Persée :
3: Spoggy en mode recherche textuelle sur les données de Persée :
Et Maintenant ???
{ name:'Persee', description: "Le portail Persée\n \ Persée est un programme national de numérisation et de diffusion de collections de documents scientifiques.\ Sur son portail (www.persee.fr) plus de 200 collections de revues publiées de 1820 à nos jours sont disponibles.\ Le portail permet une recherche dans certaines métadonnées et le texte de plus de 700 000 documents et 500 000 illustrations. \ Les interfaces de recherche actuelles permettent d’exploiter trois index (documents, illustrations et auteurs) \ et elles sont dotées de fonctionnalités de tri, de facettes, etc.", plus: 'http://data.persee.fr/ressources/le-triplestore-de-persee/', url: 'http://data.persee.fr/sparql', // url: 'http://data.persee.fr', image: 'https://www.persee.fr/static/persee.png', actif: true, selectionnable: true, type: 'virtuoso', read:true, write:false, exploreQuery: { query: 'SELECT DISTINCT ?s ?t ?sub \ WHERE {\ ?s ?p bibo:Document.\ ?s dcterms:title ?t.\ ?s dcterms:subject ?sub.\ filter (lang(?sub) = "" || langMatches(lang(?sub), "fr"))\ } LIMIT 100' , typeResources:{ s: 'bibo:Document', sub: 'Subjects' }, parseToVis : function(app, results, endpointUrl,typeResources, group){ // var app = this; var visRes = {nodes:[], edges:[]}; results.forEach(function(r){ console.log(r); let node = { id: app.visId(r.s.value), type: null, resourceType: typeResources.s, uri: r.s.value, label: app.visLabelSplit(app.visLabel(r.t.value)), endpointUrl: endpointUrl, color: "rgb(76,0,74)", font: { color: 'rgb(255,255,255)' }, cid: group, y: 2*Math.random() } var trouveN = visRes.nodes.find(function(element){ return node.id == element.id }); if (trouveN) { // console.log("TROUVE ") // console.log(trouveN) node = trouveN; }else{ visRes.nodes.push(node); } let nodeSub = { id: r.sub.value, type: r.sub.type, resourceType: typeResources.sub, label: app.visLabelSplit(r.sub.value), endpointUrl: endpointUrl, color: "rgb(107,142,35)", shape: "box", cid: group, y: 2*Math.random() } var trouveS = visRes.nodes.find(function(element){ return nodeSub.id == element.id }); if (trouveS) { // console.log("TROUVE ") // console.log(trouveS) nodeSub = trouveS; }else{ visRes.nodes.push(nodeSub); } let eType = {from : node.id, to: nodeSub.id, label: "subject"} if (!visRes.edges.includes(eType)){ visRes.edges.push(eType) } }); return visRes; } }, searchQuery : { query: ' SELECT distinct * WHERE { ?s rdfs:label ?label . \ ?s rdf:type ?type . \ OPTIONAL { ?s dcterms:title ?title .} \ FILTER(bif:contains(?label, "RECHERCHE")) . \ } LIMIT 100', typeResource:'bibo:Document' }, clickonNode: [ {type : "Personne", detecteur: "http://xmlns.com/foaf/0.1/Person", requete : 'PREFIX dcterms: <http://purl.org/dc/terms/> \ PREFIX foaf: <http://xmlns.com/foaf/0.1/> \ SELECT DISTINCT ?person ?name \ WHERE { \ ?doc dcterms:creator <NODEID>. \ ?doc dcterms:creator ?person. \ ?person foaf:name ?name. \ }', lienCree : "co-auteur" }, {type : "Document", detecteur: " a revoir", requete : 'a revoir', lienCree : "a revoir" } ] /* exploreQuery: 'select distinct ?Concept where {[] a ?Concept} LIMIT 100'*/ },