-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Supprimer des relations inverses #173
Comments
Avec SemApps nous faisons un usage intensif des relations inverses, cela nous permet de créer automatiquement ces relations et de fournir des pages plus riches. Par exemple Ping @simonLouvet |
0n est donc bien sur une question d'affichage et de navigation. Pourquoi ne pas faire une requête pour récupérer les liens entrants sur une ressource ? Vous partez du principe que l'information qui est affichée à l'écran doit être la même que la structure du graphe sous-jacent. C'est trop simple. Les 2 niveaux (structure du graphe et présentation à l'écran) doivent pouvoir être décorellés. D'autant que sur un Topic par exemple, qui sert de pivot et qui va être référencé par plein d'objets, on va avoir beaucoup de liens entrants, donc une liste très longue qui ne sera pas utilisable au final.
Pour les propriétés que je propose de supprimer, c'est parce qu'il me semble qu'elles sont toujours saisis dans le sens que je propose de conserver. Pour saisir un sujet, je pars du principe qu'on est sur une fiche d'entité et qu'on saisit son lien "hasTopic", on ne se met pas sur la page du Topic pour référencer toutes les entités dont ce Topic est le sujet. Notez que je ne propose pas de supprimer toutes les inverses, mais les inverses entre des niveaux conceptuels différents. |
Pour l'interface SemApps, nous faisons surtout des requêtes LDP simples, qui permettent de retourner toutes les relations d'une ressources. S'il fallait doubler ça avec des requêtes SPARQL, cela compliquerait beaucoup le code. Et cela poserait des problèmes de performances, car pour le moment les ressources LDP utilisent un cache Redis et leur requête est hyper rapide, tandis que les SPARQL sont plus lentes et utilisent plus de ressources serveurs (ce qui peut poser un problème quand le nombre de visiteurs sur une instance augmente).
Pas utilisable, pourquoi ? C'est juste une question de créer une interface adaptée.
Aucun de ces problèmes ne me semblent insurmontables, surtout si on est plusieurs à assurer la maintenance. Et je ne trouve pas que les relations inverses posent un souci aux utilisateurs, au contraire si elles n'existaient pas et qu'il fallait les "deviner", cela deviendrait compliqué à expliquer.
C'est pourtant ce qu'on fait sur plusieurs instances, et ça a du sens. Par exemple sur cette instance en cours de dev: |
Parce qu'à un moment, un listing de centaines ou de milliers d'entités ne sert plus à rien.
Ca a peut-être du sens pour le genre de projets que fait l'AV, mais je vois au moins 2 raisons pour lesquelles on ne saisit pas une relation entre un Concept (au sens SKOS, cad une entrée dans une terminologie / un vocabulaire contrôlé) et une autre entité depuis la fiche du Concept:
Vos projets ont sans doute leurs spécificités mais je n'ai jamais vu aucun système à base de graphe où les indexations étaient exprimées depuis la fiche des Concepts. |
Helloo ! Mince la discussion semble être arrêtée ... J'ai l'impression qu'il y a des arguments valables des 2 côtés. Les problématiques liées à LDP / Sparql listées ci-dessous sont solubles à ton avis @tfrancart ? |
Le lun. 19 avr. 2021 à 09:59, Guillaume ***@***.***> a écrit :
Helloo !
Mince la discussion semble être arrêtée ... J'ai l'impression qu'il y a
des arguments valables des 2 côtés.
Les problématiques liées à LDP / Sparql listées ci-dessous sont solubles à
ton avis @tfrancart <https://github.com/tfrancart> ?
"Pour l'interface SemApps, nous faisons surtout des requêtes LDP simples,
qui permettent de retourner toutes les relations d'une ressources. S'il
fallait doubler ça avec des requêtes SPARQL, cela compliquerait beaucoup le
code.
Je pense qu'il ne s'agirait pas de doubler un appel LDP avec une requête
SPARQL depuis le client. Il s'agirait d'enrichir ce que retourne la requête
LDP pour y inclure les relations inverses (tout ce qui pointe sur le sujet
en question). Cette enrichissement se ferait sur la base d'une requête
SPARQL ou pas, je ne connais pas l'implémentation.
Et cela poserait des problèmes de performances, car pour le moment les
ressources LDP utilisent un cache Redis et leur requête est hyper rapide,
L'enrichissement du flux LDP côté serveur permettrait une mise en cache.
J'ajoute un point à la discussion pour insister sur l'importance de ces
vocabulaires contrôlés : pour maximiser l'interopérabilité entre projets,
c'est non seulement l'ontologie PAIR qui sera importante, mais également
les vocabulaires contrôlés : types d'organisation, statuts de documents,
sujets, etc... l'importance de pouvoir échanger et mettre à jour ces
vocabulaires contrôlés depuis l'extérieur du système, pour partager
certains référentiels communs, sera importante.
A ce titre 1/ les vocabulaires contrôlés devraient être isolés du reste des
données 2/ il devrait être possible de mettre à jour ces vocabulaires
contrôlés depuis l'extérieur 3/ il y a sûrement des questions de droits
d'accès à ces vocabulaires contrôlés pour que tous les utilisateurs n'aient
pas le droit de les éditer / créer 4/ le vocabulaire contrôlé a une
existence autonome du reste des données. Donc les liens d'indexation sont
mis _vers_ les concepts des vocabulaires contrôlés, et non pas _depuis_ les
fiches des concepts vers les instances.
Thomas
… tandis que les SPARQL sont plus lentes et utilisent plus de ressources
serveurs (ce qui peut poser un problème quand le nombre de visiteurs sur
une instance augmente)"
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#173 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAU2H4KDFWND56XOAPC5BALTJPPEZANCNFSM42I4FSMQ>
.
--
*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
|
Je me dis qu'il est sans doute judicieux que tu jettes un oeil à cette discussion @simonLouvet ;) |
Bonjour à tous, alors que j'étais d'accord avec @srosset81 en première posture, je comprends la position de @tfrancart et je pense qu'il à raison dans l'absolue.
|
Aucun ! pourquoi vouloir absolument une relation inverse ?
Oui !
Je ne vois vraiment pas en quoi ce n'est pas cohérent.
On parle de Concise Bounded Descriptions (CBD) des ressource, et il y a plein d' implémentations possibles pour cela. LDP spécifie seulement ceci :
Donc on est complètement agnostique sur le contenu du RDF retourné.
Là, sur toute cette partie dataProvider, je ne peux pas avoir d'avis... |
Même si je comprends que certaines relations inverses sont moins pertinentes que d'autres, je ne vois toujours pas pourquoi on ne pourrait pas laisser la liberté à chacun de choisir de les implémenter, ou pas. En tout cas si on change ça, ça va casser le code de plusieurs instances SemApps, donc j'y suis opposé, sauf si quelqu'un veut passer plusieurs heures sur le sujet (j'ai de mon côté d'autres sujets qui sont largement plus prioritaires). Ce sont des réflexions intéressantes, et on va y réfléchir, mais pour le moment je pense qu'il vaut mieux ne rien toucher à l'existant. |
Je partage l'avis de seb. Semapps n'est pas actuellement en capacité de faire autrement que d'avoir les relation inverses formalisés dans l'ontologie pour fournir l'interface et l'ergonomie attendu par les usages. Faire autrement va nous couter tu temps de réflexion / conception / R&D que nous n'avons pas encore le luxe d'avoir. Je suis donc pour créer et maintenir les relations inverses dans l'ontologie PAIR pour le moment (pas obligatoirement @tfrancart si tu n'en a pas l’énergie) et de mettre en place un chantier pour s'en passer. |
Probablement parce qu'on ne fait pas que modéliser un domaine de connaissances dans l'absolu, mais on oriente également des usages.
Si on est d'accord sur le fond et l'objectif je n'ai aucun avis sur le planning et les priorités. Ma remarque n'avait pas de caractère d'urgence. On peut continuer à maintenir les relations inverses dans PAIR jusqu'à ce que SemApps sache prendre en compte ce cas de figure. Je n'ai pas de problèmes pour continuer à les maintenir. |
Génial, vive les discussions constructives qui aboutissent à des points de vue convergents. On peut donc envisager de budgetter du temps homme pour adapter SemApps dans un temps ultérieur en vue de simplifier PAIR dans une release ultérieure :) Voici l'issue SemApps dédiée ;) assemblee-virtuelle/semapps#741 |
@tfrancart Passerelle Normandie à toujours besoin de la relation réifiées bidirectionnelle inverse entre personne et organisation. Est ce que tu peux formaliser les relations inverse sur MembershipAssociation, Organisation et Actor? Je peux donner un cop de main si besoin. |
Je remarque sur l'instance Colibris que la relation Je serai favorable à la suppression a minima des deux premiers groupes proposés par @tfrancart :
Qu'en penses-tu @simonLouvet ? |
@srosset81 je comprends mais je trouve les relation inverse toujours aussi intéressante conceptuellement (otologie). La question est donc l’implémentation. On pourrait peut être configuré le service inférence pour ne pas générer certaines relations inverses? |
Oui c'est faisable. |
il me semble intéressant de formaliser le concept de lien inverse entre 2 prédicat dans l'ontology pour ne pas perdre cette information mais de l'exploiter quand bon nous semble. Il est par exemple possible de ne pas calculer/stoker le lien inverse mais de réaliser une inférence à la lecture de données pour l'exprimer si besoin. |
La création systématique de relations inverses complique la maintenance de l'ontologie et sa compréhension.
Ce n'est pas une bonne pratique.
Je propose de supprimer des relations inverses:
dans les relations entre les "concepts" et les "sujets", garder seulement le sens sujet -> concept, donc supprimer:
dans les relations entre les entités PAIR et les concepts, garder seulement le sens entité -> concepts, donc supprimer:
dans les relations entre les sujets et le niveau "intentionel", garder seulement le sens sujet -> niveau intentionnel, donc supprimer:
Supprimer les relations inverses sur les associations, en prenant comme règle d'avoir une structure "en étoile" où les propriétés sont portées par l'association. Donc supprimer :
La suppression de ces relations inverses n'empêche pas le parcours du graphe; il y a peut-être par contre des contraintes que je ne connais pas dans SemApps et dont il faudrait qu'on discute.
The text was updated successfully, but these errors were encountered: