Skip to content
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

[BUG] Import/export Gedcom des dates avant JC impossible #1791

Open
TitiFix opened this issue May 3, 2024 · 6 comments
Open

[BUG] Import/export Gedcom des dates avant JC impossible #1791

TitiFix opened this issue May 3, 2024 · 6 comments

Comments

@TitiFix
Copy link
Contributor

TitiFix commented May 3, 2024

Le codage gedcom des dates avant JC est incorrect
Les spécifications gedcom 5.5.x/7.0 ( * ) précisent qu'il est possible de saisir en calendrier Julien ou Gregorien (proleptique) une date avant JC. Geneweb implémente les dates négatives pour ce faire mais l'import/export gedcom est incorrect (mauvaise syntaxe)

Lors de l'export gedcom (gwb2ged) la date est exportée avec un signe négatif présent (ex DATE - 100)
Lors de l'import gedcom (ged2gwb) une date gedcom avant JC (ex DATE 100 B.C.) est reconnue comme une date textuelle au lieu d'une date négative.

L'anomalie est pour toutes versions / O.S.
(Je pensais que l'issue existait mais bien que connu depuis longtemps, pas trouvé d'issue sur ce sujet)
cf aussi cf https://www.geneanet.org/forum/viewtopic.php?p=1911757#p1911757

Expected behavior / Comportement attendu
Respecter la spécification gedcom c'est à dire

  • à l'import traduire en date négative les syntaxes avec B.C.
    DATE_GREG:= [ <YEAR_GREG>[B.C.] | <YEAR_GREG> | <YEAR_GREG> ]
    et idem pour DATE_JULN
  • à l'export générer un gedcom avec B.C après l'année pour indiquer la date avant JC.

Dans l'état actuel il n'est pas possible d'importer des dates avant JC en respectant la syntaxe gedcom.

(* ) Nota :
En gedcom 5.*, il faut mettre DATE year B.C.
En gedcom 7.0, il faut mettre DATE year BCE

@TitiFix TitiFix changed the title [BUG] Import/export des dates avant JC non implémenté [BUG] Import/export Gedcom des dates avant JC non implémenté May 3, 2024
@TitiFix TitiFix changed the title [BUG] Import/export Gedcom des dates avant JC non implémenté [BUG] Import/export Gedcom des dates avant JC impossible May 3, 2024
@a2line
Copy link
Collaborator

a2line commented May 3, 2024

Thank you for noticing this. I'm not surprised at all, the original author is a scientific vs Gedcom that comes from the member of the church of J.-C.! It's quite sad to read that it's not supported the other way, at last in last Gedcom spec., and that we should incline to support this "for them".

@TitiFix
Copy link
Contributor Author

TitiFix commented May 3, 2024

Bonjour A2,
Pas compris la remarque p/r à DDR,
Quoiqu'il en soit, même si c'est d'un usage qui sort du spectre généalogique classique, la plupart des logiciels de généalogie s'y conforment (Geneatique, Ancestris, Legacy, etc... ) même si plusieurs ont le même bug que Geneweb (ex HEREDIS, ... ). C'est dans les spécifications gedcom depuis la création de Geneweb.

L'import fonctionne mais comme du texte libre (i.e. 100 B.C. par exemple), l'inconvénient c'est que cela ne permet pas la recherche par plage de dates. Si quelqu'un corrige un jour, il faudrait laisser la possibilité d'importer des dates négatives (pour Heredis par exemple). A noter qu'en gedcom 7.0 les dates négatives sont toujours interdites et il faut ajouter BCE (au lieu de B.C. ) qui est une abréviation plus courante (before Christian Era). Donc reconnaitre BCE serait un plus pour ceux qui importerait un gedcom 7.

Cordialement
Thierry

@hgouraud
Copy link
Collaborator

hgouraud commented May 3, 2024

I gave it a try, somewhat blindly!! (à l'aveugle!)
J'ai choisi la formule "BCE", n'étant pas certain que le parser accepterait "B.C." (à tester)
gwb2ged:

  if dt.year >= 0 then Printf.ksprintf (oc opts) "%d" dt.year
  else Printf.ksprintf (oc opts) "%d BCE" (- dt.year);

ged2gwb:

      |i = INT; ID "BCE" ->
          (try (- int_of_string i) with  Failure _ -> raise Stream.Failure) ] ]

Created a person Ppppp Aaaaa born on feb 1st -60
.ged file produced:
2 DATE 01 FEB 60 BCE
result after reading this .ged file:
Né le 1ᵉʳ février -60

.gw file after export:
fam Ppppp Aaaaa 1/2/-60 0 + Qqqqq Bbbbb 0

Last commit of branch hgouraud/fix-home
More testing needed

@a2line
Copy link
Collaborator

a2line commented May 3, 2024

Je disais juste que ça ne m'étonnait pas qu'un chercheur utilise des nombres négatifs là où les Mormons utilisent encore BC ou BCE dans leur dernière norme. Et que c'était à eux de supporter les nombres négatifs plutôt que de vouloir imposer leur point de vue en ayant la main mise sur une norme. C'est aussi très « centré » géographiquement et culturellement.

BCE est une très légère subtilité pour faire passer la chose à l'international et on l’interprète un peu à toutes les sauces cf. https://fr.wikipedia.org/wiki/%C3%88re_commune. Pour moi c'est de l'enfumage, c'est exactement la même chose qu’« avant Jésus-Christ » sans en prononcer le nom (thou shalt not take the name of the Lord thy God in vain!?)

La seule qui vaille en science à mes yeux est la notation BP (Before Present) ie. avant 1950 et les nombres négatifs. Je disais à Henri l'an dernier qu'il fallait peut-être s'y intéresser maintenant que des études de paléo-génomiques sont publiées et commencent à nous fournir des arbres généalogiques d’une cinquantaine d’individus sur trois ou quatre générations : avec des âges des individus et les relations on pourrait saisir ces arbres (en - 30 000 BP !) dans nos bases : d’autant plus quand ces recherches sont en France, on sait que s'ils ont eu une descendance jusqu'au aujourd'hui ce sont les ancêtres de quasi toute la population locale et plus.

Le temps que j'écrive ça, Henri a déjà trouvé une solution en quelques lignes, ça ne semble pas sorcier à bien supporter…

@a2line
Copy link
Collaborator

a2line commented May 3, 2024

Je n'ai jamais regardé le comportement de Geneweb pour ces dates, il doit y'avoir pas mal de bugs inhérents. J’en profite pour signaler que le choix du tiret pour nos périodes de dates courtes va poser problème avec les dates négatives utilisant le même trait-d’union-moins : « Caius Iulius Caesar - 100-- 44 » est clairement illisible et le remplacer par un cadratin ou demi-cadratin n'aidera pas du tout. Je suis étonné que le lexique ne possède pas déjà de traductions pour ces cas, c’est qu'il n'y a pas de besoin en 25 ans d’existence du logiciel. En français, il faut écrire « av. J.-C. » avec une espace insécable entre les chiffres et le texte et aussi pour l'espace entre les deux abréviations, donc «  100 av. J.-C.–44 av. J.-C. » pour le cas précédent, qui n'est sécable qu'au niveau du tiret demi-cadratin (pour cet exemple).

Connaissant les variantes typographiques nombreuses et erronées de ces abréviations, une chose est sûre : la date négative l’emporte de loin niveau cohérence et facilité de saisie des données. En plus de supporter un bon import/export Gedcom, je pense que cela implique un travail de rendu de ces dates assez conséquent.

Déjà, on ne trouve personne sur Roglo avec la requête évoluée, ce qui me fait me poser des questions, y'en a-t-il et l'outil est buggé ? S'il n'y en réellement aucun, pourquoi aucun magicien Roglo, pourtant généalogistes aguerris, en 25 ans d'utilisation, ne s'y aventurent pas ?

« Recherche tous les individus : né(e) avant 1.
Pas de réponses »

Y'a trois individus avec des dates avant 150… On n’est même pas dans le négatif. J'ai tellement peur d'essayer ça et voir que tout déconne !! Il faudrait un Gedcom en exemple à éprouver.

@TitiFix
Copy link
Contributor Author

TitiFix commented May 4, 2024

Bonjour à tous,
A ma connaissance le recherche avancée fonctionne sur les dates négatives
cf exemple sur l'arbre du fil geneanet que je citais plus haut 👍
https://gw.geneanet.org/baboule1?lang=fr&m=H&v=search_event
si on met une date max, min ou les deux cela fonctionne

Il est vrai que la notation pour les plages de dates (date1-date2) devrait être améliorée car on trouve des plages de dates peu compréhensibles pour le commun des mortels dans le cas de dates négatives :

~-518--465/ 
-375--321..-312 
~-212-~-110 
†~-197 
~-735- 
etc...  

il faudrait mieux quelque chose du genre [date1, date2] avec ... si date1 ou date 2 non présent

Cordialement
Thierry
P.S. : pour moi, B.C. ou BCE n'ont de sens précis que dans la spécification gedcom, autrement mieux veut garder les dates grégoriennes (proleptique) ou juliennes positives ou négatives.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants