sparna-git / Sparnatural

Sparnatural : visual SPARQL query builder for knowledge graphs in the browser, configurable with SHACL
http://sparnatural.eu
GNU Lesser General Public License v3.0
222 stars 41 forks source link

Ability to mark part of the graph pattern OPTIONAL (in AND and WHERE) #148

Closed tfrancart closed 2 years ago

tfrancart commented 4 years ago

This is an option to the "AND" operator, to give the ability to say "AND OPTIONNALY"... See mockup :

image

antoine37120 commented 4 years ago

Pour la représentation d'une liaison optionnelle pour un ET, nous pourrions simplement utiliser des pointillés pour le trait. Reste à trouver une ergonomie pour la sélection. Une première idée pourrait être de permuter en option ou non en cliquant sur le "(ET)" de la liaison avec une info bulle en survol pour informer de l'action possible à réaliser.

tfrancart commented 4 years ago

Pour la représentation d'une liaison optionnelle pour un ET, nous pourrions simplement utiliser des pointillés pour le trait.

Excellente idée !

Une première idée pourrait être de permuter en option ou non en cliquant sur le "(ET)" de la liaison avec une info bulle en survol pour informer de l'action possible à réaliser.

Carrément !

Et il faut aussi penser à la conséquence sur la génération de la requête SPARQL.

tfrancart commented 4 years ago

Attention on doit aussi pouvoir marquer un "Where" Optionnel

tfrancart commented 4 years ago

Possibulité d'avoir une sorte de "menu" autour des WHERE et des AND pour activer certaines options, dont le OPTIONAL :

image

Inspiration : http://en.lodlive.it/?http://dbpedia.org/resource/Pablo_Picasso

tfrancart commented 4 years ago

Ce sera forcément une seule option parmi celle disponible

tfrancart commented 4 years ago

Prévoir 4 entrées dans le menu :

  1. Activer le OPTIONAL oui/non
  2. Activer le UNION oui/non
  3. Activer le SERVICE, avec input text dans un mini-dialogue pour saisir une URL
  4. Activier le GRAPH, avec dropdown list dans le mini-dialogue pour choisir un GRAPH
antoine37120 commented 2 years ago

@tfrancart la fonctionnalité commence à être pas mal implémentée tant sur le design que sur le traitement de la requête Le chargement d'une sauvegarde n'est pas encor traité. Il y a des éléments à revoir ensemble. Je ne suis pas certain que cela soit bon dans le cas de 2 critères frères. Comme les variables des status des option sont dans la branche et non les lignes, une option choisi pour un critère s'applique à tous ces frères. Je ne me rappel pas que cela était souhaitable.

En tout cas voici ce que cela donne pour le moment image

Voici la requête générée, tu comprendra mieux pourquoi cela est erroné quand il y a des critères frères. Nous en parlons demain.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia: <http://dbpedia.org/ontology/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT DISTINCT (STR(?label) AS ?nom) ?wikipedia ?this WHERE {
  ?this rdf:type dbpedia:Country;
    ^<http://dbpedia.org/ontology/country> ?Museum_1.
  ?Museum_1 rdf:type dbpedia:Museum.
  FILTER(NOT EXISTS {
    ?Museum_1 ^<http://dbpedia.org/ontology/museum> ?Artwork_2.
    ?Artwork_2 rdf:type dbpedia:Artwork.
    ?Artwork_2 dbpedia:author ?Person_3.
    ?Person_3 rdf:type <http://dbpedia.org/ontology/Person>.

  })
  OPTIONAL {
    ?Museum_1 ^<http://dbpedia.org/ontology/museum> ?Artwork_5.
    ?Artwork_5 rdf:type dbpedia:Artwork.
    ?Artwork_5 dbpedia:museum ?Museum_6.
    ?Museum_6 rdf:type dbpedia:Museum.
  }
  FILTER(NOT EXISTS {
    ?Museum_1 ^<http://dbpedia.org/ontology/museum> ?Artwork_2.
    ?Artwork_2 rdf:type dbpedia:Artwork.
    ?Artwork_2 dbpedia:author ?Person_3.
    ?Person_3 rdf:type <http://dbpedia.org/ontology/Person>.

  })

  ?this rdfs:label ?label FILTER(lang(?label) = 'fr') 
  ?this <http://xmlns.com/foaf/0.1/isPrimaryTopicOf> ?wikipedia 
}
ORDER BY ?label LIMIT 5000
antoine37120 commented 2 years ago

@tfrancart Vu comment cela est avancé, je pense que nous pouvons nous sentir confiant pour la semaine prochaine.

tfrancart commented 2 years ago

Chouette merci. C'est génial. Pense à entourer les lignes des critères en pointillés pour que tout le sous-bloc soit bien visible. Je vois aussi quelques glitch d'affichage, il faudrait qu'on regarde ensemble. Le problème de la génération de requête vient de cette ligne : https://github.com/sparna-git/Sparnatural/blob/issue-148/src/QueryGenerators.js#L30 Comme ca prend tous les "siblings", mêmes les "lignes frères" au deuxième niveau viennent s'ajouter au premier niveau. Dans cette ligne de code on veut selectionner seulement les lignes du premier niveau de la requête, tu sais faire ?

Le jeu. 11 nov. 2021 à 22:32, antoine37120 @.***> a écrit :

@tfrancart https://github.com/tfrancart Vu comment cela est avancé, je pense que nous pouvons nous sentir confiant pour la semaine prochaine.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sparna-git/Sparnatural/issues/148#issuecomment-966640853, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAU2H4KMMG2LGDPSANLSHKTULQZAHANCNFSM4LEI6S4A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--

Thomas Francart - SPARNA Web de données | Architecture de l'information | Accès aux connaissances blog : blog.sparna.fr, site : sparna.fr, linkedin : fr.linkedin.com/in/thomasfrancart tel : +33 (0)6.71.11.25.97, skype : francartthomas

tfrancart commented 2 years ago
  1. Corrigé les pointillés
  2. Styler le trait du AND et le bouton quand un critère ancêtre est optionnel/négatif
  3. Ne pas styler le trait du AND quand le optionnel ou le négatif sont positionnés sur la ligne elle-même et pas sur un ancêtre
  4. Remettre les flèches blanches sur la partie gauche du EndCriteriaGroup
  5. Ajouter les pointillés autour des lignes quand optionnel/négatif, lignes avec option incluses
  6. Traductions :
    • FR : optionnel / négatif
    • EN : optional / not exists
  7. Afficher la petite flèche dès le début de la saisie du critère en gris très très pâle
  8. Penser/prévoir que le optionnel/négatif pourra être désactivé pour certaines propriétés et donc la flèche restera en très très pâle
antoine37120 commented 2 years ago

@tfrancart Tous les points ont été repris, tu peux inspecter.

tfrancart commented 2 years ago

Ca c'est efficace !

  1. Les pointillés ne sont pas de la même épaisseur/espacement sur le cadre et sur les liens, ca fait bizarre:

image

  1. Petit souci d'affichage sur la croix de suppression : image

  2. On met un critère enfant négatif, la flèche du parent se grise. on supprime le critère enfant, la flèche du parent devrait redevenir verte - mais elle reste grise.

  3. Ajouter le rechargement des queries avec optional/négatif

  4. Voir le display flex sur option/négatif et sur le bloc des valeurs

antoine37120 commented 2 years ago

@tfrancart L'issue fixée pour prendre en compte la config si les options sont activées ou non. Des corrections ont été réalisées pour faire suite à la séparation des fonctions dans plusieurs fichier. En réalisant les corrections, j'ai pu voir qu'il fallait aussi prendre en compte si il y avait de options dans les menus des enfants et parents du critère contenant l'option activée ou désactivée avant de réactiver ou non les menu des options. Un css a été ajouté pour attribué le curseur de souris par défaut si les menu des options sont désactivés.

tfrancart commented 2 years ago

merci @antoine37120 il faudrait aussi laisser le curseur de la souris par défaut sur le gris clair, avant d'avoir fini de saisir tout le critère.

image

Après ça je merge.

antoine37120 commented 2 years ago

@tfrancart fix envoyé

tfrancart commented 2 years ago

Done in release V6