This page is mostly a description of the overall database schema and overall organization of properties used at Familypedia. This is intended to provide technical documentation for those creating templates or interested in the formal structure of Familypedia's database.

List of properties: for a full list of properties and their values:


The Main, Help, and Genealogy namespaces are divided into pseudo namespaces designated with a standard suffix using language codes corresponding to wikipedia language prefixes. The typically two letter codes have a period preceding and are enclosed in parentheses. For instance the french language article would be San Francisco (.fr) and the German would be San Francisco (.de).

Strings for table values and other templates may be set by accessing the corresponding "Strings" page for a language. Refer to page Strings:en and navigate to the desired language. Edit the string values using the form to update and correct them.

Common information for a person or place is held in a single article called an smwbasepage, and all pages of all languages for the same person or place would have and smwbasepage property with the same value pointing to the same page. Property values for the person or place are saved only on this smwbasepage.

2009-09 The smwbasepage concept is being revised for greater flexibility. No code should be written assuming its current functionality- Phlox

Person names[]

Person names are complex due to variations in usage between cultures. For simplicity, Familypedia's person name properties have been named assuming the commonly understood pattern of given (first) name, a surname (family name), and optional middle name. For those for whom this pattern is applicable to their culture, these properties may be filled out with the meanings that are suggested by their names. The actual meaning of these properties is more complex and is explained in greater detail below for those interested.

All names- (person or place) have multilingual values. EG: given_name for William the Conquerer is Giullaume in French, the name for The Hague is Den Haag in German. The name in a language is found by accessing the smwbasepage property in an article and looking up the language name in that smwbasepage.

Person names[]

Familypedia's formal definition of Surname, Given name and Middle name may be counter to conventions or intuition. The meaning of these terms at Familypedia only has to do with their Taxonomic order. The primary name sorted on is the surname property, the second name sorted on is the given name property, and the third sorted on is the middle name property. These properties must be translated in the manner that is proper for a language to reflect this taxonomic order. Taxonomic order has implications other than sorting. For example, Spanish names have compound last names and compound given names. For Juan Pedro Gómez Martínez, the father's family name is Gómez and the mother's maiden family name is Martínez. So what does Juan Pedro consider the primary taxonomic name for his father? It's Gomez- his family name. So the Spanish form should label the "surname" property with a name that would lead a Spanish speaking person to insert "Gomez" rather than "Gomez Martinez". Does this mean that surname is equivalent to family name? No. In the case of Icelandic last names, the primary taxonomic name is the patronymic formed from the father's first name. Nor does surname mean "last name" either, since surnames can come first as is the case in China, or in the case of compounds, where the final name may be the mother or grandmother's maiden name.


This is property is stored as a single value. Compounds are allowed but are not stored as an N-Ary value list. This is not necessarily the value of the person's true given name, but the secondary taxonomic name for the person. Illustration: Paul McCartney's true given name is James, but it would be confusing to sort the article Paul McCartney in any other place than following McCartney's whose first name begins with O.


This is property is stored as a single value. Compounds are allowed but are not stored as an N-Ary value list. Many cultures do not properly have middle names, but do have a third order taxonomic names. These should use the middle name property and the term used on the form for that language should indicate whatever word corresponds to this name.

Names displayed to the user should be stored in the short_name or full_name properties. Names should not be assembled from given, middle and surname properties because not all data

Notes on data types[]


As an implementation detail, boolean values such as if-bce or ifmarried-g1 have values true or null. Semantic forms and Semantic Mediawiki return different values for the boolean type, so it is avoided. Instead, only the true value is allowed, so the user only has the choice of unsetting the value to blank, or setting it to true. This allows logic to work as it should- an #if: will not execute if the value is anything but true. If false was allowed as a form value, it would not behave properly. #ifeq could be used, but non form users might set the value to something like Yes, or True or T. In any of these cases, non null values execute properly.