Formulaires
© 2014-05 Jean-Marc Vanel deductions-software.com - license Creative Commons License by-nc-nd 3.0
[Version de réference de cet article: Formulaires]
Table
Les formulaires c'est le nerf de la guerre de l'informatique.
Autrefois tout partait de la spécification d'une suite d'"écrans".
Maintenant on le fait en HTML, enfin pas toujours, car on a inventé l'orienté objet. Et une classe orientée objet n'est pas directement isomorphe à un formulaire de l'application.
On peut faire un formulaire en HTML pur, mais les nuances n'y sont pas (champs obligatoires ou non, validation). On met alors du JavaScript, ou ça retourne au serveur HTTP. Bref ça n'est pas très déclaratif.
Toutes les variétés de RAD ( Développement_rapide_d'applications ) utilisent tous des éditeurs/générateurs de formulaires, qui peuvent ou non être confondus avec les éditeurs de modèle de données. Voir une liste des Outils_RAD.
Il y a aussi les générateurs de processus métier (alias BMP, workflow) (Bonita, etc).
Il y a les formulaires en XML via XForms, liés à XML Schema.
Les principaux cadriciels Web comme Ruby on Rails, Play! ou Drupal ont leur façon de créer des formulaires, soit à partir des tables SQL, soit du modèle objet.
Dans le monde du Web Sémantique, le plus naturel est de créer un formulaire à partir d'une liste de propriétés RDF.
Si l'on veut ajouter des "nuances", le plus naturel est d'ajouter des propriétés aux champs du formulaire.
C'est ce que fait Fresnel, qui est, plus largement, un vocabulaire pour afficher des données RDF. Par exemple ceci :
:foafPersonDefaultLens rdf:type fresnel:Lens ;
fresnel:classLensDomain foaf:Person ;
fresnel:showProperties ( foaf:name
foaf:surname
foaf:depiction ) .
exprime cela: "ceci s'applique à la classe person de FOAF et c'est une vue
contenant les 3 propriétés name, surname, depiction
". La syntaxe
() exprime un ordre, ce qui convient à un formulaire.
De toute façon, Fresnel est un vocabulaire d'affichage, pas directement pour l'entrée de données. Il est cependant réutilisable à cette fin.
Un autre exemple est le composant Data manager GUI dans le cadriciel EulerGUI. A partir d'une instance (URI resource) il affiche tous les triplets directs (ou inverse) existants, et donne la possibilité d'ajouter des litéraux ou des URI, suivant que la propriété est datatype ou objet. DomainApplication est un autre composant générique qui permet de saisir une nouvelle instance d'une classe donnée. Il affiche toutes les propriétés dont le domaine correspond ( domaines inférés aussi pour super-classes ).
Voici un example du composant générique DomainApplication, avec 2 icônes de création d'instance ( personne FOAF et musique de Musical Ontology) , après avoir appuyé sur la première icône. Toutes les propriétés du domaine personne FOAF sont affichées:
Quelques références sur Fresnel :
http://www.w3.org/2005/04/fresnel-info/
Présentation : https://www.lri.fr/~pietriga/2006/11/fresnelISWC06.pdf
http://www.w3.org/2005/04/fresnel-info/manual/
Hélas, après un intérêt entre 2004 et 2008, Fresnel n'a plus été implémenté, sauf récemment comme on va voir plus loin.
propriétés mono ou multi-valuées,
datatype éventuel (aussi géocoordonnées);
langue;
types de médias pour URL: image, son, vidéo
se lier à un URI connu possible limité par son type
valeur littérale : validation
propriétés mono-valuées (le défaut pour édition) ou multi-valuées (déclaration via OWL)
énumération (déclaration via OWL)
<SUJET> ?P ?V. ?V
?P1 ?V1.
typiquement ?V représente une resource liée seulement à <SUJET>, comme l'adresse de quelqu'un;
c'est souvent un noeud anonyme (blank node);
( correspond à la notion d'agrégation en UML, ou en SQL delete en cascade)
il convient de détecter et afficher ces triplets "secondaires", comme le fait VIE
comment ? un prédicat portant sur le prédicat ?P
présent dans l'instance,
provient de telle classe via domaine et super-classe;
triplets directs ou inverses,
prédicats standards, qui peuvent être partout , comme
rdfs:label
axiomes OWL ( raisonnement inductif possible ?)
Une recherche avec
semantic web RDF "Forms" field
donne quelques resources:
http://www.swcs2013.org/SWCS-Rutledge-final2.pdf
http://semantic-mediawiki.org/wiki/SMWCon_Fall_2013/OWL_Wiki_Forms_%28OWF%29:_A_Style_Language_that_Generates_Wikis_from_Semantic_Web_Ontologies
http://fr.slideshare.net/Lloyd.Rutledge/smwcon-fall-2013-owl-wiki-forms
https://groups.drupal.org/node/152939
http://mes.github.io/marbles/ a server-side application that formats Semantic Web content for XHTML clients using Fresnel lenses and formats. Colored dots are used to correlate the origin of displayed data with a list of data sources, hence the name.
http://dzineblog.com/2012/01/guide-to-building-semantic-web-forms.html
Semantic Forms in Drupal: Making the Semantic Web Usable ...
https://groups.drupal.org/node/152939
1 juin 2011 - 6 messages - 4 auteurs
Are there any current initiatives for semantic forms in Drupal? ... make it easy for people to use semantic identifiers as values in form fields. .... work the Web application does doesn't need to be SemWeb-y... the RDF just needs ...
Help:SMW extensions - semantic-mediawiki.org
https://semantic-mediawiki.org/.../Help:SMW_extensi...
11 juin 2013 - 1.1 Semantic Forms; 1.2 Semantic Image Input; 1.3 Semantic Forms Inputs ... 2.1 Frequent Pattern Tag Cloud; 2.2 Semantic Drilldown; 2.3 Semantic Web Browser; 2.4 SolrStore ... 5 Storing data via an RDF triplestore ... property helps determine what sort of input will show up for that field in the form.
Guide to Building Semantic Web Forms - DzineBlog.com
dzineblog.com/.../guide-to-building-semantic...
De Jake Rocheleau - Dans 1 977 cercles Google+
18 janv. 2012 - Semantic forms deal with the concept of data-driven web forms and how ... This doesn't work so well on password fields since the placeholder ...
Le plus prometteur est le premier article (à la 10th Extended Semantic Web Conference, ESWC 2013, Montpellier, France, May 27th, 2013), qui commence par "nous décrivons une transformation à partir d'une ontologie OWL vers des données de style Fresnel, et de là vers des wikis sémantiques à base de formulaires" , et intitulé:
From Ontology to Wiki – Generating Cascadable Default
Fresnel Style from Given Ontologies for Creating
Semantic Wiki Interfaces
Lloyd Rutledge
OWF utilise SPARQL 1.1 à la fois pour accéder aux ontologies, et pour inférer et écrire les spécifications Fresnel dans la base SPARQL.
Donc cette partie est indépendante de Semantic Media Wiki (un gros pâté de PHP et SQL).
http://is.cs.ou.nl/OWF/index.php5/Main_Page
http://is.cs.ou.nl/OWF/index.php5/OWL_Wiki_Forms_v0.2_installation
Quand on regarde là-dedans, il y a surtout les 444 lignes de SpecialOWLwikiForms.php , et là -dedans la partie "utile" est la
function ontos2DefFresnel ( $inOntosStr )
Et, dans cette fonction, 2 requêtes SPARQL, une pour les propriétés avec un ou plusieurs domaines affirmés ou or inferrés, et une pour les autres propriétés.
Voici la 1ère, brute en PHP avec insertion SPARQL:
endpointUpd ( <<<EOT INSERT { ?lensuri rdf:type fresnel:Lens ; fresnel:classLensDomain ?domain ; fresnel:showProperties ?prop . } WHERE { ?prop a rdf:Property ; rdfs:domain ?domain . FILTER ( ! bound(?subDomain) ) FILTER ( ! regex(str( ?prop ), "http://www.w3.org/1999/02/22-rdf-syntax-ns#" ) ) FILTER ( ! regex(str( ?prop ), "http://www.w3.org/2000/01/rdf-schema#" ) ) FILTER ( ! regex(str( ?prop ), "http://www.w3.org/2002/07/owl#" ) ) FILTER ( ! regex(str( ?prop ), "http://www.w3.org/2004/09/fresnel#" ) ) BIND(IRI(CONCAT(" EOT . WIKIURI . 'defaultLens", ' . <<<EOT REPLACE(str(?domain), "[^A-Za-z0-9]", "", "i" ) )) AS ?lensuri) OPTIONAL { ?prop rdfs:domain ?subDomain . ?subDomain rdfs:subClassOf ?domain . FILTER ( ! sameterm ( ?domain , ?subDomain) ) } } EOT );
Simple et parfaitement réutilisable !
Cependant ça ne va pas très loin, en fait ça réutilise le raisonneur de Fuseki qui s'appelle :
<http://jena.hpl.hp.com/2003/OWLFBRuleReasoner> .
via cette confiuguration:
<#OWF> a ja:RDFDataset ; rdfs:label "OWF" ; ja:defaultGraph [ rdfs:label "OWF" ; ja:reasoner <#Reasoner> ] . <#Reasoner> ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner> .
C'est quelque chose qui n'est pas très bien documenté sur les sites Jena :
http://jena.apache.org/documentation/serving_data/#fuseki-configuration-file
http://jena.apache.org/documentation/assembler/index.html
http://jena.apache.org/documentation/inference/#OWLconfiguration
Does Jena TDB and Jena Inference infrastructure can work together?
Y a t-il un site où OWF est déployé ???????