FamilySearch/gedcomx — Issue #138: Merge Record and Conclusion Models
Author: joshhansen
Created: 2012-02-14 02:20:45+00:00
State: open

# Executive Summary

The record and conclusion models actually model the same domain but have been artificially separated. Thus, GedcomX isn't even interchangeable with itself in spite of trying to be a widely useful interchange format. For almost all classes in the record model there is a corresponding, parallel class in the conclusion model. Merging these parallel classes together into a single model will make GedcomX easier to understand, easier to implement, and more powerful as a representation of genealogical data. In the remainder of this issue, I explain what's wrong with the current situation, why it's so harmful, and how the problem can be resolved.

# What's Wrong
First, some quotes for context:

> "The GEDCOM X record model provides the data structures that are used for defining the content of an artifact."[[link]](http://www.gedcomx.org/Record-Model.html)

and

> "The GEDCOM X conclusion model provides the data structures that are used for making genealogical conclusions."[[link]](http://www.gedcomx.org/Conclusion-Model.html)

As it stands, the GedcomX record model does not model the "content of an artifact." A record model that actually modeled "the content of an artifact" would do things like specify its dimensions, textual transcription, identifying marks, etc. Instead, the record model represents conclusions drawn from the content of an artifact. For example, the claim "John Smith was born 1 Jan 1930", though supported by the contents of Mr. Smith's birth certificate, is a conclusion a researcher drew based on that certificate. Conclusions such as this that are made on the basis of artifact contents are **just another kind of conclusion.**

In its current form, GedcomX tries to model one aspect of conclusion metadata (whether or not a fact was concluded based on the contents of a document or artifact) not by allowing for this to be represented in the metadata classes themselves, but rather by duplicating the entire set of data classes and metadata classes and declaring that metadata dealing with this new set represent conclusions drawn directly from a document. As a result, **the record and conclusion data models are two separate but almost exactly parallel models of the same domain.** The distinction upon which this duplication is justified is essentially arbitrary, treating a special kind of conclusion as if it were so distinctive that it must be modeled as an entirely different domain.

# Why It's Harmful
The model duplication that exists in the current GedcomX specification adds to user confusion ("What's the difference between a person and a persona?"), complicates the task of implementing the standard (twice as many entities to represent), and reduces the utility of data represented using GedcomX (a _persona_ transcribed from a record is not necessarily comparable to a corresponding _person_ in a pedigree, even if they actually represent the same individual).

# Resolution
Instead of making a complete copy of the data and metadata classes, this distinction can be much more parsimoniously modeled by simply enriching the metadata model. I propose modeling the genealogy domain as a set of core entity types (person, place, event, date/time, document, etc.) and a vocabulary for making statements about such entities (e.g. person X was born in place Y), combined with a metadata vocabulary for justifying these statements, recording the reasoning behind them, and showing who exactly is making the claims (e.g. researcher A _claims/asserts/believes_ that person X was born in place Y _because of evidence found in document Z_). This lends itself to a two-part model, one for making statements about the core entities (data), another for making statements about those statements (metadata).

Rather than embedding Facts within the entities they are about, a general Fact class should be created that can represent claims of fact about any entity type. For example, in Turtle syntax:

#Subclassing rdf:Statement gives us subject, predicate, and object
#properties by which any RDF statement can be represented
:Fact rdf:type owl:Class ;
owl:subClassOf rdf:Statement .

:assertedBy rdf:type rdf:Property ;
rdfs:domain :Fact ;
rdfs:range :Person .

# This property can point to anything -- a document, or a literal string with the researcher's explanation
:supportedBy rdf:type rdf:Property ;
rdfs:domain :Fact ;
rdfs:range rdfs:Resource .

:subFactOf rdf:type rdf:Property ;
rdfs:domain :Fact ;
rdfs:range :Fact .

(A similar approach is described in [my RootsTech Family History Technology Workshop paper](http://fht.byu.edu/prev_workshops/workshop12/papers/3.1%20Josh%20Hansen%20-%20FHT%202012%20Workshop%20Paper%20-%20The%20Coming%20Web%20of%20Genealogical%20Data.pdf).)

An appropriate resolution to this issue would involve either 1) merging the record and conclusion models and perhaps refactoring the result into _data_ and _metadata_ models, or 2) giving a convincing argument for why the current state of affairs is necessary, including specific use cases that could not be modeled using a single merged model. The burden of evidence that would justify the duplication of a substantial subset of the GedcomX vocabulary is, in my opinion, fairly high, given the cost in user confusion, implementation difficulty, and data format utility mentioned above.

# See Also
[Issue #131 "A Persona IS a Person"](https://github.com/FamilySearch/gedcomx/issues/131)
[Conclusion Record Distinction](https://github.com/FamilySearch/gedcomx/wiki/Conclusion-Record-Distinction)