The Gramps extension¶
The gramps
extension loads entities from Gramps family trees into your Betty ancestry.
Enable this extension in your project’s configuration file as follows:
extensions:
gramps: {}
{
"extensions": {
"gramps": {}
}
}
Configuration¶
This extension is configurable:
extensions:
gramps:
configuration:
family_trees:
- file: ./gramps.gpkg
event-types:
GrampsEventType: betty-event-type
AnotherGrampsEventType: another-betty-event-type
genders:
F: female
M: male
U: unknown
NonBinary: non-binary
place-types:
GrampsPlaceType: betty-place-type
AnotherGrampsPlaceType: another-betty-place-type
presence-roles:
GrampsRole: betty-presence-role
AnotherGrampsRole: another-betty-presence-role
{
"extensions": {
"gramps": {
"configuration" : {
"family_trees": [
{
"file": "./gramps.gpkg"
"event-types": {
"GrampsEventType: "betty-event-type",
"AnotherGrampsEventType: "another-betty-event-type"
},
"genders": {
"F: "female",
"M: "male",
"U: "unknown",
"NonBinary: "non-binary"
},
"place-types": {
"GrampsPlaceType: "betty-place-type",
"AnotherGrampsPlaceType: "another-betty-place-type"
},
"presence-roles": {
"GrampsRole: "betty-presence-role",
"AnotherGrampsRole: "another-betty-presence-role"
}
}
]
}
}
}
}
family_trees
¶
required
An array defining zero or more Gramps family trees to load.
If multiple family trees contain entities of the same type and with the same ID (e.g. a person with ID I1234
) each
entity will overwrite any previously loaded entity.
Each item is an object with the following keys:
family_trees[].file
¶
required
the path to a Gramps XML or Gramps XML Package file.
family_trees[].event_types
¶
optional
How to map Gramps event types to Betty event types. Each keys is a Gramps event type, and each value is the plugin ID of the Betty event type to import the Gramps event type as.
family_trees[].genders
¶
optional
How to map Gramps genders to Betty genders. Each keys is a Gramps gender, and each value is the plugin ID of the Betty gender to import the Gramps gender as.
family_trees[].place_types
¶
optional
How to map Gramps place types to Betty place types. Each keys is a Gramps place type, and each value is the plugin ID of the Betty place type to import the Gramps place type as.
family_trees[].presence_roles
¶
optional
How to map Gramps roles to Betty presence roles. Each keys is a Gramps role, and each value is the plugin ID of the Betty presence role to import the Gramps role as.
Attributes¶
Gramps allows arbitrary attributes to be added to some of its data types. Betty can parse these to load additional
information. Each of Betty’s Gramps attributes follows the same structure: betty:...
(to load the attribute for any
Betty project) or betty-MyProject:..
(to load an attribute for the Betty project with machine name MyProject
),
where ...
is the name that identifies the attribute’s meaning. For the ‘privacy` attribute, the Gramps attribute’s full
name would be betty:privacy
or betty-MyProject:privacy
.
Privacy¶
Gramps has limited built-in support for people’s privacy. To fully control privacy for people, as well as events, files,
sources, and citations, add a betty:privacy
attribute to any of these types, with a value of private
to explicitly
declare the data always private or public
to declare the data always public. Any other value will leave the privacy
undecided, as well as person records marked public using Gramps’ built-in privacy selector. In such cases, the
privatizer
extension may decide if the data is public or private.
Gender¶
To set a person’s gender to a gender that is available in Betty, but not in Gramps, add a betty:gender
attribute,
whose value is the ID of the Gender you want to use.
Event names¶
Event names can be set using betty:name
. Values are static translations.
Links¶
Gramps has limited built-in support to add links to entities. For those Gramps entities that support attributes, you may add links using those:
Name |
Required/optional |
Description |
---|---|---|
|
required |
The URL the link targets. |
|
optional |
A human-friendly longer link description. This may contain static translations. |
|
optional |
A human-friendly short link label. This may contain static translations. |
|
optional |
|
|
optional |
An IANA media type. |
|
optional |
Where LINKNAME
may be any value of your choosing, but must be unique per link. For example, where LINKNAME
is cheese
:
|
|
|
|
|
|
Static translations¶
Static translations are not attributes on their own per se, but they are used by other attributes, such as links.
If another attribute defines itself as containing static translations, that means you may add multiple variants of the attribute, each with a translation for a different locale.
For example, given a translatable attribute called betty:my-text
, you may add an actual attribute betty:my-text
with any translation for a locale which Betty will consider undetermined. You may also add any number of
betty:my-text:LOCALE
attributes, where LOCALE
is an IETF BCP 47 language
tag, and the value is the translation for that specific locale/language.
Dates¶
For unknown date parts, set those to all zeroes and Betty will ignore them. For instance, 0000-12-31
will be parsed as
“December 31”, and 1970-01-00
as “January, 1970”.
Event types¶
Betty supports the following Gramps event types without any additional configuration:
Gramps event type |
Betty event type |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Genders¶
Betty supports the following Gramps genders without any additional configuration:
Gramps gender |
Betty gender |
---|---|
|
|
|
|
|
|
Place types¶
Betty supports the following Gramps place types without any additional configuration:
Gramps place type |
Betty place type |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Presence roles¶
Betty supports the following Gramps presence roles without any additional configuration:
Gramps role |
Betty presence role |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Order & priority¶
The order of lists of data, or the priority of individual bits of data, can be automatically determined by Betty in multiple different ways, such as by matching dates, or locales. When not enough details are available, or in case of ambiguity, the original order is preserved. If only a single item must be retrieved from the list, this will be the first item, optionally after sorting.
For example, if a place has multiple names (which may be historical or translations), Betty may try to filter names by the given locale and date, and then indiscriminately pick the first one of the remaining names to display as the canonical name.
Tips:
If you want one item to have priority over another, it should come before the other in a list (e.g. be higher up).
Items with more specific or complete data, such as locales or dates, should come before items with less specific or complete data. However, items without dates at all are considered current and not historical.
Unofficial names or nicknames, should generally be put at the end of lists.