EcrituresNumeriques / stylo

Stylo est un éditeur de textes pour articles scientifiques en sciences humaines et sociales.
https://stylo.huma-num.fr
GNU General Public License v3.0
48 stars 13 forks source link

Tri des données pour le premier scénario de métadonnées (les articles de revue) #1019

Open RochDLY opened 2 weeks ago

RochDLY commented 2 weeks ago

Ce ticket comporte les éléments nécessaires à la création d'un premier scénario de métadonnées pour la refonte de ce composant (tout ça doit être accessible depuis l'article Stylo).

Les métadonnées sont présentées comme suit : Nom courant (nom technique)(type)(obligatoire)

J'ai découpé les métadonnées en "groupes" pour plus de lisiblité et créé des objets pour éviter la redondances dans le ticket (par exemple, un traducteur ou un auteur appelle l'objet 'individu" qui contient les champs noms, prénoms, etc.).


Objet individu:


Groupe des personnes :


Groupe des données de l'article :

*pour les articles de Sens Public, ajouter :


Groupe de données du dossier :

?(dossier:)

*On a pas ces données mais elles pourraient être utiles


Groupe de données de la production :



Groupe de données sur la revue :

Questions

  1. Dans le volet des métadonnées actuel il y a un mini gestionnaire de rendu des références bibliographiques avec les entrées citation link: yes or no et display : all citations or only used. Cette question est déjà référencée dans la #929 : ne devrait-ont pas déplacer ce paramétrage dans le gestionnaire de références bibliographiques plutôt que de le gestionnaire de métadonnées ? (en gros ce paramètre ajoute une clef nocite dans les métadonnées que Pandoc traite lors de la transformation, mais ce ne sont pas des données sur l'article; le deuxième paramètre ajout une clef link-citations pour la même raison)
  2. Il y a plusieurs données qui font l'objet d'un *, ce sont soit des propositions d'ajout à discuter (et à vérifier si elles existent dans le schéma COMMONS, soit qu'elles ne concerne qu'une seule revue.
maiwann commented 1 week ago

Noms

Est-il nécessaire d'avoir 2 cases séparées pour les prénoms et noms ? Dans certaines cultures, la séparation n'est pas si nette : https://www.w3.org/International/questions/qa-personal-names.fr

Est-ce qu'avoir un champ unique ferait l'affaire ?

maiwann commented 1 week ago

Titres traduits

Dans la liste, il est indiqué :

  • Titre de l'article (title_f)(str)(obligatoire)
  • Titre traduit (translatedTitle:)
    • langue (lang)(select language)
    • titre (text_f)(str)

Est-ce qu'il serait pertinent de préciser la langue du "Titre de l'article" ? Et si oui, est-ce qu'une représentation pourrait être plutôt qu'il y a 1 ou plusieurs titres, avec à chaque fois associé à un titre une langue ?

Sous-titres

Les sous-titres doivent-ils être eux aussi associés à une langue ?

maiwann commented 1 week ago

Affiliations

Affiliations doit accepter plusieurs entrées, mais doivent-elles être dans des champs séparés ? (a priori je dirais non mais je préfère avoir confirmation)

maiwann commented 1 week ago

Mots-clés

Les mots clés sont ils associés à une langue ?

RochDLY commented 1 week ago

Noms

Est-il nécessaire d'avoir 2 cases séparées pour les prénoms et noms ? Dans certaines cultures, la séparation n'est pas si nette : https://www.w3.org/International/questions/qa-personal-names.fr

Est-ce qu'avoir un champ unique ferait l'affaire ?

À mon avis il est préférable de garder les deux séparés pour plusieurs raisons : 

RochDLY commented 1 week ago

Mots-clés

Les mots clés sont ils associés à une langue ?

Les mot-clés standards oui, on associe toujours les mot-clefs a une langue (on peut mettre plusieurs langues et plusieurs mot-clefs associés à chaque langue)

Les mot-clefs contrôlés sont alignés sur le vocabulaire RAMEAU, on a pas de sélecteur de langue dans Stylo parce que RAMEAU l'intègre directement dans son vocabulaire

RochDLY commented 1 week ago

Titres traduits

Dans la liste, il est indiqué :

  • Titre de l'article (title_f)(str)(obligatoire)
  • Titre traduit (translatedTitle:)

    • langue (lang)(select language)
    • titre (text_f)(str)

Est-ce qu'il serait pertinent de préciser la langue du "Titre de l'article" ? Et si oui, est-ce qu'une représentation pourrait être plutôt qu'il y a 1 ou plusieurs titres, avec à chaque fois associé à un titre une langue ?

Sous-titres

Les sous-titres doivent-ils être eux aussi associés à une langue ?

A priori je dirai que que la langue du titre de l'article est la même que la langue de l'article (cette info est déjà présente dans Stylo, je la rajoute dans le modèle au-dessus, j'ai dû la zapper)

antoinentl commented 1 week ago

Je me permets une précision à propos du titre en plusieurs langues : certaines revues ont besoin d'avoir le titre traduit dans plusieurs langues, comme c'est le cas pour les résumés. Donc oui il serait pertinent d'avoir une représentation avec plusieurs titres et la langue associée à chaque fois.

ggrossetie commented 1 week ago

Je me demande s'il ne serait pas intéressant de se donner la possibilité de revoir le nommage et la structure des métadonnées existantes. De ce que je comprends, il y aura de toute façon un travail "important" sur les templates.

Par exemple, pour les traductions on pourrait avoir structure comme suit :

{
  "title": {
    "default": "Titre principal du document",
    "translations": {
      "fr": "Titre en français",
      "en": "Title in English",
      "jp": "日本語のタイトル"
    }
  }
}
RochDLY commented 1 week ago

Ca me semble être une bonne idée, surtout si cela peut alléger un peu toute cette structure. Par contre est-ce que tu as une idée de comment gérer la rétrocompatibilité avec tous les articles existant ?

ggrossetie commented 1 week ago

Ca me semble être une bonne idée, surtout si cela peut alléger un peu toute cette structure. Par contre est-ce que tu as une idée de comment gérer la rétrocompatibilité avec tous les articles existant ?

Je pense qu'il faudra faire une migration du YAML existant vers la nouvelle structure :

title_f: "Titre principal du document"
translatedTitle:
  lang: "en"
  text_f: "Title in English"
{
  "title": {
    "default": "Titre principal du document",
    "translations": {
      "en": "Title in English"
    }
  }
}

Le nouveau composant des métadonnées s’appuiera sur cette nouvelle structure.

ggrossetie commented 1 week ago

Je pense que ça serait une bonne idée de clarifier la notion de title_f (formatted) et title. Est-ce qu'on distingue les champs texte (brute) des champs texte où on accepte de la syntaxe Markdown ? Est-ce qu'on supporte uniquement un sous-ensemble de la syntaxe Markdown ? Comment est-ce qu'on doit passer les informations au(x) template(s) ? Est-ce qu'il faut avoir une version texte brute (sans les balises Markdown) et une version avec les balisages ? est-ce qu'il faut fournir une version rendu du texte (au format HTML) ?

marviro commented 1 week ago

title_f envoie le texte tel quel il a été inséré par l'utilisateur (donc avec balises md s'il y en a). title envoie le texte brut après avoir retiré les balises - c'est la clé utilisée pour faire par ex les métadonnées en html dans la balise où on ne peut pas mettre de balises. N'est-ce pas @davidbgk ?</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/ggrossetie"><img src="https://avatars.githubusercontent.com/u/333276?v=4" />ggrossetie</a> commented <strong> 5 days ago</strong> </div> <div class="markdown-body"> <blockquote> <p>title_f envoie le texte tel quel il a été inséré par l'utilisateur (donc avec balises md s'il y en a). title envoie le texte brut après avoir retiré les balises - c'est la clé utilisée pour faire par ex les métadonnées en html dans la balise <title> où on ne peut pas mettre de balises.</p> </blockquote> <p>Est-ce que le texte de <code>title_f</code> est utilisé tel quel dans le template ? Est-ce qu'on utilise le titre "rendu" (HTML ?) de <code>title_f</code> quelque part ?</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/RochDLY"><img src="https://avatars.githubusercontent.com/u/43650596?v=4" />RochDLY</a> commented <strong> 4 days ago</strong> </div> <div class="markdown-body"> <p>Il est au moins utilisé dans la preview HTML, voir le <a href="https://framagit.org/stylo-editeur/templates-stylo/-/blob/master/templateHtml5-preview.html5?ref_type=heads#L379">template</a></p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/ggrossetie"><img src="https://avatars.githubusercontent.com/u/333276?v=4" />ggrossetie</a> commented <strong> 4 days ago</strong> </div> <div class="markdown-body"> <p>De ce que je vois on utilise le texte tel quel ? Donc si j'ai : <code>Un _titre_ de livre</code>, dans la preview on aura les underscores ? 🤔</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/marviro"><img src="https://avatars.githubusercontent.com/u/14794035?v=4" />marviro</a> commented <strong> 4 days ago</strong> </div> <div class="markdown-body"> <p>Roch renvoie au mauvais template.</p> <p>Exemple d'utilisation de <code>title</code> : <a href="https://gitlab.huma-num.fr/ecrinum/stylo/stylo-export/-/blame/main/templates/generique/templateHtml5.html5?ref_type=heads#L27">https://gitlab.huma-num.fr/ecrinum/stylo/stylo-export/-/blame/main/templates/generique/templateHtml5.html5?ref_type=heads#L27</a></p> <p>Exemple d'utilisation de <code>title_f</code> (qui est donc utilisé "rendu", à savoir transformé par pandoc): <a href="https://gitlab.huma-num.fr/ecrinum/stylo/stylo-export/-/blame/main/templates/generique/templateHtml5.html5?ref_type=heads#L380">https://gitlab.huma-num.fr/ecrinum/stylo/stylo-export/-/blame/main/templates/generique/templateHtml5.html5?ref_type=heads#L380</a></p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/ggrossetie"><img src="https://avatars.githubusercontent.com/u/333276?v=4" />ggrossetie</a> commented <strong> 4 days ago</strong> </div> <div class="markdown-body"> <p>C'est Pandoc qui s'occupe de convertir un texte Markdown (issu des métadonnées) en HTML ?</p> <p>D'après la documentation j'ai l'impression que c'est le cas :</p> <blockquote> <p>Metadata will be taken from the fields of the YAML object and added to any existing document metadata. Metadata can contain lists and objects (nested arbitrarily), but all string scalars will be interpreted as Markdown. Fields with names ending in an underscore will be ignored by pandoc. (They may be given a role by external processors.) Field names must not be interpretable as YAML numbers or boolean values (so, for example, yes, True, and 15 cannot be used as field names).</p> </blockquote> <p><a href="https://pandoc.org/chunkedhtml-demo/8.10-metadata-blocks.html">https://pandoc.org/chunkedhtml-demo/8.10-metadata-blocks.html</a></p> <p>Par contre je n'ai pas trouvé comment faire pour que le texte ne soit pas interprété comme du Markdown (par exemple si on veut que les caractères soient non interprétés)</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/marviro"><img src="https://avatars.githubusercontent.com/u/14794035?v=4" />marviro</a> commented <strong> 4 days ago</strong> </div> <div class="markdown-body"> <p>Oui, c'est pandoc qui convertit. Et il n'est pas possible d'ignorer le formattage d'une valeur (donc transformer par exemple<code>_Mon_ titre</code> en <code>Mon titre</code>. Voilà pourquoi il est nécéssaire d'avoir une deuxième clé avec le texte sans formattage.</p> <p>Pour être plus explicite, exemple: Si j'ai dans mon yaml:</p> <p><code>title_f: "_Mon_ titre"</code></p> <p>et dans mon template:</p> <p><code><title>$title_f$</title></code></p> <p>Le rendu sera:</p> <p><code><title><i>Mon</i>titre</title></code></p> <p>ce qui est invalide en HTML.</p> <p>Donc, si l'usager met un titre avec balises de formattation, il est nécessaire d,envoyer dans le yaml aussi un titre avec les balises retirées. </p> <p>La même chose vaut aussi pour le champ abstract qui va être utilisé dans un span qui affiche le résumé et en métadonnées (donc sans formattage).</p> <p>Est-ce clair?</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/RochDLY"><img src="https://avatars.githubusercontent.com/u/43650596?v=4" />RochDLY</a> commented <strong> 4 days ago</strong> </div> <div class="markdown-body"> <p>Pour apporter quelques précisions, on peut faire un strip_markdown en faisant une requête à l'API GraphQL  (une option sur la requête du YAML). Cette option est utilisée ici : <a href="https://gitlab.huma-num.fr/ecrinum/stylo/stylo-export/-/blob/main/styloexport/styloapi.py?ref_type=heads#L50">https://gitlab.huma-num.fr/ecrinum/stylo/stylo-export/-/blob/main/styloexport/styloapi.py?ref_type=heads#L50</a></p> <p>Voir la fonction <a href="https://github.com/EcrituresNumeriques/stylo/blob/3ef644841cb00084f0e9a654a68dc2c3f4b33694/graphql/helpers/metadata.js#L45">ici</a> Merci @thom4parisot pour la navigation dans le code ! :-)</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/maiwann"><img src="https://avatars.githubusercontent.com/u/27999224?v=4" />maiwann</a> commented <strong> 1 day ago</strong> </div> <div class="markdown-body"> <p>Nouvelle question : </p> <blockquote> <p>Traduction de (translationOf:)</p> </blockquote> <p>Quel pourcentage des articles (grossierement) est une traduction de… ? Plutôt 1%, 20%, 50%…</p> </div> </div> <div class="page-bar-simple"> </div> <div class="footer"> <ul class="body"> <li>© <script> document.write(new Date().getFullYear()) </script> Githubissues.</li> <li>Githubissues is a development platform for aggregating issues.</li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script> <script src="/githubissues/assets/js.js"></script> <script src="/githubissues/assets/markdown.js"></script> <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/highlight.min.js"></script> <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/go.min.js"></script> <script> hljs.highlightAll(); </script> </body> </html>