Affichage des articles dont le libellé est rdf. Afficher tous les articles
Affichage des articles dont le libellé est rdf. Afficher tous les articles

02/05/2020

Solid & the Decentralized Web

  1. 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
  2.  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




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

Voici quelques exemples de prises de notes effectués lors des conférences au cours du hackathon PerseUp. Hackathon dont nous avons déjà longuement parlé.

- 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

Bon dans le dernier article ( Quand Spoggy utilise Polymer pour s'attaquer à Persée... ), nous vous avions fait part de la stratégie que Spoggy comptait adopter pour s'attaquer à Persée...

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...

D'abord, Spoggy s'inscrit dans un projet plus vaste et a pour objectif de faciliter l'utilisation des données au format RDF pour tout un chacun, pour mon fils de 7 ans ou ma mère de .... non, restons corrects...

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...



Chaque objet connecté, chaque robot possède une petite base de connaissances au format rdf ou un endpoint sparql...
(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). 
Spoggy permet d'une part de créer des graphes RDF , mais la partie qui nous intéresse ici, c'est la restitution des informations sous forme visuelle... Et l'adaptation à Persée était un peu l'épreuve du feu pour Spoggy...
Lors du hackathon, plusieurs projets ont émergé dont un qui avait pour objectif de faciliter l'exploration des données Persée, par la navigation sous forme de graphe, en représentant les noeuds et les liens qui les unissent... C'était la brèche, je me suis engouffré avec mon Spoggy...

Une équipe au top, avec une Françoise passionnée de RDF, un Max chercheur-utilisateur, une Cécile qui avait déjà réfléchi a la visualisation/ navigation, un Karl et Baptiste développeurs, ça c'est pour les compétences générales, mais bien d'autres cachées... Pour l'occasion, j'avais même invité notre Jean-Marc, garant national de la régularité du RDF, qui ne s'est pas géné pour bousculer un peu l'équipe de Persée... 😏

Avec tout ça, les idées ont fusé, les post-it collés, on décollé, les marqueurs ont chauffé sur les dashboards... Une cohésion s'est installée rapidement entre des personnes qui ne s'étaient jamais rencontrées avant... C'est ça la force des hackathons...


Bon et concrètement qu'est ce que ça donne ?

Grâce aux requêtes de Karl et Cécile, Spoggy permet maintenant de naviguer de trois façons différentes dans les données de Persée : 
(a noter une fonctionnalité développée lors du hackathon n'a pas encore été intégrée dans les vidéos qui suivent, c'est l'affichage de la page correspondante de Persée, Persée semble bloquer l'inclusion de ses pages dans une iframe ? mais l'intégration d'un plugin Spoggy dans les pages Persée pourrait résoudre cet ecueil)

1 En utilisant une url paramétrée pour Spoggy :  


La première idée était d'inclure "un graphe de navigation" dans les pages de Persée, mais ne pouvant évidemment pas intervenir sur ces pages (à voir si un jour on pourra), nous avons fait l'inverse : inclure les données de Persée dans Spoggy. La transition peut être effectuée au moyen d'un bouton dans la page de Persée qui renverrait vers Spoggy avec comme paramètres les informations que l'on veut afficher : 

Attention, pour se brancher sur Persee, vous devez consulter Spoggy en http et non https !

par exemple la page Persée sur Pierre Bourdieu  (http://www.persee.fr/authority/30551 ) aurait un bouton qui renverrait vers Spoggy, ou afficherait le graphe via cette adresse (remplacer 'www' par 'data et 'authority' par 'person' : 


Pour un document tel que http://www.persee.fr/doc/ahess_0395-2649_1977_num_32_3_293828, remplacez simplement 'www' par 'data' : 





2 : Mode Exploration de Spoggy appliqué à Persée : 

En utilisant les "Requêtes prédéfinies de Karl & Cécile "





3: Spoggy en mode recherche textuelle sur les données de Persée : 






Et Maintenant ???

Il y a encore quelques requêtes à revoir, des filtres, et des aménagements...
petit rappel : 
- pour participer au développement de Spoggy, c'est sur le github heroku-spoggy
- pour apporter de nouvelles idées : utilisez le kanban de heroku-spoggy

A l'issue de tout ce travail, il semble important que les fournisseur de données via des triplestore, fournissent à leur utilisateurs, des points d'entrée, des requêtes génériques de : 
- exploration & de recherche ( en jaune dans le code ci-dessous),
- une fonction pour parser les résultats associée aux requêtes précédentes, pour transformer ces résultats en noeuds/liens utilisables par un outil de visualisation. (en vert dans le code ci-dessous),
- et des requêtes complémentaires en fonction du type de noeud sur lesquels on clic (en bleu dans le code ci-dessous)

Ceci devrait être faisable si les fournisseurs de données via triplestore fournissaient également un fichier json de présentation, de requêtes, de fonctions de parsing et de tout outil qui pourrait aider à explorer leur triplestore... 
Un exemple de ce à quoi cela pourrait ressembler est (a l'heure actuelle dans le fichier spoggy-endpoint, mais c'est certainement amené à changer pour généraliser la proicédure ;-) : 

{
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'*/
},
  




Vous retrouverez les développements complémentaires effectués lors du hackathon dans la branche Persée du repo github de Spoggy