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 :
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 |-}
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
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
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 ) :
http://fuseki-smag0.rhcloud.com/ds/query?query=select+*+where%7B%0D%0A%0D%0A%3Fs+%3Fp+%3Fo%7D%0D%0A&output=xml&stylesheet=%2Fxml-to-html.xsl
ou en plus funky ici : http://smag-smag0.rhcloud.com/visu.jsp
ou en plus funky ici : http://smag-smag0.rhcloud.com/visu.jsp
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