GEPS 001: Relationship type event link

From Gramps
Revision as of 14:57, 20 August 2007 by Bmcage (talk | contribs)
Jump to: navigation, search

This page is for a description of the design to create a relationship type - event type link for use in reports.

Note that due to the complexity of human relationships, this can not grasp all possibilities, but it should be more flexible than the present system.


The basis for this GEPS is bug 1121 and this mail discussion.

The problem is the following: a family has a relationship type, and a set of events. For reports one needs to know what to print. Examples:

  • A family with relationship Unmarried and a Marriage event ?
  • A family with relationship married and a Marriage and Divorce event ?
  • A family with relationship Unmarried and no events?
  • A family with relationship civil union, how to indicate begin and end of this union ?


The general built in solution would be the following:

5 relationship types

GRAMPS is given 5 standard relationship types, as opposed to the present four:

  1. Married : any religeous union
  2. Civil Union: any civil legal union
  3. Living Together: people living together without religeous or legal union, but with an implied relationship of mutual love.
  4. Unmarried: a family with no bond whatsoever (for bastard children, ...) or a family living together without a mutual love.
  5. Unknown : Unknown

This means one new custom type is added to make the difference between Unmarried living together and Unmarried living apart.

Relationship -- standard event coupling

Every relationship is coupled to a standard event indicating the start and the end of a relationship.


Relationship Start event Stop event priority
Married Marriage Divorce 1
Civil Union Civil Union Divorce, Union Annulment 2
Living Together Cohabitation Divorce, Union Annulment, Split 3
Unmarried NA NA 4
Unknown NA NA 5

In the above, 4 new standard events are introduced:

  1. Civil Union : Now Marriage is used for this. Civil Union would indicate that no religeous marriage ceremony has been performed, only a legal one
  2. Cohabitation: People of a family starting to live together
  3. Union Annulment : The annulment of a legal contract between spouses (embodied by the Civil Union event)
  4. Split : The end of an informal cohabitation

An event stopping a more involved relationship, automatically also stops one of the other relationships. That is, if there is a cohabitation event, then a marriage event, then a divorce event, then it follows automatically that also the cohabitation came to an end.
Note: One can argue that above is not always true. Here we follow the line that this family relationship came to an end, relationship type being married, although the family is now divorced. If the divorced couple keeps living together for convenience reasons, a new family should be created, with same parents, relationship type Unmarried, and event cohabitation.

Event description field for nuance

The event description field should be used for nuance. Eg. there are many legal bindings possible.

Some examples. Jane and Joe are together. Following descriptions are possible in the event:

  • Marriage of Jane and Joe - type Married
  • Chatholic Marriage of Jane and Joe - type Married
  • Hindu wedding of Jane and Joe - type Married
  • Civil Marriage of Jane and Joe - type Civil Union
  • Living Together contract of Jane and Joe - type Civil Union
  • Samboförhållande of Jane and Joe - type Civil Union

Use of the connection

The reason for the above is to have better control of what reports print. I propose two possible schemes:

  1. Brief relationship summary
  2. Detailed relationship summary

In the brief form, the report looks at the relationship type, and prints information depending on the start and stop events of the relationship type

In the detailed form, the report tries to deduce from all events the history of relationship of a couple, ending with the relationship that is the relationship type of the family

Use Cases

Some use cases

1. Example one

Jane and Joe family has following data:

  • Living together: 2000: event cohabitation
  • child 1 : 2001
  • Split : 2002: event Split
  • Living together: 2003: event cohabitation
  • child 2 : 2003
  • Civil Union: 2006 (may): event civil marriage
  • Marriage with a service ('rented priest'): 2006 (june) : event marriage,
  • description: religious garden ceremony of Jane and Joe

The present relationship type would be married. In reports the brief form would be: "He married Jane on june 2006"

In detailed report, the events are used to determine relationship type "He lived together with Jane from 2000 untill 2002. He lives together with Jane since 2003. He did a civil union with Jane on may 2006. He married Jane on June 2006"

Tools, further possibilities

With the above, the following is possible:

Color code events

Relationship events can have a color in the event tab. Eg Green for start of relation, red for stop.

Check relationship tye tool

A tool to check if the set relationship type corresponds to what GRAMPS deduces from the given events.

Custom relationship type tool

A tool so that people can attach to their custom relationship types also a start and stop event.

Question: I only see use in this if somebody could give an example that indicates custom relationship types are actually useful.


  • Relationship: Arranged Marriage: Not a good idea. Better to use relationship Marriage. The fact that it is arranged is an attribute/property.

Code Implementation

To be decided.

Relationship - event coupling

Suggestion: I would not store the relationship-event binding in the database, but instead store it in the code. If custom types must be supported, a database solution would be needed, but I do not see the use at the moment

Brief and detailed summary

New functions in ReportUtils.


Expressing relationships is very different from country to country. Needs to be investigated. Eg, civil union cannot be 'He civil union Jane on 12 august', but 'He married Jane on 12 august is ok'.