23/04/2015

Coolitude

Téléchargez Coolitude4 : http://smag-smag0.rhcloud.com/coolitude4/Coolitude4.apk
l'application qui permet d'échanger des informations (projets, idées...) avec le système SMAG0. 

#Coolitude ou comment rencontrer des personnes intéressées par vos #projets.

Un réseau social basé sur la créativité et les projets plutôt que sur la libido? Hum, hum !

Pour transmettre des informations aux #robots#objets connectés de ma maison (#iot), je devais avoir sous la main une #appli me permettant d'enregistrer mes #idées, mes intentions, mes projets.
C'est le but de #Coolitude4  qui enregistre les informations au format #RDF sur un serveur #Fuseki.

Mais les fonctionnalités de cette appli vont plus loin : partage de projets , partage d'idées,  partages de ressources...

Par extension, cette appli permet de #visualiser les personnes qui ont des projets proches des miens, --> partage de ressources, de compétences --> réseau social basé sur les projets.

Appli en cours de dév pour Android seulement pour l'instant (version -alpha) téléchargeable ici http://smag-smag0.rhcloud.com/coolitude4/Coolitude4.apk

Et ça nous donne une liste des projets visible ici : http://smag-smag0.rhcloud.com/visu.jsp

Avis aux développeurs intéressés, ou pour reporter un bug, le code source est là :  https://github.com/scenaristeur/coolitude4

Fonction implémentées aujourd'hui : 
Les fonctions sont accessibles depuis la page d'accueil de l'appli, par le menu en haut à droite.
Page d'accueil : bouton Enregistrer --> permet de créer un nouveau projet, avec récupération des coordonnées GPS, 
- Carte : Visualisation des projets sur la carte ( recentrer manuellement sur Lyon, pour l'instant )
- Dans"Dernier Projets" : la liste des projets sur le serveur.
- Dans "100 derniers projets" --> la liste des projets, puis dans le menu, en haut à droite :

  • foaf:Agent : ajouter un agent (Group, Organization,Person);
  •  schema:Action (faut que je renomme, c'est plus dbpedia:Event, maintenant) : possibilité d'ajouter des evenements aux projets.
Pour voir le résultat, pour l'instant, c'est là (en descendant tout en bas, vous devriez voir vos derniers ajouts de projets, Agents et Evenements liés ) :


Pour en discuter, reporter un bug : https://groups.google.com/forum/#!topic/smag0/bRP0xAvvmis

Plus d'infos sur http://smag-smag0.rhcloud.com/
Plus d'infos sur RDF : https://larlet.fr/david/biologeek/archives/20070827-rdf-pour-tous-du-publicateur-au-developpeur-web/



!!! PLUS C'est la partie technique, réservée à ceux qui ont déjà entendu parlé de RDF ou Sparql |-}

Requetes Sparql utilisées: 

référence utilisées  :
les requetes s'effectuent sur le serveur Sparql à l'adresse ci-dessous : 
http://fuseki-smag0.rhcloud.com/ dans le graphe ds, choisissez ensuite votre format de sortie (output)

Selectionner tous les projets qui ont pour type <http://smag0.blogspot.fr/ns/smag0#Projet> 


select * where {?Projet <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://smag0.blogspot.fr/ns/smag0#Projet> }

lien direct, output JSON : 
http://fuseki-smag0.rhcloud.com/ds/query?query=select+*+where+%7B%3FProjet+%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23type%3E%09%3Chttp%3A%2F%2Fsmag0.blogspot.fr%2Fns%2Fsmag0%23Projet%3E+%7D&output=json&stylesheet=%2Fxml-to-html.xsl

Requete Sparql avec options : 


PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX smag:   <http://smag0.blogspot.fr/ns/smag0#>
SELECT?projet ?titre ?description ?lat ?lon WHERE{
?projet <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> smag:Projet .
OPTIONAL {?projet <http://purl.org/dc/elements/1.1/title> ?titre }
 OPTIONAL {?projet <http://purl.org/dc/elements/1.1/description> ?description }
OPTIONAL {?projet smag:description ?description }
OPTIONAL { ?projet geo:lat ?lat }
 OPTIONAL { ?projet geo:long ?lon }
 OPTIONAL { ?projet smag:latitude ?lat } 
 OPTIONAL { ?projet smag:longitude ?lon } 
}
ORDER BY DESC(?projet)

ou :
http://fuseki-smag0.rhcloud.com/ds/query?query=PREFIX+geo%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2003%2F01%2Fgeo%2Fwgs84_pos%23%3E%0D%0A%0D%0APREFIX+smag%3A+++%3Chttp%3A%2F%2Fsmag0.blogspot.fr%2Fns%2Fsmag0%23%3E+%0D%0A%0D%0Aselect+%3Fprojet+%3Ftitre+%3Fdescription+%3Flat+%3Flon+where+%7B%0D%0A%0D%0A%3Fprojet+%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23type%3E+smag%3AProjet+.+%0D%0A%0D%0AOPTIONAL+%7B%3Fprojet+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2Ftitle%3E+%3Ftitre+%7D+%0D%0A%0D%0A+OPTIONAL+%7B%3Fprojet+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2Fdescription%3E+%3Fdescription+%7D+%0D%0A%0D%0AOPTIONAL+%7B%3Fprojet+smag%3Adescription+%3Fdescription+%7D+%0D%0A%0D%0AOPTIONAL+%7B+%3Fprojet+geo%3Alat+%3Flat+%7D+%0D%0A%0D%0A+OPTIONAL+%7B+%3Fprojet+geo%3Along+%3Flon+%7D+%0D%0A%0D%0A+OPTIONAL+%7B+%3Fprojet+smag%3Alatitude+%3Flat+%7D+%0D%0A%09%09%09%09%0D%0A+OPTIONAL+%7B+%3Fprojet+smag%3Alongitude+%3Flon+%7D+%0D%0A%09%09%09%09%0D%0A%7D%0D%0A%09%09%09%09%09%0D%0AORDER+BY+DESC%28%3Fprojet%29&output=xml&stylesheet=%2Fxml-to-html.xsl


récupérer les sous-classes (Agent, Group, Organisation)  sur http://lov.okfn.org/dataset/lov/sparql



PREFIX foaf:<http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

### Vocabularies contained in LOV and their prefix
SELECT DISTINCT ?sousClasse {
  GRAPH <http://xmlns.com/foaf/0.1/>{
   ?sousClasse rdfs:subClassOf foaf:Agent
   
}} ORDER BY ?sousClasse

http://lov.okfn.org/dataset/lov/sparql?query=PREFIX+foaf%3A%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0APREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0A+%0A%23%23%23+Vocabularies+contained+in+LOV+and+their+prefix%0ASELECT+DISTINCT+%3FsousClasse+%7B%0A+%09GRAPH+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%7B%0A+%09++%3FsousClasse%09rdfs%3AsubClassOf+foaf%3AAgent%0A+%09+%0A%7D%7D+ORDER+BY+%3FsousClasse


Recuperer les propriétés des sous classes de la classe foaf:Agent  sur http://dbpedia.org/sparql/ (changer le graphe en http://xmlns.com/foaf/0.1/)

PREFIX foaf:<http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT DISTINCT ?sousClasse ?propriete ?objet {
 
   ?sousClasse rdfs:subClassOf foaf:Agent.
?sousClasse ?propriete ?objet.

 
} ORDER BY ?sousClasse

ou au format JSON :
http://dbpedia.org/sparql/?default-graph-uri=http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F&query=PREFIX+foaf%3A%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0D%0APREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0A+%0D%0ASELECT+DISTINCT+%3FsousClasse+%3Fpropriete+%3Fobjet+%7B%0D%0A+%09%0D%0A+%09++%3FsousClasse%09rdfs%3AsubClassOf+foaf%3AAgent.%0D%0A%3FsousClasse+%3Fpropriete+%3Fobjet.%0D%0A%0D%0A+%09+%0D%0A%7D+ORDER+BY+%3FsousClasse&format=application%2Fsparql-results%2Bjson&timeout=30000&debug=on


REcuperer les sous-classes d'une schema:Action : sur http://lod.openlinksw.com/sparql/


SELECT DISTINCT ?Action WHERE {
?Action <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://schema.org/Action>
 }

--> resultat :
http://lod.openlinksw.com/sparql/?default-graph-uri=&query=SELECT+DISTINCT+%3FAction+WHERE+%7B%0D%0A%3FAction+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23subClassOf%3E+%3Chttp%3A%2F%2Fschema.org%2FAction%3E%0D%0A+%7D+&format=text%2Fhtml&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=30000&debug=on


REQUETE POUR RECUPERER les informations sur un projet :

select DISTINCT ?propriete ?objet ?labelObject ?commentaire ?labelCommentaire ?userCommentaire ?element ?labelElement where {
<http://smag0.blogspot.fr/ns/smag0#P1431363569> ?propriete ?objet .
OPTIONAL{?objet  <http://www.w3.org/2000/01/rdf-schema#label> ?labelObject .}

OPTIONAL { <http://smag0.blogspot.fr/ns/smag0#P1431363569>  <http://smag0.blogspot.fr/ns/smag0#hasComment> ?commentaire .}
OPTIONAL {?commentaire <http://www.w3.org/2000/01/rdf-schema#label> ?labelCommentaire .}
OPTIONAL {?commentaire <http://smag0.blogspot.fr/ns/smag0#user> ?userCommentaire .}

OPTIONAL { <http://smag0.blogspot.fr/ns/smag0#P1431363569>  <http://purl.org/dc/terms/hasPart> ?element .}
OPTIONAL {?element <http://www.w3.org/2000/01/rdf-schema#label> ?labelElement .}

}

ou plus simple : pour recupérer les infos d'un projet et leur type :


PREFIX rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX smag:   <http://smag0.blogspot.fr/ns/smag0#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX dcterms: <http://purl.org/dc/terms/>

SELECT  ?propriete ?objet  ?objectLabel ?objectType
 WHERE {
<http://smag0.blogspot.fr/ns/smag0#P1431250984> ?propriete ?objet .
OPTIONAL{?objet  rdf:label  ?objectLabel .}
OPTIONAL{?objet  rdf:type        ?objectType  .}
}

résultat ici