sparna-git / Sparnatural-yasgui-plugins

Set of Plugins for Yasgui / YASR useful in conjunction with Sparnatural
http://sparnatural.eu
GNU Lesser General Public License v3.0
2 stars 1 forks source link

fonctions de "Adapting the URL of the link" ne fonctionnent pas #19

Closed ArielNATAF closed 2 months ago

ArielNATAF commented 2 months ago

Bonjour,

Pour le contexte j'essaie d'intégrer sparnatural à mon app en Vuejs 3 et Vite. Mais je rencontre le problème que les URI des entities ne sont pas correctement pré processées. Donc j'essaie d'intégrer votre plug-in pour corriger ce problème. En suivant la doc j'ai réussi à implémenter la première partie pour masquer les URI sur le tableau des résultats.

Toutefois quand j'essaie d'appliquer la partie "Adapting the URL of the link" je fais chou blanc.

Avec

      Yasr.registerPlugin("TableX",SparnaturalYasguiPlugins.TableX);
      console.log(Yasr.plugins.TableX.defaults);

le console.log me retourne l'objet suivant:

{
    "openIriInNewWindow": true,
    "includeControls": false,
    "tableConfig": {
        ...
    }
}

Donc les appels de Yasr.plugins.TableX.defaults.uriHrefAdapter et bindingSetAdapter ne mènent à rien car elles sont undefined.

Pour illustré mon problème en prenant l'exemple du hello-spar natural avec les musées:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?Country_1 ?Country_1_label WHERE {
  ?Country_1 rdf:type <http://ontologies.sparna.fr/sparnatural-demo-dbpedia#Country>.
  OPTIONAL {
    ?Country_1 <http://ontologies.sparna.fr/sparnatural-demo-dbpedia#label_select-only> ?Country_1_label.
    FILTER((LANG(?Country_1_label)) = "en")
  }
  ?Country_1 <http://ontologies.sparna.fr/sparnatural-demo-dbpedia#countryOf> ?Museum_2.
  ?Museum_2 rdf:type <http://ontologies.sparna.fr/sparnatural-demo-dbpedia#Museum>.
}
LIMIT 1000

avec des <http://ontologies.sparna.fr/sparnatural-demo-dbpedia#Country> au lieu de <http://dbpedia.org/ontology/Country> et <http://www.w3.org/2000/01/rdf-schema#label>.

Merci pour le travail que vous réalisez et merci aussi d'avance pour votre aide.

tfrancart commented 2 months ago

Donc les appels de Yasr.plugins.TableX.defaults.uriHrefAdapter et bindingSetAdapter ne mènent à rien car elles sont undefined.

Il faut les définir vous même, dans votre page HTML. Voir les exemples dans la doc à http://docs.sparnatural.eu/YasGUI-plugins.html#adapting-the-url-of-the-link, et cet exemple d'utilisation dans une page HTML : https://github.com/sparna-git/sparnatural.eu/blob/main/demos/demo-dbpedia-v2/index.html#L450 (https://sparnatural.eu/demos/demo-dbpedia-v2/)

ArielNATAF commented 2 months ago

Merci pour la réponse immédiate!

J'aurais du le préciser, j'ai essayé la méthode de la doc:

Yasr.plugins.TableX.defaults.uriHrefAdapter = function(uri)  {
        console.log('%cYasr.plugins.TableX.defaults.uriHrefAdapter', 'background: #DE2F62; color: #EDF7BE')
        return uri;
      };

mais en lançant la query la fonction n'est pas appelée dans le plug-in. Je peux appeler la fonction directement dans ma partie du code mais je n'aurais pas l'argument d'uri isolé. C'est peut être un problème propre à la compilation par Vite.

Je vais probablement faire ma propre fonction avec une regex pour isoler les uri entre < > et les remplacer en m'inspirant de votre implémentation dans demo-dbpedia-v2/index.html#L450.

D'ailleurs à quoi est du la mauvaise lecture du fichier ttl ? et pourquoi corriger l'uri à l'étape de Yasr et pas directement à l'entrée dans le Yasqe?

tfrancart commented 2 months ago

J'aurais du le préciser, j'ai essayé la méthode de la doc:

Il faut bien le faire avant de lancer le constructeur de Yasr (new Yasr(...)), est-ce bien votre cas ?

D'ailleurs à quoi est du la mauvaise lecture du fichier ttl ?

Quelle mauvaise lecture ?

et pourquoi corriger l'uri à l'étape de Yasr et pas directement à l'entrée dans le Yasqe?

Cette fonction adapte les URIs dans le tableau de résultats, pas dans la query. Ce qu'on veut c'est par exemple, quand on a une URI DBPedia, construire une URL vers la page Wikipedia parce que c'est plus sympa pour l'utilisateur. Ca n'a rien à voir avec la query, c'est une pure question de lien de navigation pour l'utilisateur.

ArielNATAF commented 2 months ago

Grâce à votre réponse je réalise que j'ai mal compris l'utilisation de la fonction pour commencer. (et qu'il faudrait que je retrouve mes cours de web semantique...)

En revenant à mon premier message :

avec des <http://ontologies.sparna.fr/sparnatural-demo-dbpedia#Country> au lieu de <http://dbpedia.org/ontology/Country> et <http://www.w3.org/2000/01/rdf-schema#label>.

Quand je parle de lecture du ttl c'est que je n'ai pas le preprocessing vers les bonnes uri dans ma requete ce qui me donne un tableau vide.

Mon intention était d'exécuter la requête avec les uri correctes car la requête que je reçois avec les ontologies.sparna.fr me rend un tableau vide. C'est donc logique que la fonction ne soit jamais appelée car elle n'a aucune URL à construire pour l'utilisateur. En faisant avec les URI correctes j'ai bien des appels de fonctions pour chaque ligne de résultat.

Donc je vais clore le thread car à ça n'a pas sa place dans le dépôt du plug in.

Vous faites un excellent travail.