GEPS 021: Additional Name Fields

From Gramps
Revision as of 00:51, 6 March 2023 by Bamaustin (talk | contribs) (References)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Gnome-important.png
GEPS Closed

This GEPS (Gramps Enhancement Proposal) is closed and available in the version of Gramps indicated below.
Do not edit this page. Submit bugs/features to https://gramps-project.org/bugs/.

Finished included in Gramps 3.3

This Gramps Enhancement Proposal is to add new fields to the name object so as to better store a person's name for several cultures. Also GUI refinements are proposed.

New Nick Name Fields

Nick Name

A field for a nick name is added. Many people like to store nick name as part of the name, while now it can only be stored as an attribute. Many people use callname, but that is wrong use of that field. The Nick Name is for a nick name of a single person and will be a new name field.

Family Nick Name

A field for a nick name used to indicate the family.

Definition: In some cultures, when a family name is common, family nicknames are used on documents to indicate the specific branch. Sometimes these family nicknames are even used on legal documents.

Examples: mountain villages in Switserland, Austria, Dalmatia. Sometimes a family nickname becomes an official name after some time.

Question: Is this a good English word for this practice?

Minor User interface changes

Relabel Given Name

Given name is relabelled in the UI as Given name(s).

Validate Callname

Callname becomes a validated field (like eg date, longitude). That is, it becomes red if the callname is not present in the given name(s).

Surname redesign

Introduction

In several cultures people have two or more surnames. Examples:

  1. Cándida Sánchez de la Torre: here Sánchez and Torre are the surnames.
  2. Santiago Ramón y Cajal: here Ramón and Cajal are the surnames.
  3. Portugal/Brazil: 4 surnames is common: Given Name(s) | Mother Surname(s)| Father Surname(s)
  4. Joaquim de Lima e Silva
  5. García Álvarez de Toledo y Carrillo de Toledo [1]
  6. José de Mascarenhas da Silva e Lencastre [2]

What is the problem?

Let's discuss: García Álvarez de Toledo y Carrillo de Toledo

  • How should it be parsed? How many surnames are in it? Well, García is a given name that is now seen only as a surname, but things were different in the past. It seems that "Carrillo de Toledo" would be a second surname, but there are other problems.
  • Is "Álvarez" a real patronymic? This means García is the child of some Álvaro (possibly "de Toledo", but no guarantee). His children will probably use the "Garcés" (or even "García") as patronymic and, possibly, "de Toledo" as surname. This scheme was valid until ca. 1200. In this case, Álvarez should go into the patronymic field or, as is common, as part of the given names. "de" would go into the surname prefix field.
  • Is "Álvarez" a false patronymic? In this case, his father was not Álvaro, but he got his name (given plus patronymic) from some ancestor or relative of notice named "García Álvarez" (not necessarily "de Toledo"). In this case, the best coding is probably the same as for real patronymics except that context does not help a lot. This is after ca. 1200.
  • Is it a non fixed part of the surname? It is a dark period where patronymics start being inherited but they have not solidified. In this case, García's father was "Álvarez de Toledo" but some of García's siblings would be just "de Toledo", as would some of his children. Some of them might even have a different patronymic. In this case, IMHO, I think it is best to put all of "Álvarez de" as surname prefix. Otherwise it would sort García under "A" and only an amateur would want that.
  • Is it a solidified part of the surname? In this case "Álvarez de Toledo" is uniformly inherited as a block and exceptions are rare. All of it should go into the surname (and sort under "A").

Let's discuss: Maria Venancia Dávalos de Rivera Mendoza Mate de Luna y Córdova

In reading page 64 of the 4th volume of Solares Montañeses by Mateo Escagedo Salmón, I find that José Gregorio Ceballos el Caballero (that's just one surname, BTW) married "Maria Venancia Dávalos de Rivera Mendoza Mate de Luna y Córdova". From the context I make the educated guess that those are four sunames: Dávalos de Rivera, Mendoza, Mate de Luna and Córdova. It would be nice to record that, especially since there is no explanation in the source of that "Mate de Luna", that flags the possibility that the source is wrong or an interesting line of research.

Proposed Solution: surname list

The proposal is to introduce:

  1. In the UI and not editable: Formatted Name. This is a field indicating the full name as given upto now. So it has the same function as the title bar now in the person editor. However, the format is fixed and not changeable: given names - surnames. This field is to give a quick overview of the total name
  2. In the UI and not editable: Sort Name. This is the field indicating on what the name is normally sorted in the grouped view and some reports. This field shows or the primary surname, or the group name if that is set. This field is to give a quick overview of how the name will be sorted.
  3. Surname list: the surname consist of a list of surnames. The user sets prefix, type, connector as per his desires. One surname must be set as the primary surname. Note that surname does not have a suffix, that remains a global name field (used for eg Junior or The Third).
  4. Quick data entry. We do not want to slow down entry of names for people with simple names. Therefore, the user interface shows all options of a single surname, and the user can add extra surnames via an add button.
  5. Patronymic is deprecated. It becomes a type of surname (a boolean value). At the same time, Matronymic [3] is added. This is stored in a derivation field, indicating how the name came about: inherited (assumed default), patronymic, matronymic, ... . What others??
  6. With many surnames, users quickly want to know if a surname is derived from the family of the mother, or from the family of the father. Mother side, Father side allow to indicate this.

Details

Example of the surname list:

Formatted Name: José de Mascarenhas da Silva e Lencastre

Sort: Mascarenhas

order prefix surname primary? connector to next? derivation
1 de Mascarenhas Y inherited
2 da Silva N e inherited
3 Lencastre N inherited

surname field: de Mascarenhas da Silva e Lencastre

Changes from previous designs:

  • no mother side field or father side field: This can be shown in UI by scanning the parents. No need to store it as that will lead to conflicts
  • no suffix field in the surname, only prefix and connector
  • derivation type instead of patronymic, matronymic. Derivation type of a surname can be: inherited (assumed), patronymic, matronymic. Do we need to consider other? Eg Taken, Given??

XML support

Gramps 3.2 xml 1.3.0

Name is now defined as:

 <define name="person-content">
   ...
   <zeroOrMore><element name="name">
       <ref name="name-content"/>
   </element></zeroOrMore>
   <optional><element name="nick"><text/></element></optional>
   ...
   </define>
 <define name="name-content">
   <optional><attribute name="alt"><choice>
       <value>0</value>
       <value>1</value>
   </choice></attribute></optional>
   <optional><attribute name="priv">
       <ref name="priv-content"/>
   </attribute></optional>
   <optional><attribute name="type"><choice>
       <value>Also Known As</value>
       <value>Birth Name</value>
       <value>Married Name</value>
       <value>Other Name</value>
   </choice></attribute></optional>
   <optional><attribute name="sort"><text/></attribute></optional>
   <optional><attribute name="display"><text/></attribute></optional>
   <optional><element name="first"><text/></element></optional>
   <optional><element name="call"><text/></element></optional>
   <optional><element name="last">
       <text/>
       <optional><attribute name="prefix"><text/></attribute></optional>
       <optional><attribute name="group"><text/></attribute></optional>
   </element></optional>
   <optional><element name="suffix"><text/></element></optional>
   <optional><element name="patronymic"><text/></element></optional>
   <optional><element name="title"><text/></element></optional>
   <optional><ref name="date-content"/></optional>
   <zeroOrMore><element name="noteref">
       <ref name="noteref-content"/>
   </element></zeroOrMore>
   <zeroOrMore><element name="sourceref">
       <ref name="sourceref-content"/>
   </element></zeroOrMore>
 </define>

In above alt indicates an alternative name

Gramps 3.3 xml 1.4.0

The new xml would be

 <define name="person-content">
   ...
   <zeroOrMore><element name="name">
       <ref name="name-content"/>
   </element></zeroOrMore>
   ...
   </define>
 <define name="name-content">
   <optional><attribute name="alt"><choice>
       <value>0</value>
       <value>1</value>
   </choice></attribute></optional>
   <optional><attribute name="priv">
       <ref name="priv-content"/>
   </attribute></optional>
   <optional><attribute name="type"><choice>
       <value>Also Known As</value>
       <value>Birth Name</value>
       <value>Married Name</value>
       <value>Other Name</value>
   </choice></attribute></optional>
   <optional><attribute name="sort"><text/></attribute></optional>
   <optional><attribute name="display"><text/></attribute></optional>
   <optional><element name="first"><text/></element></optional>
   <optional><element name="call"><text/></element></optional>
   <optional><element name="nick"><text/></element></optional>
   <optional><element name="familynick"><text/></element></optional>
   <optional><element name="group"><text/></element></optional>
   <zeroOrMore><element name="surname">
       <ref name="surname-content"/>
   </element></zeroOrMore>
   <optional><element name="suffix"><text/></element></optional>
   <optional><element name="title"><text/></element></optional>
   <optional><ref name="date-content"/></optional>
   <zeroOrMore><element name="noteref">
       <ref name="noteref-content"/>
   </element></zeroOrMore>
   <zeroOrMore><element name="sourceref">
       <ref name="sourceref-content"/>
   </element></zeroOrMore>
 </define>
 <define name="surname-content">
   <element name="surname">
       <text/>
       <optional><attribute name="prefix"><text/></attribute></optional>
       <optional><attribute name="primary"><choice>
       <value>0</value>
       <value>1</value>
       </choice></attribute></optional>
       <optional><attribute name="derivation"><choice>
       <value>inherited</value>
       <value>patronymic</value>
       <value>matronymic</value>
       <value>other</value>
       </choice></attribute></optional>
       <optional><attribute name="connector"><text/></attribute></optional>
   </element>
 </define>

GEDCOM import/export

GEDCOM definition

  n  NAME <NAME_PERSONAL>  {1:1}
   +1 NPFX <NAME_PIECE_PREFIX>  {0:1}
   +1 GIVN <NAME_PIECE_GIVEN>  {0:1}
   +1 NICK <NAME_PIECE_NICKNAME>  {0:1}
   +1 SPFX <NAME_PIECE_SURNAME_PREFIX>  {0:1}
   +1 SURN <NAME_PIECE_SURNAME>  {0:1}
   +1 NSFX <NAME_PIECE_SUFFIX>  {0:1}
   +1 <<SOURCE_CITATION>>  {0:M}
     +2 <<NOTE_STRUCTURE>>  {0:M}
     +2 <<MULTIMEDIA_LINK>>  {0:M}
   +1 <<NOTE_STRUCTURE>>  {0:M}
  NAME_PERSONAL: = {Size=1:120}
  [
  <TEXT> |
  /<TEXT>/ |
  <TEXT> /<TEXT>/ |
  /<TEXT>/ <TEXT> |
  <TEXT> /<TEXT>/ <TEXT>
  ] 
NAME_PIECE_GIVEN: = {Size=1:120}
[ <NAME_PIECE> | <NAME_PIECE_GIVEN>, <NAME_PIECE> ]
Given name or earned name. Different given names are separated by a comma.
NAME_PIECE_NICKNAME: = {Size=1:30}
[ <NAME_PIECE> | <NAME_PIECE_NICKNAME>, <NAME_PIECE> ]
A descriptive or familiar name used in connection with one's proper name.
NAME_PIECE_PREFIX: = {Size=1:30}
[ <NAME_PIECE> | <NAME_PIECE_PREFIX>, <NAME_PIECE> ]
Non indexing name piece that appears preceding the given name and surname parts. 
Different name prefix parts  are separated by a comma. For example : 
Lt. Cmndr. Joseph /Allen/ jr.
In this example Lt. Cmndr. is considered as the name prefix portion.
NAME_PIECE_SUFFIX: = {Size=1:30}
[ <NAME_PIECE> | <NAME_PIECE_SUFFIX>, <NAME_PIECE> ]
Non-indexing name piece that appears after the given name and surname parts. 
Different name suffix parts are  separated by a comma.
For example :
Lt. Cmndr. Joseph /Allen/ jr.
In this example jr. is considered as the name suffix portion.
NAME_PIECE_SURNAME: = {Size=1:120}
[ <NAME_PIECE> | <NAME_PIECE_SURNAME>, <NAME_PIECE> ]
Surname or family name. Different surnames are separated by a comma.
NAME_PIECE_SURNAME_PREFIX: = {Size=1:30}
[ <NAME_PIECE> | <NAME_PIECE_SURNAME_PREFIX>, <NAME_PIECE> ]
Surname prefix or article used in a family name. Different surname articles are separated by a comma, 
for  example in the name "de la Cruz", this value would be "de, la". 

Examples of NAME_PERSONAL: William Lee (given name only or surname not known) /Parry/ (surname only) William Lee /Parry/ William Lee /Mac Parry/ (both parts (Mac and Parry) are surname parts William /Lee/ Parry (surname imbedded in the name string) William Lee /Pa.../

  1. GEDCOM has support for multiple surnames. They are separated by commas in the value of the SURN tag. No such provision is there for the NAME tag, so leaving the commas there is arguably not permitted by GEDCOM. Hence, SURN should contain all surnames, seperated by a comma.
  2. PhpGedview has an extension to the name field that otherwise is not supported, should we follow it?:
1 NAME Cándida /Sánchez de la Torre/
2 GIVN Cándida
2 SURN Sánchez, Torre

Suggested workflow for export from Gramps

  1. all surnames are given to the SURN field divided by comma's
  2. name field corresponds to the Formatted Name as seen in Gramps, with slashes (/) around the surnames
  3. title is exported to NPFX
  4. primary surname prefix and suffix go to SPFX, NSFX.

As a consequence, a lot of information is lost on Gedcom export (callname, which is the primary name, connector), but all of the surname _is_ present in the NAME field.

Suggested workflow for import from Gramps

  1. all surnames in SURN (divided by comma's) are an entry in the surname list of Gramps
  2. NAME field is parsed identifying the surname piece. All before a name goes to prefix of the surname behind it, what comes at the end goes to suffix of the last surname. If SPFX, NSFX is given, the surname that corresponds with that in name is set primary name, and prefix/suffix updated as needed
  3. if primary surname cannot be identified, the first one is set primary.


User Interface

Present surname use

Surname now appears in display as and in sort as and in the preferences for name. The meaning of surname in those context would become the complete compound surname. If needed an extra format can be added: 'primary name'? This is to investigate further...

Name Editor

The name editor must be reworked. Most important is that the new facilities for compound names do not slow down data entry of normal common surnames (that is eg German, English). So no listview is given for the list of compound names, instead the primary surname is fully shown with all fields, and a list is shown under it in those cases that a compound name is present or wanted. To work out further...

Add buttons: obtain surnames from father, mother, child. On clicking these the surname list is added with those of the father, mother, child (no intelligent merging done). The father side is checked in case of father, mother side in case mother.

When a person is selected in the person view, and add person is clicked, the surname list is generated with that of the selected person.

Do we allow copy/paste of surname? For that we need a list where we can copy from/to. This will depend on the final design of the editor. Surname will be an object, so adding copy/paste is straightforward.

Compound Name Parser Tool

A tool is written than can parse the first primary surname, and split it up in surname parts. This is to do the conversion from 3.2 to 3.3. The tool might also provide for the use-case of storing surname in given name, so parsing given name to add surnames to the surname list.

Upgrade

Upgrade from 3.2 to 3.3 database should be straightforward, with the exception of the disappearance of patronymic.

  1. In 3.2 there is one surname, prefix, suffix, so this becomes the first (and primary) surname
  2. if patronymic is given, there are the following possibilities
    1. patronymic given, no surname. Patronymic becomes the first surname in the surname list, it is primary, and patronymic
    2. patronymic is given and equal to surname. This reduces to the case above.
    3. patronymic is given, surname is given, and they are not equal. This is a wrong use of the user or a user using patronymic as part of a compound surname. We always assume the last. The surname becomes the first surname and is primary. The patronym becomes the second surname and is set patronymic.


References

  • Names Discussion
  • Starting discussion: Compound surnames (portuguese)
  • Discussion: Proposals for additional name fields
  • bug tickets:
    • 0003161: please rename "patronymic" to "middle name"
    • 0004598: (trunk 3.3) new name format copies patronymic into surname as well as leaving it as a patronymic when importing
    • 0008576: Extension to people naming schemes for Asians
    • 0010996: Different surname guessing in father/mother combination
    • 0001715: Create surname guessing utility for both parent --> child and child --> add parent
    • 0003913: wrong pre-filled surname according to Slavic conventions
    • 0011356: Spanish last names are all passed down to children as patrilineal last names.
    • 0005188: Latin American surname guessing review
    • 0005151: Latin American surname guessing fails
    • 0010997: Crash when trying to add child to family when only one parent and surname guessing set to combination