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

Introduction

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.

Avec le Web Sémantique

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:

 Composant générique DomainApplication

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.

Problématiques de la génération de formulaires

Recherche Internet: semantic web RDF "forms" field

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

http://jena.apache.org/documentation/javadoc/jena/com/hp/hpl/jena/reasoner/rulesys/OWLFBRuleReasoner.html

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é ???????