Commit a20a2182 by Tom Laudeman

merging branch tom into master

parents 12aaedb3 088b8233
#### Name and alternate name
There is no consensus on the canonical name. There probably can be no single, always preferred name. What is
preferred depends on context, and will vary for different purposes. In the data we can capture a reasonable
amount of context, but only the users know what is preferred. Computationally, we should treat all name as
alternates. We can offer names in one (or more) of several agreed-upon formats, leaving the choice up to the
user.
Name and alternate has no effect on identity matching because the match is done on all alternates, and uses
all available data from the identity constellation.
#### Name components
Give the variety of components in names, it is not possible to create a canonical, single set of components
for many names and their alternates. Even the concept of "preferred" name is debatable.
It is (mostly) possible to parse out the components for each name and each alternate name. Thus we have as many
sets of name components as we have names for a single identity constellation.
Suggest: we not become dogmatic about component labels. We should avoid "family name" vs surname even though
family name is perhaps more culturally relevant. Ditto givenname vs forename. Goal: be culturally agnostic
in the name_component vocabulary, and capture cultural practice in some other place/table, such as table
name_format.
If we want language specific name components then we need to add field "language" to name_components. Due
to components being extracted from possibly several name strings, we probably will not join table name to
table name_component. It would be a many-to-one join, and given that name component relates to cpf, and not
to one or more name strings, a join between table name and table name component is not logical.
Do we need information about how each name component was derived? If so we are probably better off saving a
log of the name parser than trying to use the database as part of the historical record of name
parsing. One aspect of database-centric component derivation would be a join table to handle the
many-to-many relation between table name and table name component. Complete info about derivation also
requires the name parsing version number and any configuration at the time the parsing was done.
Field nc_label (table name_component) must come from a controlled vocabulary in order for dynamic
formatting to work.
We should not allow our technology to be defined by the "minimal existing implementation" of name. We will
cripple SNAC if we only meet the minimal definition of name. Additionally, SNAC has needs beyond that of
our archives and authority stake holders.
#### Minimal list of components labels
The least flexible system (of the 3 or 4 we have reviewed) for name components is probably MARC. Even in MARC
the $c is repeatable, allowing for large number of (unlabeled) components. This system is probably too
restrictive, although it allows us to capture middle name when possible. However, lack of flexible labels
makes MARC a weak standard for names.
surname, forename, additions, numeration, expansion
#### Larger list of components
This list comes from a combination of MARC, Unimarc, ISNI, ArchiveSpace, and British Library. We might be wise
to include others as well (VIAF, BnF, AnF, Archives Hub UK).
surname, middle, forename, prefix, suffix, epithet, title, pretitle, numeration, additional
Unfortunately, current name format guidelines are ambiguous. The most common problem is that middle name could
be a second forename or the second of several additional name components.
There is general agreement on "name" and "non-name" parts, although no guides explicitly talk about this. Name
parts are surname, forename, and middle name. Many other non-name parts are often found in names. Both the
name and non-name parts have ambiguous rules within most systems, and the various systems and cultures have
incomplete agreement.
The database is improved by labeling the compoents where possible, but our algorithms and user
interface can (fairly) easily remaing agnostic about compoent labels while processing anddisplaying the
compoents as well as formatting the components into names.
In the past, failure to create names by (re-) formatting components has led to inconsistent names. While is it
not possible to 100% parse or format names, it is also true that humans who did the data entry were not 100%
accurate in their formats. The computer can be more consistent, and probably nearly as accurate as the human
editors (especially where the editors cannot agree or where they have ambiguous rules). While it is
technically feasible to format names from components, it is also feasible to keep and (carefully) display the
names as originally entered.
#### Overview
ISNI: prefix (NR), surname (NR), forename (additional forenames) (R-ish), middle name (second and subsequent
forenames) (R-ish), suffix (NR)
Unimarc: $a Surname (NR), $b Given name remainder (NR), $c Additions (R), $d Roman numerals (NR), $g Expansion (NR)
MARC: $a name (NR), $b numeration (NR), $c titles and other words (R), $q fuller form (NR)
#### Detailed fields by authority
(R) are repeatable fields. (NR) are non-repeating fields.
#### ISNI
From: ISNI fields of tab delimited format for data submission, A. MacEwan et al.
http://dx.doi.org/10.1080/01639374.2012.730601
http://www.tandfonline.com/doi/abs/10.1080/01639374.2012.730601?journalCode=wccq20
ISNI components:
prefix, surname, forename and additional forenames, middle name second and subsequent forenames, suffix
- prefix: e.g. Sir
- surname: all parts of surname in the form commonly used; for alt form use alt name
- forename: one or more forenames or initials
- middle: second and subsequent forenames
- suffix: e.g. Esq
- ISNI's input format supports a single alternate name in indirect format
#### Unimarc
http://www.ifla.org/files/assets/uca/unimarc_updates/BIBLIOGRAPHIC/u-b_700_update.pdf
Unimarc components:
$a Surname (NR), $b Given name remainder (NR), $c Additions (R), $d Roman numerals (NR), $g Expansion (NR)
LoC MARC 1xx
http://www.loc.gov/marc/authority/ad100.html
MARC and Unimarc are surname oriented: "that part of the name by which the name is entered in ordered
lists", although they allow the main entry to be a forename (distinguished by indicators attribute). All
non-surname parts of the given name are thrown together into forename, both have a numeration field, both
allow many additional components. MARC $c acknowledges that there are many types of other words associated
with names.
MARC components:
$a name (NR), $b numeration (NR), $c titles and other words (R), $q fuller form (NR)
(First indicator determines direct or indirect format of $a.)
```
100 - MAIN ENTRY--PERSONAL NAME (NR)
Indicators
First - Type of personal name entry element
0 - Forename
1 - Surname
3 - Family name
$a - Personal name (NR)
$b - Numeration (NR) [roman numerals]
$c - Titles and other words associated with a name (R) [Jr., King of Sweden, Meister, pseud., Sir, (Anglo-Norman poet), Esq., II]
$d - Dates associated with a name (NR)
$q - Fuller form of name (NR)
```
#### ArchiveSpace
http://sandbox.archivesspace.org/
ArchiveSpace components:
prefix, title, "primary part of name (required)", rest of name, suffix, fuller form.
#### Name and alternate name
There is no consensus on the canonical name. There probably can be no single, always preferred name. What is
preferred depends on context, and will vary for different purposes. In the data we can capture a reasonable
amount of context, but only the users know what is preferred. Computationally, we should treat all name as
alternates. We can offer names in one (or more) of several agreed-upon formats, leaving the choice up to the
user.
Name and alternate has no effect on identity matching because the match is done on all alternates, and uses
all available data from the identity constellation.
#### Name components
Give the variety of components in names, it is not possible to create a canonical, single set of components
for many names and their alternates. Even the concept of "preferred" name is debatable.
It is (mostly) possible to parse out the components for each name and each alternate name. Thus we have as many
sets of name components as we have names for a single identity constellation.
Suggest: we not become dogmatic about component labels. We should avoid "family name" vs surname even though
family name is perhaps more culturally relevant. Ditto givenname vs forename. Goal: be culturally agnostic
in the name_component vocabulary, and capture cultural practice in some other place/table, such as table
name_format.
If we want language specific name components then we need to add field "language" to name_components. Due
to components being extracted from possibly several name strings, we probably will not join table name to
table name_component. It would be a many-to-one join, and given that name component relates to cpf, and not
to one or more name strings, a join between table name and table name component is not logical.
Do we need information about how each name component was derived? If so we are probably better off saving a
log of the name parser than trying to use the database as part of the historical record of name
parsing. One aspect of database-centric component derivation would be a join table to handle the
many-to-many relation between table name and table name component. Complete info about derivation also
requires the name parsing version number and any configuration at the time the parsing was done.
Field nc_label (table name_component) must come from a controlled vocabulary in order for dynamic
formatting to work.
We should not allow our technology to be defined by the "minimal existing implementation" of name. We will
cripple SNAC if we only meet the minimal definition of name. Additionally, SNAC has needs beyond that of
our archives and authority stake holders.
#### Minimal list of components labels
The least flexible system (of the 3 or 4 we have reviewed) for name components is probably MARC. Even in MARC
the $c is repeatable, allowing for large number of (unlabeled) components. This system is probably too
restrictive, although it allows us to capture middle name when possible. However, lack of flexible labels
makes MARC a weak standard for names.
surname, forename, additions, numeration, expansion
#### Larger list of components
This list comes from a combination of MARC, Unimarc, ISNI, ArchiveSpace, and British Library. We might be wise
to include others as well (VIAF, BnF, AnF, Archives Hub UK).
surname, middle, forename, prefix, suffix, epithet, title, pretitle, numeration, additional
Unfortunately, current name format guidelines are ambiguous. The most common problem is that middle name could
be a second forename or the second of several additional name components.
There is general agreement on "name" and "non-name" parts, although no guides explicitly talk about this. Name
parts are surname, forename, and middle name. Many other non-name parts are often found in names. Both the
name and non-name parts have ambiguous rules within most systems, and the various systems and cultures have
incomplete agreement.
The database is improved by labeling the compoents where possible, but our algorithms and user
interface can (fairly) easily remaing agnostic about compoent labels while processing anddisplaying the
compoents as well as formatting the components into names.
In the past, failure to create names by (re-) formatting components has led to inconsistent names. While is it
not possible to 100% parse or format names, it is also true that humans who did the data entry were not 100%
accurate in their formats. The computer can be more consistent, and probably nearly as accurate as the human
editors (especially where the editors cannot agree or where they have ambiguous rules). While it is
technically feasible to format names from components, it is also feasible to keep and (carefully) display the
names as originally entered.
#### Overview
ISNI: prefix (NR), surname (NR), forename (additional forenames) (R-ish), middle name (second and subsequent
forenames) (R-ish), suffix (NR)
Unimarc: $a Surname (NR), $b Given name remainder (NR), $c Additions (R), $d Roman numerals (NR), $g Expansion (NR)
MARC: $a name (NR), $b numeration (NR), $c titles and other words (R), $q fuller form (NR)
#### Detailed fields by authority
(R) are repeatable fields. (NR) are non-repeating fields.
#### ISNI
From: ISNI fields of tab delimited format for data submission, A. MacEwan et al.
http://dx.doi.org/10.1080/01639374.2012.730601
http://www.tandfonline.com/doi/abs/10.1080/01639374.2012.730601?journalCode=wccq20
ISNI components:
prefix, surname, forename and additional forenames, middle name second and subsequent forenames, suffix
- prefix: e.g. Sir
- surname: all parts of surname in the form commonly used; for alt form use alt name
- forename: one or more forenames or initials
- middle: second and subsequent forenames
- suffix: e.g. Esq
- ISNI's input format supports a single alternate name in indirect format
#### Unimarc
http://www.ifla.org/files/assets/uca/unimarc_updates/BIBLIOGRAPHIC/u-b_700_update.pdf
Unimarc components:
$a Surname (NR), $b Given name remainder (NR), $c Additions (R), $d Roman numerals (NR), $g Expansion (NR)
LoC MARC 1xx
http://www.loc.gov/marc/authority/ad100.html
MARC and Unimarc are surname oriented: "that part of the name by which the name is entered in ordered
lists", although they allow the main entry to be a forename (distinguished by indicators attribute). All
non-surname parts of the given name are thrown together into forename, both have a numeration field, both
allow many additional components. MARC $c acknowledges that there are many types of other words associated
with names.
MARC components:
$a name (NR), $b numeration (NR), $c titles and other words (R), $q fuller form (NR)
(First indicator determines direct or indirect format of $a.)
```
100 - MAIN ENTRY--PERSONAL NAME (NR)
Indicators
First - Type of personal name entry element
0 - Forename
1 - Surname
3 - Family name
$a - Personal name (NR)
$b - Numeration (NR) [roman numerals]
$c - Titles and other words associated with a name (R) [Jr., King of Sweden, Meister, pseud., Sir, (Anglo-Norman poet), Esq., II]
$d - Dates associated with a name (NR)
$q - Fuller form of name (NR)
```
#### ArchiveSpace
http://sandbox.archivesspace.org/
ArchiveSpace components:
prefix, title, "primary part of name (required)", rest of name, suffix, fuller form.
#### Introduction
This work flow engine is a lightweight request routing tool. In our application it encapsulates our business
processes at a high level. Architecturally, it lives inside web middle-ware. Its function in the middle-ware
is to handle calling the proper high level functions. We have two workflow engines, because we separate web
UI based workflow from fundamental business (policy) issues, rather than conflating the two problems.
Small web applications that will always be small (a maximum of 5 web pages) often use "page controllers" where
each page handles its own logic, and connections between pages are implicit in the links. Larger sites use a
"front controller" which is a single point of control.
The the workflow engine handles the application decision making logic in the front controller. Business
process decisions are handled in the server-side front controller, and we have separate workflow limited
browser and UI. Web http requests go to the browser controller, where they are normalized for the server
controller. REST calls are also normalized and sent to the same sever controller. Thus interactions with the
server internals always follow consistent business and policy workflow.
It is important to remember that nearly all aspects of the current application design involve lightweight
solutions to typical problems. Rather than a comprehensive framework, we have chosen to use a select set of
off the shelf software modules to construct a framework suitable to our needs.
#### Requirements
The workflow engine encapsulates only decision making. It assumes other code deeper in the application will do
the real work. The decisions are written down in a 4 column state table. Workflow is testable by stepping
through the state table manually. Workflow is also testable via computational methods that will validate that
the states will reach an exit, and that all states are reachable.
The 4 columns are: starting state, boolean transition test, transition function to run, next state. There are
3 pseudo-functions: jump, return, wait. The jump will push the current state onto an internal stack and jump
to a new state. The return pops the stack and returns to that state where it immediately transitions to the
next state. The wait might be called exit since it causes workflow to stop.
Workflow always begins with a default starting state. From a starting node, the boolean transition test is
run. If true, the transition will occur. If false, the next state of the same name will run boolean transition
test. If a transition function exists, it will be run (eval'd). The workflow transitions to the next state,
and the process repeats until the wait function.
To accomodate multiple boolean transition tests, there can be multiple rows with the same starting state
name. These are tested in the order they occur in the state table. If none of the transition tests are true,
the machine halts with an error. This possibility is revealed during testing. By convention, no transition
test is true, thus any starting state may (and probably should) have a default catch-all. In keeping with
business rules this answers the workflow question "What happens at this step if everything goes wrong?"
#### Implementation as thought problem
Implementation can be handled several ways which may help you think (extrapolate) how the
system works.
In the first mode, the workflow engine state table's functions are eval'd as literal function calls. For every
function that the state table calls for a given state transition, the function must exist in the system. A
string "unlock_record()" when eval'd will run the function unlock_record. The workflow engine doesn't know
what exactly goes on inside that function, but it does "know" that it will unlock the current record.
Creation of the workflow involves a shared understanding between the programmer writing the workflow, and the
programmer creating the system code.
digraph States {
# dot -Tsvg constellation_linked.gv -O
# Will create constellation_linked.gv.svg
label = "\n\nIdentity Constellation\nTwo linked identities";
labelloc="t";
fontsize=20;
inputscale=0;
# sep=1;
# splines=true;
overlap=false;
node [pos="4,5!"]; "root1";
node [pos="1,3!"]; ne1;
node [pos="3,3!"]; an1;
node [pos="5,3!"]; ed1;
node [pos="7,3!"]; cr1;
node [pos="10,3!"]; occ1;
node [pos="9,4!"]; rr1;
node [pos="3.3,1.5!"]; "root2";
node [pos="1,2!"]; ne2;
node [pos="3,0!"]; an2;
node [pos="1.5,1!"]; an3;
node [pos="5,0!"]; ed2;
node [pos="7.4,2!"]; cr2;
node [pos="9,0!"]; occ2;
node [pos="8,-1!"]; occ22;
node [pos="10,1.5!"]; rr2;
"ne1","ne2" [label="alt name"];
"an1", "an2", "an3" [label="alt name"];
"ed1", "ed2" [label="exist dates"];
"occ1", "occ2", "occ22" [label="occupation/function"];
"cr1", "cr2" [label="cpf relation"];
"rr1", "rr2" [label="resource relation"];
"root1" [label="identity-A"];
"root2" [label="identity-B"];
root1 -> ne1;
root1 -> an1;
root1 -> ed1;
root1 -> occ1;
root1 -> cr1;
root1-> rr1;
cr1 -> cr2 ;
cr2 -> cr1 ;
root2-> rr2;
cr2 -> root2 [dir="back"];
root2 -> occ2;
root2 -> occ22;
root2 -> ed2;
root2 -> an2;
root2 -> an3;
root2 -> ne2;
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.34.0 (20140101.1016)
-->
<!-- Title: States Pages: 1 -->
<svg width="781pt" height="576pt"
viewBox="0.00 0.00 780.79 576.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 572)">
<title>States</title>
<polygon fill="white" stroke="white" points="-4,4 -4,-572 776.789,-572 776.789,4 -4,4"/>
<text text-anchor="middle" x="386.394" y="-500" font-family="Times,serif" font-size="20.00">Identity Constellation</text>
<text text-anchor="middle" x="386.394" y="-478" font-family="Times,serif" font-size="20.00">Two linked identities</text>
<!-- root1 -->
<g id="node1" class="node"><title>root1</title>
<ellipse fill="none" stroke="black" cx="257.596" cy="-450" rx="48.1917" ry="18"/>
<text text-anchor="middle" x="257.596" y="-446.3" font-family="Times,serif" font-size="14.00">identity&#45;A</text>
</g>
<!-- ne1 -->
<g id="node2" class="node"><title>ne1</title>
<ellipse fill="none" stroke="black" cx="41.5963" cy="-306" rx="41.6928" ry="18"/>
<text text-anchor="middle" x="41.5963" y="-302.3" font-family="Times,serif" font-size="14.00">alt name</text>
</g>
<!-- root1&#45;&gt;ne1 -->
<g id="edge1" class="edge"><title>root1&#45;&gt;ne1</title>
<path fill="none" stroke="black" d="M233.655,-434.039C194.401,-407.87 116.372,-355.851 72.8244,-326.819"/>
<polygon fill="black" stroke="black" points="74.6008,-323.797 64.3388,-321.162 70.7179,-329.621 74.6008,-323.797"/>
</g>
<!-- an1 -->
<g id="node3" class="node"><title>an1</title>
<ellipse fill="none" stroke="black" cx="185.596" cy="-306" rx="41.6928" ry="18"/>
<text text-anchor="middle" x="185.596" y="-302.3" font-family="Times,serif" font-size="14.00">alt name</text>
</g>
<!-- root1&#45;&gt;an1 -->
<g id="edge2" class="edge"><title>root1&#45;&gt;an1</title>
<path fill="none" stroke="black" d="M248.623,-432.053C236.159,-407.126 213.511,-361.829 199.028,-332.864"/>
<polygon fill="black" stroke="black" points="202.059,-331.099 194.456,-323.72 195.798,-334.23 202.059,-331.099"/>
</g>
<!-- ed1 -->
<g id="node4" class="node"><title>ed1</title>
<ellipse fill="none" stroke="black" cx="329.596" cy="-306" rx="48.9926" ry="18"/>
<text text-anchor="middle" x="329.596" y="-302.3" font-family="Times,serif" font-size="14.00">exist dates</text>
</g>
<!-- root1&#45;&gt;ed1 -->
<g id="edge3" class="edge"><title>root1&#45;&gt;ed1</title>
<path fill="none" stroke="black" d="M266.57,-432.053C279.033,-407.126 301.682,-361.829 316.164,-332.864"/>
<polygon fill="black" stroke="black" points="319.394,-334.23 320.736,-323.72 313.133,-331.099 319.394,-334.23"/>
</g>
<!-- cr1 -->
<g id="node5" class="node"><title>cr1</title>
<ellipse fill="none" stroke="black" cx="473.596" cy="-306" rx="52.7911" ry="18"/>
<text text-anchor="middle" x="473.596" y="-302.3" font-family="Times,serif" font-size="14.00">cpf relation</text>
</g>
<!-- root1&#45;&gt;cr1 -->
<g id="edge5" class="edge"><title>root1&#45;&gt;cr1</title>
<path fill="none" stroke="black" d="M281.537,-434.039C320.381,-408.144 397.19,-356.937 440.989,-327.738"/>
<polygon fill="black" stroke="black" points="443.169,-330.491 449.548,-322.032 439.286,-324.667 443.169,-330.491"/>
</g>
<!-- occ1 -->
<g id="node6" class="node"><title>occ1</title>
<ellipse fill="none" stroke="black" cx="689.596" cy="-306" rx="83.3857" ry="18"/>
<text text-anchor="middle" x="689.596" y="-302.3" font-family="Times,serif" font-size="14.00">occupation/function</text>
</g>
<!-- root1&#45;&gt;occ1 -->
<g id="edge4" class="edge"><title>root1&#45;&gt;occ1</title>
<path fill="none" stroke="black" d="M293.685,-437.97C369.23,-412.789 544.441,-354.385 634.288,-324.436"/>
<polygon fill="black" stroke="black" points="635.643,-327.674 644.023,-321.191 633.429,-321.033 635.643,-327.674"/>
</g>
<!-- rr1 -->
<g id="node7" class="node"><title>rr1</title>
<ellipse fill="none" stroke="black" cx="617.596" cy="-378" rx="71.4873" ry="18"/>
<text text-anchor="middle" x="617.596" y="-374.3" font-family="Times,serif" font-size="14.00">resource relation</text>
</g>
<!-- root1&#45;&gt;rr1 -->
<g id="edge6" class="edge"><title>root1&#45;&gt;rr1</title>
<path fill="none" stroke="black" d="M300.307,-441.458C362.388,-429.042 478.113,-405.897 551.324,-391.255"/>
<polygon fill="black" stroke="black" points="552.242,-394.64 561.362,-389.247 550.869,-387.776 552.242,-394.64"/>
</g>
<!-- cr2 -->
<g id="node13" class="node"><title>cr2</title>
<ellipse fill="none" stroke="black" cx="502.396" cy="-234" rx="52.7911" ry="18"/>
<text text-anchor="middle" x="502.396" y="-230.3" font-family="Times,serif" font-size="14.00">cpf relation</text>
</g>
<!-- cr1&#45;&gt;cr2 -->
<g id="edge7" class="edge"><title>cr1&#45;&gt;cr2</title>
<path fill="none" stroke="black" d="M487.121,-288.588C491.074,-280.624 495.068,-271.002 498.167,-262.062"/>
<polygon fill="black" stroke="black" points="501.55,-262.974 501.236,-252.384 494.877,-260.858 501.55,-262.974"/>
</g>
<!-- root2 -->
<g id="node8" class="node"><title>root2</title>
<ellipse fill="none" stroke="black" cx="207.196" cy="-198" rx="47.3916" ry="18"/>
<text text-anchor="middle" x="207.196" y="-194.3" font-family="Times,serif" font-size="14.00">identity&#45;B</text>
</g>
<!-- ne2 -->
<g id="node9" class="node"><title>ne2</title>
<ellipse fill="none" stroke="black" cx="41.5963" cy="-234" rx="41.6928" ry="18"/>
<text text-anchor="middle" x="41.5963" y="-230.3" font-family="Times,serif" font-size="14.00">alt name</text>
</g>
<!-- root2&#45;&gt;ne2 -->
<g id="edge16" class="edge"><title>root2&#45;&gt;ne2</title>
<path fill="none" stroke="black" d="M165.836,-206.991C142.532,-212.057 113.329,-218.406 89.0911,-223.675"/>
<polygon fill="black" stroke="black" points="88.0676,-220.316 79.0393,-225.86 89.5546,-227.156 88.0676,-220.316"/>
</g>
<!-- an2 -->
<g id="node10" class="node"><title>an2</title>
<ellipse fill="none" stroke="black" cx="185.596" cy="-90" rx="41.6928" ry="18"/>
<text text-anchor="middle" x="185.596" y="-86.3" font-family="Times,serif" font-size="14.00">alt name</text>
</g>
<!-- root2&#45;&gt;an2 -->
<g id="edge14" class="edge"><title>root2&#45;&gt;an2</title>
<path fill="none" stroke="black" d="M203.532,-179.679C200.145,-162.743 195.063,-137.331 191.172,-117.878"/>
<polygon fill="black" stroke="black" points="194.6,-117.17 189.206,-108.05 187.736,-118.542 194.6,-117.17"/>
</g>
<!-- an3 -->
<g id="node11" class="node"><title>an3</title>
<ellipse fill="none" stroke="black" cx="77.5963" cy="-162" rx="41.6928" ry="18"/>
<text text-anchor="middle" x="77.5963" y="-158.3" font-family="Times,serif" font-size="14.00">alt name</text>
</g>
<!-- root2&#45;&gt;an3 -->
<g id="edge15" class="edge"><title>root2&#45;&gt;an3</title>
<path fill="none" stroke="black" d="M168.663,-187.296C154.096,-183.25 137.397,-178.611 122.309,-174.42"/>
<polygon fill="black" stroke="black" points="123.239,-171.046 112.667,-171.742 121.365,-177.791 123.239,-171.046"/>
</g>
<!-- ed2 -->
<g id="node12" class="node"><title>ed2</title>
<ellipse fill="none" stroke="black" cx="329.596" cy="-90" rx="48.9926" ry="18"/>
<text text-anchor="middle" x="329.596" y="-86.3" font-family="Times,serif" font-size="14.00">exist dates</text>
</g>
<!-- root2&#45;&gt;ed2 -->
<g id="edge13" class="edge"><title>root2&#45;&gt;ed2</title>
<path fill="none" stroke="black" d="M226.053,-181.362C246.568,-163.26 279.535,-134.172 302.749,-113.689"/>
<polygon fill="black" stroke="black" points="305.334,-116.076 310.516,-106.835 300.702,-110.827 305.334,-116.076"/>
</g>
<!-- occ2 -->
<g id="node14" class="node"><title>occ2</title>
<ellipse fill="none" stroke="black" cx="617.596" cy="-90" rx="83.3857" ry="18"/>
<text text-anchor="middle" x="617.596" y="-86.3" font-family="Times,serif" font-size="14.00">occupation/function</text>
</g>
<!-- root2&#45;&gt;occ2 -->
<g id="edge11" class="edge"><title>root2&#45;&gt;occ2</title>
<path fill="none" stroke="black" d="M246.547,-187.645C317.855,-168.879 468.97,-129.112 554.726,-106.545"/>
<polygon fill="black" stroke="black" points="555.816,-109.877 564.596,-103.948 554.034,-103.108 555.816,-109.877"/>
</g>
<!-- occ22 -->
<g id="node15" class="node"><title>occ22</title>
<ellipse fill="none" stroke="black" cx="545.596" cy="-18" rx="83.3857" ry="18"/>
<text text-anchor="middle" x="545.596" y="-14.3" font-family="Times,serif" font-size="14.00">occupation/function</text>
</g>
<!-- root2&#45;&gt;occ22 -->
<g id="edge12" class="edge"><title>root2&#45;&gt;occ22</title>
<path fill="none" stroke="black" d="M234.889,-183.27C294.561,-151.529 435.496,-76.5642 505.165,-39.5059"/>
<polygon fill="black" stroke="black" points="506.92,-42.5371 514.105,-34.7509 503.632,-36.357 506.92,-42.5371"/>
</g>
<!-- rr2 -->
<g id="node16" class="node"><title>rr2</title>
<ellipse fill="none" stroke="black" cx="689.596" cy="-198" rx="71.4873" ry="18"/>
<text text-anchor="middle" x="689.596" y="-194.3" font-family="Times,serif" font-size="14.00">resource relation</text>
</g>
<!-- root2&#45;&gt;rr2 -->
<g id="edge9" class="edge"><title>root2&#45;&gt;rr2</title>
<path fill="none" stroke="black" d="M254.771,-198C336.927,-198 506.314,-198 607.722,-198"/>
<polygon fill="black" stroke="black" points="607.923,-201.5 617.923,-198 607.923,-194.5 607.923,-201.5"/>
</g>
<!-- cr2&#45;&gt;cr1 -->
<g id="edge8" class="edge"><title>cr2&#45;&gt;cr1</title>
<path fill="none" stroke="black" d="M488.871,-251.412C484.919,-259.376 480.924,-268.998 477.825,-277.938"/>
<polygon fill="black" stroke="black" points="474.443,-277.026 474.756,-287.616 481.115,-279.142 474.443,-277.026"/>
</g>
<!-- cr2&#45;&gt;root2 -->
<g id="edge10" class="edge"><title>cr2&#45;&gt;root2</title>
<path fill="none" stroke="black" d="M442.496,-226.695C386.373,-219.851 303.706,-209.769 252.773,-203.558"/>
<polygon fill="black" stroke="black" points="442.303,-230.197 452.653,-227.934 443.151,-223.249 442.303,-230.197"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.2" baseProfile="tiny" width="279.4mm" height="215.9mm" viewBox="0 0 27940 21590" preserveAspectRatio="xMidYMid" fill-rule="evenodd" clip-path="url(#presentation_clip_path)" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<defs class="ClipPathGroup">
<clipPath id="presentation_clip_path" clipPathUnits="userSpaceOnUse">
<rect x="0" y="0" width="27940" height="21590"/>
</clipPath>
</defs>
<defs>
<font id="EmbeddedFont_1" horiz-adv-x="2048">
<font-face font-family="Liberation Sans embedded" units-per-em="2048" font-weight="normal" font-style="normal" ascent="1855" descent="428"/>
<missing-glyph horiz-adv-x="2048" d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 Z"/>
<glyph unicode="y" horiz-adv-x="1028" d="M 191,-425 C 142,-425 100,-421 67,-414 L 67,-279 C 92,-283 120,-285 151,-285 263,-285 352,-203 417,-38 L 434,5 5,1082 197,1082 425,484 C 428,475 432,464 437,451 442,438 457,394 482,320 507,246 521,205 523,196 L 593,393 830,1082 1020,1082 604,0 C 559,-115 518,-201 479,-258 440,-314 398,-356 351,-384 304,-411 250,-425 191,-425 Z"/>
<glyph unicode="w" horiz-adv-x="1514" d="M 1174,0 L 965,0 776,765 740,934 C 734,904 725,861 712,805 699,748 631,480 508,0 L 300,0 -3,1082 175,1082 358,347 C 363,331 377,265 401,149 L 418,223 644,1082 837,1082 1026,339 1072,149 1103,288 1308,1082 1484,1082 Z"/>
<glyph unicode="v" horiz-adv-x="1028" d="M 613,0 L 400,0 7,1082 199,1082 437,378 C 446,351 469,272 506,141 L 541,258 580,376 826,1082 1017,1082 Z"/>
<glyph unicode="u" horiz-adv-x="914" d="M 314,1082 L 314,396 C 314,325 321,269 335,230 349,191 371,162 402,145 433,128 478,119 537,119 624,119 692,149 742,208 792,267 817,350 817,455 L 817,1082 997,1082 997,231 C 997,105 999,28 1003,0 L 833,0 C 832,3 832,12 831,27 830,42 830,59 829,78 828,97 826,132 825,185 L 822,185 C 781,110 733,58 679,27 624,-5 557,-20 476,-20 357,-20 271,10 216,69 161,128 133,225 133,361 L 133,1082 Z"/>
<glyph unicode="t" horiz-adv-x="543" d="M 554,8 C 495,-8 434,-16 372,-16 228,-16 156,66 156,229 L 156,951 31,951 31,1082 163,1082 216,1324 336,1324 336,1082 536,1082 536,951 336,951 336,268 C 336,216 345,180 362,159 379,138 408,127 450,127 474,127 509,132 554,141 Z"/>
<glyph unicode="s" horiz-adv-x="942" d="M 950,299 C 950,197 912,118 835,63 758,8 650,-20 511,-20 376,-20 273,2 200,47 127,91 79,160 57,254 L 216,285 C 231,227 263,185 311,158 359,131 426,117 511,117 602,117 669,131 712,159 754,187 775,229 775,285 775,328 760,362 731,389 702,416 654,438 589,455 L 460,489 C 357,516 283,542 240,568 196,593 162,624 137,661 112,698 100,743 100,796 100,895 135,970 206,1022 276,1073 378,1099 513,1099 632,1099 727,1078 798,1036 868,994 912,927 931,834 L 769,814 C 759,862 732,899 689,925 645,950 586,963 513,963 432,963 372,951 333,926 294,901 275,864 275,814 275,783 283,758 299,738 315,718 339,701 370,687 401,673 467,654 568,629 663,605 732,583 774,563 816,542 849,520 874,495 898,470 917,442 930,410 943,377 950,340 950,299 Z"/>
<glyph unicode="r" horiz-adv-x="543" d="M 142,0 L 142,830 C 142,906 140,990 136,1082 L 306,1082 C 311,959 314,886 314,861 L 318,861 C 347,954 380,1017 417,1051 454,1085 507,1102 575,1102 599,1102 623,1099 648,1092 L 648,927 C 624,934 592,937 552,937 477,937 420,905 381,841 342,776 322,684 322,564 L 322,0 Z"/>
<glyph unicode="p" horiz-adv-x="943" d="M 1053,546 C 1053,169 920,-20 655,-20 488,-20 376,43 319,168 L 314,168 C 317,163 318,106 318,-2 L 318,-425 138,-425 138,861 C 138,972 136,1046 132,1082 L 306,1082 C 307,1079 308,1070 309,1054 310,1037 312,1012 314,978 315,944 316,921 316,908 L 320,908 C 352,975 394,1024 447,1055 500,1086 569,1101 655,1101 788,1101 888,1056 954,967 1020,878 1053,737 1053,546 Z M 864,542 C 864,693 844,800 803,865 762,930 698,962 609,962 538,962 482,947 442,917 401,887 371,840 350,777 329,713 318,630 318,528 318,386 341,281 386,214 431,147 505,113 607,113 696,113 762,146 803,212 844,277 864,387 864,542 Z"/>
<glyph unicode="o" horiz-adv-x="971" d="M 1053,542 C 1053,353 1011,212 928,119 845,26 724,-20 565,-20 407,-20 288,28 207,125 126,221 86,360 86,542 86,915 248,1102 571,1102 736,1102 858,1057 936,966 1014,875 1053,733 1053,542 Z M 864,542 C 864,691 842,800 798,868 753,935 679,969 574,969 469,969 393,935 346,866 299,797 275,689 275,542 275,399 298,292 345,221 391,149 464,113 563,113 671,113 748,148 795,217 841,286 864,395 864,542 Z"/>
<glyph unicode="n" horiz-adv-x="914" d="M 825,0 L 825,686 C 825,757 818,813 804,852 790,891 768,920 737,937 706,954 661,963 602,963 515,963 447,933 397,874 347,815 322,732 322,627 L 322,0 142,0 142,851 C 142,977 140,1054 136,1082 L 306,1082 C 307,1079 307,1070 308,1055 309,1040 310,1024 311,1005 312,986 313,950 314,897 L 317,897 C 358,972 406,1025 461,1056 515,1087 582,1102 663,1102 782,1102 869,1073 924,1014 979,955 1006,857 1006,721 L 1006,0 Z"/>
<glyph unicode="m" horiz-adv-x="1485" d="M 768,0 L 768,686 C 768,791 754,863 725,903 696,943 645,963 570,963 493,963 433,934 388,875 343,816 321,734 321,627 L 321,0 142,0 142,851 C 142,977 140,1054 136,1082 L 306,1082 C 307,1079 307,1070 308,1055 309,1040 310,1024 311,1005 312,986 313,950 314,897 L 317,897 C 356,974 400,1027 450,1057 500,1087 561,1102 633,1102 715,1102 780,1086 828,1053 875,1020 908,968 927,897 L 930,897 C 967,970 1013,1022 1066,1054 1119,1086 1183,1102 1258,1102 1367,1102 1447,1072 1497,1013 1546,954 1571,856 1571,721 L 1571,0 1393,0 1393,686 C 1393,791 1379,863 1350,903 1321,943 1270,963 1195,963 1116,963 1055,934 1012,876 968,817 946,734 946,627 L 946,0 Z"/>
<glyph unicode="l" horiz-adv-x="229" d="M 138,0 L 138,1484 318,1484 318,0 Z"/>
<glyph unicode="k" horiz-adv-x="914" d="M 816,0 L 450,494 318,385 318,0 138,0 138,1484 318,1484 318,557 793,1082 1004,1082 565,617 1027,0 Z"/>
<glyph unicode="i" horiz-adv-x="229" d="M 137,1312 L 137,1484 317,1484 317,1312 Z M 137,0 L 137,1082 317,1082 317,0 Z"/>
<glyph unicode="h" horiz-adv-x="914" d="M 317,897 C 356,968 402,1020 457,1053 511,1086 580,1102 663,1102 780,1102 867,1073 923,1015 978,956 1006,858 1006,721 L 1006,0 825,0 825,686 C 825,762 818,819 804,856 790,893 767,920 735,937 703,954 659,963 602,963 517,963 450,934 399,875 348,816 322,737 322,638 L 322,0 142,0 142,1484 322,1484 322,1098 C 322,1057 321,1015 319,972 316,929 315,904 314,897 Z"/>
<glyph unicode="g" horiz-adv-x="942" d="M 548,-425 C 430,-425 336,-402 266,-356 196,-309 151,-243 131,-158 L 312,-132 C 324,-182 351,-221 392,-248 433,-275 486,-288 553,-288 732,-288 822,-183 822,27 L 822,201 820,201 C 786,132 739,80 680,45 621,10 551,-8 472,-8 339,-8 242,36 180,124 117,212 86,350 86,539 86,730 120,872 187,963 254,1054 355,1099 492,1099 569,1099 635,1082 692,1047 748,1012 791,962 822,897 L 824,897 C 824,917 825,952 828,1001 831,1050 833,1077 836,1082 L 1007,1082 C 1003,1046 1001,971 1001,858 L 1001,31 C 1001,-273 850,-425 548,-425 Z M 822,541 C 822,629 810,705 786,769 762,832 728,881 685,915 641,948 591,965 536,965 444,965 377,932 335,865 293,798 272,690 272,541 272,393 292,287 331,222 370,157 438,125 533,125 590,125 640,142 684,175 728,208 762,256 786,319 810,381 822,455 822,541 Z"/>
<glyph unicode="f" horiz-adv-x="571" d="M 361,951 L 361,0 181,0 181,951 29,951 29,1082 181,1082 181,1204 C 181,1303 203,1374 246,1417 289,1460 356,1482 445,1482 495,1482 537,1478 572,1470 L 572,1333 C 542,1338 515,1341 492,1341 446,1341 413,1329 392,1306 371,1283 361,1240 361,1179 L 361,1082 572,1082 572,951 Z"/>
<glyph unicode="e" horiz-adv-x="971" d="M 276,503 C 276,379 302,283 353,216 404,149 479,115 578,115 656,115 719,131 766,162 813,193 844,233 861,281 L 1019,236 C 954,65 807,-20 578,-20 418,-20 296,28 213,123 129,218 87,360 87,548 87,727 129,864 213,959 296,1054 416,1102 571,1102 889,1102 1048,910 1048,527 L 1048,503 Z M 862,641 C 852,755 823,838 775,891 727,943 658,969 568,969 481,969 412,940 361,882 310,823 282,743 278,641 Z"/>
<glyph unicode="d" horiz-adv-x="942" d="M 821,174 C 788,105 744,55 689,25 634,-5 565,-20 484,-20 347,-20 247,26 183,118 118,210 86,349 86,536 86,913 219,1102 484,1102 566,1102 634,1087 689,1057 744,1027 788,979 821,914 L 823,914 821,1035 821,1484 1001,1484 1001,223 C 1001,110 1003,36 1007,0 L 835,0 C 833,11 831,35 829,74 826,113 825,146 825,174 Z M 275,542 C 275,391 295,282 335,217 375,152 440,119 530,119 632,119 706,154 752,225 798,296 821,405 821,554 821,697 798,802 752,869 706,936 633,969 532,969 441,969 376,936 336,869 295,802 275,693 275,542 Z"/>
<glyph unicode="c" horiz-adv-x="885" d="M 275,546 C 275,402 298,295 343,226 388,157 457,122 548,122 612,122 666,139 709,174 752,209 778,262 788,334 L 970,322 C 956,218 912,135 837,73 762,11 668,-20 553,-20 402,-20 286,28 207,124 127,219 87,359 87,542 87,724 127,863 207,959 287,1054 402,1102 551,1102 662,1102 754,1073 827,1016 900,959 945,880 964,779 L 779,765 C 770,825 746,873 708,908 670,943 616,961 546,961 451,961 382,929 339,866 296,803 275,696 275,546 Z"/>
<glyph unicode="b" horiz-adv-x="943" d="M 1053,546 C 1053,169 920,-20 655,-20 573,-20 505,-5 451,25 396,54 352,102 318,168 L 316,168 C 316,147 315,116 312,74 309,31 307,7 306,0 L 132,0 C 136,36 138,110 138,223 L 138,1484 318,1484 318,1061 C 318,1018 317,967 314,908 L 318,908 C 351,977 396,1027 451,1057 506,1087 574,1102 655,1102 792,1102 892,1056 957,964 1021,872 1053,733 1053,546 Z M 864,540 C 864,691 844,800 804,865 764,930 699,963 609,963 508,963 434,928 388,859 341,790 318,680 318,529 318,387 341,282 386,215 431,147 505,113 607,113 698,113 763,147 804,214 844,281 864,389 864,540 Z"/>
<glyph unicode="a" horiz-adv-x="1057" d="M 414,-20 C 305,-20 224,9 169,66 114,123 87,202 87,302 87,414 124,500 198,560 271,620 390,652 554,656 L 797,660 797,719 C 797,807 778,870 741,908 704,946 645,965 565,965 484,965 426,951 389,924 352,897 330,853 323,793 L 135,810 C 166,1005 310,1102 569,1102 705,1102 807,1071 876,1009 945,946 979,856 979,738 L 979,272 C 979,219 986,179 1000,152 1014,125 1041,111 1080,111 1097,111 1117,113 1139,118 L 1139,6 C 1094,-5 1047,-10 1000,-10 933,-10 885,8 855,43 824,78 807,132 803,207 L 797,207 C 751,124 698,66 637,32 576,-3 501,-20 414,-20 Z M 455,115 C 521,115 580,130 631,160 682,190 723,231 753,284 782,336 797,390 797,445 L 797,534 600,530 C 515,529 451,520 408,504 364,488 330,463 307,430 284,397 272,353 272,299 272,240 288,195 320,163 351,131 396,115 455,115 Z"/>
<glyph unicode="V" horiz-adv-x="1371" d="M 782,0 L 584,0 9,1409 210,1409 600,417 684,168 768,417 1156,1409 1357,1409 Z"/>
<glyph unicode="S" horiz-adv-x="1199" d="M 1272,389 C 1272,259 1221,158 1120,87 1018,16 875,-20 690,-20 347,-20 148,99 93,338 L 278,375 C 299,290 345,228 414,189 483,149 578,129 697,129 820,129 916,150 983,193 1050,235 1083,297 1083,379 1083,425 1073,462 1052,491 1031,520 1001,543 963,562 925,581 880,596 827,609 774,622 716,635 652,650 541,675 456,699 399,724 341,749 295,776 262,807 229,837 203,872 186,913 168,954 159,1000 159,1053 159,1174 205,1267 298,1332 390,1397 522,1430 694,1430 854,1430 976,1406 1061,1357 1146,1308 1205,1224 1239,1106 L 1051,1073 C 1030,1148 991,1202 933,1236 875,1269 795,1286 692,1286 579,1286 493,1267 434,1230 375,1193 345,1137 345,1063 345,1020 357,984 380,956 403,927 436,903 479,884 522,864 609,840 738,811 781,801 825,791 868,781 911,770 952,758 991,744 1030,729 1067,712 1102,693 1136,674 1166,650 1191,622 1216,594 1236,561 1251,523 1265,485 1272,440 1272,389 Z"/>
<glyph unicode="O" horiz-adv-x="1428" d="M 1495,711 C 1495,564 1467,435 1411,324 1354,213 1273,128 1168,69 1063,10 938,-20 795,-20 650,-20 526,9 421,68 316,127 235,212 180,323 125,434 97,563 97,711 97,936 159,1113 282,1240 405,1367 577,1430 797,1430 940,1430 1065,1402 1170,1345 1275,1288 1356,1205 1412,1096 1467,987 1495,859 1495,711 Z M 1300,711 C 1300,886 1256,1024 1169,1124 1081,1224 957,1274 797,1274 636,1274 511,1225 423,1126 335,1027 291,889 291,711 291,534 336,394 425,291 514,187 637,135 795,135 958,135 1083,185 1170,286 1257,386 1300,528 1300,711 Z"/>
<glyph unicode="L" horiz-adv-x="942" d="M 168,0 L 168,1409 359,1409 359,156 1071,156 1071,0 Z"/>
<glyph unicode="I" horiz-adv-x="230" d="M 189,0 L 189,1409 380,1409 380,0 Z"/>
<glyph unicode="E" horiz-adv-x="1142" d="M 168,0 L 168,1409 1237,1409 1237,1253 359,1253 359,801 1177,801 1177,647 359,647 359,156 1278,156 1278,0 Z"/>
<glyph unicode="C" horiz-adv-x="1342" d="M 792,1274 C 636,1274 515,1224 428,1124 341,1023 298,886 298,711 298,538 343,400 434,295 524,190 646,137 800,137 997,137 1146,235 1245,430 L 1401,352 C 1343,231 1262,138 1157,75 1052,12 930,-20 791,-20 649,-20 526,10 423,69 319,128 240,212 186,322 131,431 104,561 104,711 104,936 165,1112 286,1239 407,1366 575,1430 790,1430 940,1430 1065,1401 1166,1342 1267,1283 1341,1196 1388,1081 L 1207,1021 C 1174,1103 1122,1166 1050,1209 977,1252 891,1274 792,1274 Z"/>
<glyph unicode="?" horiz-adv-x="1028" d="M 1063,1032 C 1063,982 1056,937 1041,898 1026,859 1005,822 978,789 951,756 906,716 844,671 L 764,612 C 716,577 680,541 657,503 634,464 622,422 621,377 L 446,377 C 447,423 455,463 468,498 481,533 497,563 518,590 539,617 562,641 588,662 614,683 640,703 667,722 694,741 720,760 746,779 771,798 794,819 814,842 834,865 850,892 863,921 875,950 881,985 881,1024 881,1100 855,1160 804,1204 752,1248 679,1270 586,1270 493,1270 419,1247 364,1200 309,1153 277,1089 268,1008 L 84,1020 C 101,1152 153,1253 240,1324 327,1395 441,1430 584,1430 733,1430 850,1395 935,1325 1020,1254 1063,1157 1063,1032 Z M 438,0 L 438,201 633,201 633,0 Z"/>
<glyph unicode="/" horiz-adv-x="572" d="M 0,-20 L 411,1484 569,1484 162,-20 Z"/>
<glyph unicode="-" horiz-adv-x="514" d="M 91,464 L 91,624 591,624 591,464 Z"/>
<glyph unicode=")" horiz-adv-x="572" d="M 555,528 C 555,335 525,162 465,9 404,-144 311,-289 186,-424 L 12,-424 C 137,-284 229,-137 287,19 345,174 374,344 374,530 374,716 345,887 287,1042 228,1197 137,1345 12,1484 L 186,1484 C 312,1348 405,1203 465,1050 525,896 555,723 555,532 Z"/>
<glyph unicode="(" horiz-adv-x="572" d="M 127,532 C 127,725 157,898 218,1051 278,1204 371,1349 496,1484 L 670,1484 C 545,1345 454,1198 396,1042 337,886 308,715 308,530 308,345 337,175 395,20 452,-135 544,-283 670,-424 L 496,-424 C 370,-288 277,-143 217,11 157,164 127,337 127,528 Z"/>
<glyph unicode=" " horiz-adv-x="571"/>
</font>
</defs>
<defs class="TextShapeIndex">
<g ooo:slide="id1" ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28"/>
</defs>
<defs class="EmbeddedBulletChars">
<g id="bullet-char-template(57356)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"/>
</g>
<g id="bullet-char-template(57354)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"/>
</g>
<g id="bullet-char-template(10146)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"/>
</g>
<g id="bullet-char-template(10132)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"/>
</g>
<g id="bullet-char-template(10007)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"/>
</g>
<g id="bullet-char-template(10004)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"/>
</g>
<g id="bullet-char-template(9679)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"/>
</g>
<g id="bullet-char-template(8226)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"/>
</g>
<g id="bullet-char-template(8211)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"/>
</g>
</defs>
<defs class="TextEmbeddedBitmaps"/>
<g>
<g id="id2" class="Master_Slide">
<g id="bg-id2" class="Background"/>
<g id="bo-id2" class="BackgroundObjects"/>
</g>
</g>
<g class="SlideGroup">
<g>
<g id="id1" class="Slide" clip-path="url(#presentation_clip_path)">
<g class="Page">
<g class="com.sun.star.drawing.CustomShape">
<g id="id3">
<path fill="rgb(255,255,255)" stroke="none" d="M 9744,1597 C 11076,1597 12094,2092 12094,2740 12094,3388 11076,3883 9744,3883 8412,3883 7395,3388 7395,2740 7395,2092 8412,1597 9744,1597 Z M 7395,1597 L 7395,1597 Z M 12095,3884 L 12095,3884 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 9744,1597 C 11076,1597 12094,2092 12094,2740 12094,3388 11076,3883 9744,3883 8412,3883 7395,3388 7395,2740 7395,2092 8412,1597 9744,1597 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 7395,1597 L 7395,1597 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 12095,3884 L 12095,3884 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="8720" y="2605"><tspan fill="rgb(0,0,0)" stroke="none">Identity</tspan></tspan><tspan class="TextPosition" x="7909" y="3316"><tspan fill="rgb(0,0,0)" stroke="none">Constellation</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id4">
<path fill="rgb(255,255,255)" stroke="none" d="M 12286,13616 C 13618,13616 14636,14111 14636,14759 14636,15407 13618,15902 12286,15902 10954,15902 9937,15407 9937,14759 9937,14111 10954,13616 12286,13616 Z M 9937,13616 L 9937,13616 Z M 14637,15903 L 14637,15903 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 12286,13616 C 13618,13616 14636,14111 14636,14759 14636,15407 13618,15902 12286,15902 10954,15902 9937,15407 9937,14759 9937,14111 10954,13616 12286,13616 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 9937,13616 L 9937,13616 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 14637,15903 L 14637,15903 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="11457" y="14980"><tspan fill="rgb(0,0,0)" stroke="none">Editor</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id5">
<path fill="rgb(255,255,255)" stroke="none" d="M 14524,5318 C 15856,5318 16874,5813 16874,6461 16874,7109 15856,7604 14524,7604 13192,7604 12175,7109 12175,6461 12175,5813 13192,5318 14524,5318 Z M 12175,5318 L 12175,5318 Z M 16875,7605 L 16875,7605 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 14524,5318 C 15856,5318 16874,5813 16874,6461 16874,7109 15856,7604 14524,7604 13192,7604 12175,7109 12175,6461 12175,5813 13192,5318 14524,5318 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 12175,5318 L 12175,5318 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 16875,7605 L 16875,7605 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="13625" y="6326"><tspan fill="rgb(0,0,0)" stroke="none">Status</tspan></tspan><tspan class="TextPosition" x="12865" y="7037"><tspan fill="rgb(0,0,0)" stroke="none">(select one)</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id6">
<path fill="rgb(255,255,255)" stroke="none" d="M 21200,1523 C 22532,1523 23550,2018 23550,2666 23550,3314 22532,3809 21200,3809 19868,3809 18851,3314 18851,2666 18851,2018 19868,1523 21200,1523 Z M 18851,1523 L 18851,1523 Z M 23551,3810 L 23551,3810 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 21200,1523 C 22532,1523 23550,2018 23550,2666 23550,3314 22532,3809 21200,3809 19868,3809 18851,3314 18851,2666 18851,2018 19868,1523 21200,1523 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 18851,1523 L 18851,1523 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 23551,3810 L 23551,3810 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="19842" y="2887"><tspan fill="rgb(0,0,0)" stroke="none">published</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id7">
<path fill="rgb(255,255,255)" stroke="none" d="M 22500,5759 C 23832,5759 24850,6254 24850,6902 24850,7550 23832,8045 22500,8045 21168,8045 20151,7550 20151,6902 20151,6254 21168,5759 22500,5759 Z M 20151,5759 L 20151,5759 Z M 24851,8046 L 24851,8046 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 22500,5759 C 23832,5759 24850,6254 24850,6902 24850,7550 23832,8045 22500,8045 21168,8045 20151,7550 20151,6902 20151,6254 21168,5759 22500,5759 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 20151,5759 L 20151,5759 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 24851,8046 L 24851,8046 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="21178" y="7123"><tspan fill="rgb(0,0,0)" stroke="none">edit/draft </tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id8">
<path fill="rgb(255,255,255)" stroke="none" d="M 22500,8686 C 23832,8686 24850,9181 24850,9829 24850,10477 23832,10972 22500,10972 21168,10972 20151,10477 20151,9829 20151,9181 21168,8686 22500,8686 Z M 20151,8686 L 20151,8686 Z M 24851,10973 L 24851,10973 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 22500,8686 C 23832,8686 24850,9181 24850,9829 24850,10477 23832,10972 22500,10972 21168,10972 20151,10477 20151,9829 20151,9181 21168,8686 22500,8686 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 20151,8686 L 20151,8686 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 24851,10973 L 24851,10973 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="21248" y="10050"><tspan fill="rgb(0,0,0)" stroke="none">in review</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id9">
<path fill="rgb(255,255,255)" stroke="none" d="M 22500,11613 C 23832,11613 24850,12108 24850,12756 24850,13404 23832,13899 22500,13899 21168,13899 20151,13404 20151,12756 20151,12108 21168,11613 22500,11613 Z M 20151,11613 L 20151,11613 Z M 24851,13900 L 24851,13900 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 22500,11613 C 23832,11613 24850,12108 24850,12756 24850,13404 23832,13899 22500,13899 21168,13899 20151,13404 20151,12756 20151,12108 21168,11613 22500,11613 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 20151,11613 L 20151,11613 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 24851,13900 L 24851,13900 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="20894" y="12977"><tspan fill="rgb(0,0,0)" stroke="none">embargoed</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id10">
<path fill="rgb(255,255,255)" stroke="none" d="M 4434,11889 C 5766,11889 6784,12384 6784,13032 6784,13680 5766,14175 4434,14175 3102,14175 2085,13680 2085,13032 2085,12384 3102,11889 4434,11889 Z M 2085,11889 L 2085,11889 Z M 6785,14176 L 6785,14176 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 4434,11889 C 5766,11889 6784,12384 6784,13032 6784,13680 5766,14175 4434,14175 3102,14175 2085,13680 2085,13032 2085,12384 3102,11889 4434,11889 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 2085,11889 L 2085,11889 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 6785,14176 L 6785,14176 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="2457" y="13253"><tspan fill="rgb(0,0,0)" stroke="none">Institution/role</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id11">
<path fill="rgb(255,255,255)" stroke="none" d="M 4237,5018 C 5569,5018 6587,5513 6587,6161 6587,6809 5569,7304 4237,7304 2905,7304 1888,6809 1888,6161 1888,5513 2905,5018 4237,5018 Z M 1888,5018 L 1888,5018 Z M 6588,7305 L 6588,7305 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 4237,5018 C 5569,5018 6587,5513 6587,6161 6587,6809 5569,7304 4237,7304 2905,7304 1888,6809 1888,6161 1888,5513 2905,5018 4237,5018 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 1888,5018 L 1888,5018 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 6588,7305 L 6588,7305 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="3179" y="6382"><tspan fill="rgb(0,0,0)" stroke="none">Version</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id12">
<path fill="rgb(255,255,255)" stroke="none" d="M 22500,17464 C 23832,17464 24850,17959 24850,18607 24850,19255 23832,19750 22500,19750 21168,19750 20151,19255 20151,18607 20151,17959 21168,17464 22500,17464 Z M 20151,17464 L 20151,17464 Z M 24851,19751 L 24851,19751 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 22500,17464 C 23832,17464 24850,17959 24850,18607 24850,19255 23832,19750 22500,19750 21168,19750 20151,19255 20151,18607 20151,17959 21168,17464 22500,17464 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 20151,17464 L 20151,17464 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 24851,19751 L 24851,19751 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="21231" y="18828"><tspan fill="rgb(0,0,0)" stroke="none">(others?)</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id13">
<path fill="none" stroke="rgb(0,0,0)" d="M 11407,3549 L 12619,5299"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 12864,5652 L 12731,5197 12484,5368 12864,5652 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id14">
<path fill="none" stroke="rgb(0,0,0)" d="M 8084,3549 L 6232,5078"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 5900,5352 L 6343,5181 6152,4950 5900,5352 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id15">
<path fill="none" stroke="rgb(0,0,0)" d="M 9938,14759 L 7162,13239"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 6785,13032 L 7108,13380 7252,13117 6785,13032 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id16">
<path fill="none" stroke="rgb(0,0,0)" d="M 9746,3883 L 12179,13200"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 12288,13616 L 12319,13143 12029,13219 12288,13616 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id17">
<path fill="none" stroke="rgb(0,0,0)" d="M 16875,6461 C 18357,6461 17549,3419 18462,2782"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 18852,2666 L 18378,2658 18468,2944 18852,2666 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id18">
<path fill="none" stroke="rgb(0,0,0)" d="M 16875,6461 C 19332,6461 17900,6843 19700,6896"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 20152,6902 L 19704,6746 19700,7046 20152,6902 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id19">
<path fill="none" stroke="rgb(0,0,0)" d="M 16875,6461 C 19332,6461 17890,9404 19721,9788"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 20152,9829 L 19719,9635 19689,9933 20152,9829 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id20">
<path fill="none" stroke="rgb(0,0,0)" d="M 16875,6461 C 19332,6461 17878,12013 19747,12689"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 20152,12756 L 19735,12531 19683,12826 20152,12756 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id21">
<path fill="none" stroke="rgb(0,0,0)" d="M 16875,6461 C 19332,6461 17850,17404 19808,18516"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 20152,18607 L 19759,18341 19678,18630 20152,18607 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id22">
<path fill="none" stroke="rgb(0,0,0)" stroke-width="102" stroke-linejoin="round" d="M 22590,20431 L 18780,20431 18780,4429 26400,4429 26400,20431 22590,20431 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="21565" y="5184"><tspan fill="rgb(0,0,0)" stroke="none">Locked</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id23">
<path fill="none" stroke="rgb(0,0,0)" stroke-width="102" stroke-linejoin="round" d="M 9024,19287 L 1300,19287 1300,10270 16748,10270 16748,19287 9024,19287 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="7576" y="11025"><tspan fill="rgb(0,0,0)" stroke="none">Owned-by</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id24">
<path fill="rgb(255,255,255)" stroke="none" d="M 4434,14678 C 5766,14678 6784,15173 6784,15821 6784,16469 5766,16964 4434,16964 3102,16964 2085,16469 2085,15821 2085,15173 3102,14678 4434,14678 Z M 2085,14678 L 2085,14678 Z M 6785,16965 L 6785,16965 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 4434,14678 C 5766,14678 6784,15173 6784,15821 6784,16469 5766,16964 4434,16964 3102,16964 2085,16469 2085,15821 2085,15173 3102,14678 4434,14678 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 2085,14678 L 2085,14678 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 6785,16965 L 6785,16965 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="2457" y="16042"><tspan fill="rgb(0,0,0)" stroke="none">Institution/role</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id25">
<path fill="none" stroke="rgb(0,0,0)" d="M 9938,14759 L 7193,15684"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 6785,15821 L 7259,15820 7164,15535 6785,15821 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id26">
<path fill="none" stroke="rgb(0,0,0)" stroke-width="102" stroke-linejoin="round" d="M 4679,18272 L 1835,18272 1835,11668 7523,11668 7523,18272 4679,18272 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="3019" y="17958"><tspan fill="rgb(0,0,0)" stroke="none">(select one)</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id27">
<path fill="rgb(255,255,255)" stroke="none" d="M 22500,14540 C 23832,14540 24850,15035 24850,15683 24850,16331 23832,16826 22500,16826 21168,16826 20151,16331 20151,15683 20151,15035 21168,14540 22500,14540 Z M 20151,14540 L 20151,14540 Z M 24851,16827 L 24851,16827 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 22500,14540 C 23832,14540 24850,15035 24850,15683 24850,16331 23832,16826 22500,16826 21168,16826 20151,16331 20151,15683 20151,15035 21168,14540 22500,14540 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 20151,14540 L 20151,14540 Z"/>
<path fill="none" stroke="rgb(0,0,0)" d="M 24851,16827 L 24851,16827 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="21459" y="15904"><tspan fill="rgb(0,0,0)" stroke="none">deleted</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.ConnectorShape">
<g id="id28">
<path fill="none" stroke="rgb(0,0,0)" d="M 16875,6461 C 19332,6461 17865,14678 19776,15599"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 20152,15683 L 19748,15434 19680,15726 20152,15683 Z"/>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
digraph States {
// neato -n2 -Tsvg identity_constellation.gv -O
//
// Absolute positioning appears to only work with neato, and only if all nodes are pinned,
// but not always. neato -n2 units are points, and inputscale appears to be ignored
// sep=0.2 splines=polyline overlap=false allows the pos values to be followed,
// while getting the lines to go around nodes.
label = "\n\nIdentity Constellation";
labelloc="t";
fontsize=20;
// inputscale=75;
sep=0.08;
splines=polyline;
overlap=false;
"an1" [label="alt name"];
"an2", "an3" [label="alt name"];
"ed1" [label="exist dates"];
"occ1", "occ2" [label="occupation\nor function"];
"cr1", "cr2" [label="cpf relation"];
"rr1" [label="resource relation"];
root1 [pos="350,400!" label="identity root"];
place [pos="200,450!" label="related place"];
an1 [pos="100,320!" ];
an2 [pos="100,250!" ];
an3 [pos="100,240!" ];
ed1 [pos="200,200!"];
biog [pos="160,400!" label="biog hist"] ;
cr1 [pos="500,300!"];
cr2 [pos="600,200!"];
et [pos="300,100!" label="entity type"];
occ1 [pos="350,250!"];
occ2 [pos="450,200!"];
rr1 [pos="550,350!"];
src [pos="550,400!" label="source"];
usedate [pos="105,315]", label="use dates"];
an1 -> usedate;
root1 -> et;
root1 -> src;
root1 -> place;
root1 -> an1;
root1 -> an2;
root1 -> an3;
root1 -> ed1;
root1 -> occ1;
root1 -> occ2;
root1 -> cr1;
root1-> rr1;
root1 -> biog;
cr1 -> cr2 ;
cr2 -> cr1 ;
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.34.0 (20140101.1016)
-->
<!-- Title: States Pages: 1 -->
<svg width="637pt" height="472pt"
viewBox="0.00 0.00 637.14 472.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 468)">
<title>States</title>
<polygon fill="white" stroke="white" points="-4,4 -4,-468 633.14,-468 633.14,4 -4,4"/>
<text text-anchor="middle" x="314.57" y="-396" font-family="Times,serif" font-size="20.00">Identity Constellation</text>
<!-- an1 -->
<g id="node1" class="node"><title>an1</title>
<ellipse fill="none" stroke="black" cx="41.5963" cy="-269.413" rx="41.6928" ry="18"/>
<text text-anchor="middle" x="41.5963" y="-265.713" font-family="Times,serif" font-size="14.00">alt name</text>
</g>
<!-- usedate -->
<g id="node15" class="node"><title>usedate</title>
<ellipse fill="none" stroke="black" cx="120.194" cy="-225.48" rx="43.5923" ry="18"/>
<text text-anchor="middle" x="120.194" y="-221.78" font-family="Times,serif" font-size="14.00">use dates</text>
</g>
<!-- an1&#45;&gt;usedate -->
<g id="edge1" class="edge"><title>an1&#45;&gt;usedate</title>
<path fill="none" stroke="black" d="M67.3322,-255.027C72.9733,-251.874 79.0394,-248.484 84.9796,-245.163"/>
<polygon fill="black" stroke="black" points="87.1102,-247.982 94.1315,-240.048 83.6949,-241.872 87.1102,-247.982"/>
</g>
<!-- an2 -->
<g id="node2" class="node"><title>an2</title>
<ellipse fill="none" stroke="black" cx="70.388" cy="-182.051" rx="41.6928" ry="18"/>
<text text-anchor="middle" x="70.388" y="-178.351" font-family="Times,serif" font-size="14.00">alt name</text>
</g>
<!-- an3 -->
<g id="node3" class="node"><title>an3</title>
<ellipse fill="none" stroke="black" cx="52.8941" cy="-82.5315" rx="41.6928" ry="18"/>
<text text-anchor="middle" x="52.8941" y="-78.8315" font-family="Times,serif" font-size="14.00">alt name</text>
</g>
<!-- ed1 -->
<g id="node4" class="node"><title>ed1</title>
<ellipse fill="none" stroke="black" cx="176.494" cy="-118" rx="48.9926" ry="18"/>
<text text-anchor="middle" x="176.494" y="-114.3" font-family="Times,serif" font-size="14.00">exist dates</text>
</g>
<!-- occ1 -->
<g id="node5" class="node"><title>occ1</title>
<ellipse fill="none" stroke="black" cx="326.494" cy="-168" rx="55.3091" ry="26.7407"/>
<text text-anchor="middle" x="326.494" y="-171.8" font-family="Times,serif" font-size="14.00">occupation</text>
<text text-anchor="middle" x="326.494" y="-156.8" font-family="Times,serif" font-size="14.00">or function</text>
</g>
<!-- occ2 -->
<g id="node6" class="node"><title>occ2</title>
<ellipse fill="none" stroke="black" cx="426.494" cy="-118" rx="55.3091" ry="26.7407"/>
<text text-anchor="middle" x="426.494" y="-121.8" font-family="Times,serif" font-size="14.00">occupation</text>
<text text-anchor="middle" x="426.494" y="-106.8" font-family="Times,serif" font-size="14.00">or function</text>
</g>
<!-- cr1 -->
<g id="node7" class="node"><title>cr1</title>
<ellipse fill="none" stroke="black" cx="476.494" cy="-218" rx="52.7911" ry="18"/>
<text text-anchor="middle" x="476.494" y="-214.3" font-family="Times,serif" font-size="14.00">cpf relation</text>
</g>
<!-- cr2 -->
<g id="node8" class="node"><title>cr2</title>
<ellipse fill="none" stroke="black" cx="576.494" cy="-118" rx="52.7911" ry="18"/>
<text text-anchor="middle" x="576.494" y="-114.3" font-family="Times,serif" font-size="14.00">cpf relation</text>
</g>
<!-- cr1&#45;&gt;cr2 -->
<g id="edge14" class="edge"><title>cr1&#45;&gt;cr2</title>
<path fill="none" stroke="black" d="M493.913,-200.581C509.973,-184.521 533.976,-160.518 551.972,-142.523"/>
<polygon fill="black" stroke="black" points="554.679,-144.765 559.275,-135.219 549.729,-139.815 554.679,-144.765"/>
</g>
<!-- cr2&#45;&gt;cr1 -->
<g id="edge15" class="edge"><title>cr2&#45;&gt;cr1</title>
<path fill="none" stroke="black" d="M559.076,-135.419C543.016,-151.479 519.012,-175.482 501.017,-193.477"/>
<polygon fill="black" stroke="black" points="498.31,-191.235 493.713,-200.781 503.259,-196.185 498.31,-191.235"/>
</g>
<!-- rr1 -->
<g id="node9" class="node"><title>rr1</title>
<ellipse fill="none" stroke="black" cx="526.494" cy="-268" rx="71.4873" ry="18"/>
<text text-anchor="middle" x="526.494" y="-264.3" font-family="Times,serif" font-size="14.00">resource relation</text>
</g>
<!-- root1 -->
<g id="node10" class="node"><title>root1</title>
<ellipse fill="none" stroke="black" cx="326.494" cy="-318" rx="55.4913" ry="18"/>
<text text-anchor="middle" x="326.494" y="-314.3" font-family="Times,serif" font-size="14.00">identity root</text>
</g>
<!-- root1&#45;&gt;an1 -->
<g id="edge5" class="edge"><title>root1&#45;&gt;an1</title>
<path fill="none" stroke="black" d="M277.519,-309.648C225.166,-300.719 142.657,-286.648 90.379,-277.732"/>
<polygon fill="black" stroke="black" points="90.7905,-274.252 80.3444,-276.021 89.6137,-281.152 90.7905,-274.252"/>
</g>
<!-- root1&#45;&gt;an2 -->
<g id="edge6" class="edge"><title>root1&#45;&gt;an2</title>
<path fill="none" stroke="black" d="M300.146,-301.895C251.614,-272.23 153.009,-211.959 153.009,-211.959 153.009,-211.959 132.706,-204.61 112.23,-197.197"/>
<polygon fill="black" stroke="black" points="113.162,-193.813 102.568,-193.7 110.78,-200.395 113.162,-193.813"/>
</g>
<!-- root1&#45;&gt;an3 -->
<g id="edge7" class="edge"><title>root1&#45;&gt;an3</title>
<path fill="none" stroke="black" d="M306.818,-301.066C258.568,-259.541 134.333,-152.62 79.5364,-105.461"/>
<polygon fill="black" stroke="black" points="81.5287,-102.558 71.6661,-98.6872 76.9625,-107.863 81.5287,-102.558"/>
</g>
<!-- root1&#45;&gt;ed1 -->
<g id="edge8" class="edge"><title>root1&#45;&gt;ed1</title>
<path fill="none" stroke="black" d="M313.183,-300.251C286.541,-264.729 226.578,-184.778 195.689,-143.593"/>
<polygon fill="black" stroke="black" points="198.362,-141.323 189.562,-135.423 192.762,-145.523 198.362,-141.323"/>
</g>
<!-- root1&#45;&gt;occ1 -->
<g id="edge9" class="edge"><title>root1&#45;&gt;occ1</title>
<path fill="none" stroke="black" d="M326.494,-299.906C326.494,-276.556 326.494,-235.353 326.494,-205.194"/>
<polygon fill="black" stroke="black" points="329.994,-205.034 326.494,-195.034 322.994,-205.034 329.994,-205.034"/>
</g>
<!-- root1&#45;&gt;occ2 -->
<g id="edge10" class="edge"><title>root1&#45;&gt;occ2</title>
<path fill="none" stroke="black" d="M335.545,-299.899C352.073,-266.843 387.408,-196.172 408.844,-153.301"/>
<polygon fill="black" stroke="black" points="411.983,-154.848 413.325,-144.338 405.722,-151.718 411.983,-154.848"/>
</g>
<!-- root1&#45;&gt;cr1 -->
<g id="edge11" class="edge"><title>root1&#45;&gt;cr1</title>
<path fill="none" stroke="black" d="M350.928,-301.711C376.098,-284.931 415.489,-258.67 443.433,-240.041"/>
<polygon fill="black" stroke="black" points="445.692,-242.742 452.071,-234.282 441.809,-236.917 445.692,-242.742"/>
</g>
<!-- root1&#45;&gt;rr1 -->
<g id="edge12" class="edge"><title>root1&#45;&gt;rr1</title>
<path fill="none" stroke="black" d="M370.385,-307.027C398.4,-300.024 435.101,-290.848 465.878,-283.154"/>
<polygon fill="black" stroke="black" points="466.791,-286.534 475.644,-280.713 465.094,-279.743 466.791,-286.534"/>
</g>
<!-- place -->
<g id="node11" class="node"><title>place</title>
<ellipse fill="none" stroke="black" cx="176.494" cy="-368" rx="57.3905" ry="18"/>
<text text-anchor="middle" x="176.494" y="-364.3" font-family="Times,serif" font-size="14.00">related place</text>
</g>
<!-- root1&#45;&gt;place -->
<g id="edge4" class="edge"><title>root1&#45;&gt;place</title>
<path fill="none" stroke="black" d="M287.866,-330.876C268.843,-337.217 245.702,-344.931 225.453,-351.681"/>
<polygon fill="black" stroke="black" points="224.155,-348.424 215.775,-354.906 226.369,-355.065 224.155,-348.424"/>
</g>
<!-- biog -->
<g id="node12" class="node"><title>biog</title>
<ellipse fill="none" stroke="black" cx="136.494" cy="-318" rx="42.4939" ry="18"/>
<text text-anchor="middle" x="136.494" y="-314.3" font-family="Times,serif" font-size="14.00">biog hist</text>
</g>
<!-- root1&#45;&gt;biog -->
<g id="edge13" class="edge"><title>root1&#45;&gt;biog</title>
<path fill="none" stroke="black" d="M271.028,-318C245.227,-318 214.692,-318 189.24,-318"/>
<polygon fill="black" stroke="black" points="189.034,-314.5 179.034,-318 189.034,-321.5 189.034,-314.5"/>
</g>
<!-- et -->
<g id="node13" class="node"><title>et</title>
<ellipse fill="none" stroke="black" cx="276.494" cy="-18" rx="49.2915" ry="18"/>
<text text-anchor="middle" x="276.494" y="-14.3" font-family="Times,serif" font-size="14.00">entity type</text>
</g>
<!-- root1&#45;&gt;et -->
<g id="edge2" class="edge"><title>root1&#45;&gt;et</title>
<path fill="none" stroke="black" d="M319.416,-299.896C303.808,-259.976 267.81,-167.909 267.81,-167.909 267.81,-167.909 272.337,-89.7605 274.854,-46.3123"/>
<polygon fill="black" stroke="black" points="278.363,-46.2682 275.447,-36.0825 271.374,-45.8633 278.363,-46.2682"/>
</g>
<!-- src -->
<g id="node14" class="node"><title>src</title>
<ellipse fill="none" stroke="black" cx="526.494" cy="-318" rx="34.394" ry="18"/>
<text text-anchor="middle" x="526.494" y="-314.3" font-family="Times,serif" font-size="14.00">source</text>
</g>
<!-- root1&#45;&gt;src -->
<g id="edge3" class="edge"><title>root1&#45;&gt;src</title>
<path fill="none" stroke="black" d="M381.94,-318C413.48,-318 452.454,-318 481.982,-318"/>
<polygon fill="black" stroke="black" points="482.005,-321.5 492.005,-318 482.005,-314.5 482.005,-321.5"/>
</g>
</g>
</svg>
digraph States {
// neato -n2 -Tsvg identity_constellation_repeats.gv -O
//
// Absolute positioning appears to only work with neato, and only if all nodes are pinned,
// but not always. neato -n2 units are points, and inputscale appears to be ignored
// sep=0.2 splines=polyline overlap=false allows the pos values to be followed,
// while getting the lines to go around nodes.
label = "\n\nIdentity Constellation\n(R) repeatable fields";
labelloc="t";
fontsize=20;
// inputscale=75;
sep=0.05;
// nodesep is a synonym for sep?
// nodesep=0.1;
splines=polyline;
overlap=false;
"an1" [label="name/alt(R)"];
"ed1" [label="exist dates"];
"occ1" [label="occupation\nor function(R)"];
"cr1" [label="identity relation(R)"];
"rr1" [label="resource relation(R)"];
root1 [pos="470,400!" label="identity root"];
place [pos="320,450!" label="related place(R)"];
an1 [pos="270,350!" ];
pref [pos="120,410!" label="preferred"];
usedate [pos="120,350!", label="use dates"];
name_components [pos="140,300!", label="components"];
language [pos="150,250!", label="language"];
script [pos="180,200!", label="script"];
authorized_form [pos="210,140!", label="authorized\nform"];
an1 -> language;
an1 -> script;
an1 ->authorized_form;
an1 -> pref;
name_components -> surname;
name_components -> forename;
name_components -> numeration;
name_components -> prefix;
name_components -> suffix;
surname [pos="0,350!", label="surname(R)"];
forename [pos="0,300!", label="forename(R)"];
numeration [pos="0,250!", label="numeration"];
prefix [pos="0,200!", label="prefix(R)"];
suffix [pos="0,150!", label="suffix(R)"];
ed1 [pos="330,270!"];
biog [pos="280,400!" label="biog hist"] ;
cr1 [pos="730,310!"];
et [pos="340,100!" label="entity type"];
occ1 [pos="550,250!"];
subject [pos="460,180!" label="topical subject(R)"];
rr1 [pos="720,200!"];
src [pos="670,400!" label="source(R)"];
citation [pos="690,450!" label="citation(R)"];
root1 -> subject;
root1 -> citation;
root1 -> et;
root1 -> src;
root1 -> place;
root1 -> an1;
root1 -> ed1;
root1 -> occ1;
root1 -> cr1;
root1-> rr1;
root1 -> biog;
an1 -> usedate;
an1 -> name_components;
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.34.0 (20140101.1016)
-->
<!-- Title: States Pages: 1 -->
<svg width="876pt" height="494pt"
viewBox="0.00 0.00 875.79 494.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 490)">
<title>States</title>
<polygon fill="white" stroke="white" points="-4,4 -4,-490 871.788,-490 871.788,4 -4,4"/>
<text text-anchor="middle" x="433.894" y="-418" font-family="Times,serif" font-size="20.00">Identity Constellation</text>
<text text-anchor="middle" x="433.894" y="-396" font-family="Times,serif" font-size="20.00">(R) repeatable fields</text>
<!-- an1 -->
<g id="node1" class="node"><title>an1</title>
<ellipse fill="none" stroke="black" cx="327.195" cy="-268" rx="53.8905" ry="18"/>
<text text-anchor="middle" x="327.195" y="-264.3" font-family="Times,serif" font-size="14.00">name/alt(R)</text>
</g>
<!-- pref -->
<g id="node8" class="node"><title>pref</title>
<ellipse fill="none" stroke="black" cx="177.195" cy="-328" rx="44.393" ry="18"/>
<text text-anchor="middle" x="177.195" y="-324.3" font-family="Times,serif" font-size="14.00">preferred</text>
</g>
<!-- an1&#45;&gt;pref -->
<g id="edge4" class="edge"><title>an1&#45;&gt;pref</title>
<path fill="none" stroke="black" d="M292.405,-281.916C270.292,-290.761 241.559,-302.254 218.319,-311.55"/>
<polygon fill="black" stroke="black" points="216.716,-308.422 208.731,-315.385 219.316,-314.921 216.716,-308.422"/>
</g>
<!-- usedate -->
<g id="node9" class="node"><title>usedate</title>
<ellipse fill="none" stroke="black" cx="177.195" cy="-268" rx="43.5923" ry="18"/>
<text text-anchor="middle" x="177.195" y="-264.3" font-family="Times,serif" font-size="14.00">use dates</text>
</g>
<!-- an1&#45;&gt;usedate -->
<g id="edge21" class="edge"><title>an1&#45;&gt;usedate</title>
<path fill="none" stroke="black" d="M273.041,-268C259.4,-268 244.758,-268 231.127,-268"/>
<polygon fill="black" stroke="black" points="230.934,-264.5 220.934,-268 230.934,-271.5 230.934,-264.5"/>
</g>
<!-- name_components -->
<g id="node10" class="node"><title>name_components</title>
<ellipse fill="none" stroke="black" cx="197.195" cy="-218" rx="54.6905" ry="18"/>
<text text-anchor="middle" x="197.195" y="-214.3" font-family="Times,serif" font-size="14.00">components</text>
</g>
<!-- an1&#45;&gt;name_components -->
<g id="edge22" class="edge"><title>an1&#45;&gt;name_components</title>
<path fill="none" stroke="black" d="M291.672,-254.337C276.606,-248.543 258.859,-241.717 242.839,-235.555"/>
<polygon fill="black" stroke="black" points="243.717,-232.143 233.127,-231.82 241.204,-238.676 243.717,-232.143"/>
</g>
<!-- language -->
<g id="node11" class="node"><title>language</title>
<ellipse fill="none" stroke="black" cx="207.195" cy="-168" rx="43.5923" ry="18"/>
<text text-anchor="middle" x="207.195" y="-164.3" font-family="Times,serif" font-size="14.00">language</text>
</g>
<!-- an1&#45;&gt;language -->
<g id="edge1" class="edge"><title>an1&#45;&gt;language</title>
<path fill="none" stroke="black" d="M307.11,-251.262C287.143,-234.624 256.385,-208.992 234.27,-190.563"/>
<polygon fill="black" stroke="black" points="236.473,-187.842 226.55,-184.129 231.992,-193.22 236.473,-187.842"/>
</g>
<!-- script -->
<g id="node12" class="node"><title>script</title>
<ellipse fill="none" stroke="black" cx="237.195" cy="-118" rx="31.3957" ry="18"/>
<text text-anchor="middle" x="237.195" y="-114.3" font-family="Times,serif" font-size="14.00">script</text>
</g>
<!-- an1&#45;&gt;script -->
<g id="edge2" class="edge"><title>an1&#45;&gt;script</title>
<path fill="none" stroke="black" d="M316.517,-250.204C300.735,-223.901 271.087,-174.487 252.847,-144.087"/>
<polygon fill="black" stroke="black" points="255.727,-142.084 247.581,-135.31 249.725,-145.686 255.727,-142.084"/>
</g>
<!-- authorized_form -->
<g id="node13" class="node"><title>authorized_form</title>
<ellipse fill="none" stroke="black" cx="267.195" cy="-58" rx="53.9813" ry="26.7407"/>
<text text-anchor="middle" x="267.195" y="-61.8" font-family="Times,serif" font-size="14.00">authorized</text>
<text text-anchor="middle" x="267.195" y="-46.8" font-family="Times,serif" font-size="14.00">form</text>
</g>
<!-- an1&#45;&gt;authorized_form -->
<g id="edge3" class="edge"><title>an1&#45;&gt;authorized_form</title>
<path fill="none" stroke="black" d="M321.975,-249.731C312.115,-215.22 290.581,-139.851 277.643,-94.5675"/>
<polygon fill="black" stroke="black" points="280.976,-93.4937 274.863,-84.84 274.245,-95.4168 280.976,-93.4937"/>
</g>
<!-- ed1 -->
<g id="node2" class="node"><title>ed1</title>
<ellipse fill="none" stroke="black" cx="387.195" cy="-188" rx="48.9926" ry="18"/>
<text text-anchor="middle" x="387.195" y="-184.3" font-family="Times,serif" font-size="14.00">exist dates</text>
</g>
<!-- occ1 -->
<g id="node3" class="node"><title>occ1</title>
<ellipse fill="none" stroke="black" cx="607.195" cy="-168" rx="68.6788" ry="26.7407"/>
<text text-anchor="middle" x="607.195" y="-171.8" font-family="Times,serif" font-size="14.00">occupation</text>
<text text-anchor="middle" x="607.195" y="-156.8" font-family="Times,serif" font-size="14.00">or function(R)</text>
</g>
<!-- cr1 -->
<g id="node4" class="node"><title>cr1</title>
<ellipse fill="none" stroke="black" cx="787.195" cy="-228" rx="80.6858" ry="18"/>
<text text-anchor="middle" x="787.195" y="-224.3" font-family="Times,serif" font-size="14.00">identity relation(R)</text>
</g>
<!-- rr1 -->
<g id="node5" class="node"><title>rr1</title>
<ellipse fill="none" stroke="black" cx="777.195" cy="-118" rx="83.6854" ry="18"/>
<text text-anchor="middle" x="777.195" y="-114.3" font-family="Times,serif" font-size="14.00">resource relation(R)</text>
</g>
<!-- root1 -->
<g id="node6" class="node"><title>root1</title>
<ellipse fill="none" stroke="black" cx="527.195" cy="-318" rx="55.4913" ry="18"/>
<text text-anchor="middle" x="527.195" y="-314.3" font-family="Times,serif" font-size="14.00">identity root</text>
</g>
<!-- root1&#45;&gt;an1 -->
<g id="edge15" class="edge"><title>root1&#45;&gt;an1</title>
<path fill="none" stroke="black" d="M483.304,-307.027C453.111,-299.479 412.827,-289.408 380.744,-281.387"/>
<polygon fill="black" stroke="black" points="381.189,-277.891 370.639,-278.861 379.492,-284.682 381.189,-277.891"/>
</g>
<!-- root1&#45;&gt;ed1 -->
<g id="edge16" class="edge"><title>root1&#45;&gt;ed1</title>
<path fill="none" stroke="black" d="M508.892,-301.005C484.367,-278.231 440.713,-237.695 412.898,-211.867"/>
<polygon fill="black" stroke="black" points="415.212,-209.239 405.502,-204.999 410.448,-214.369 415.212,-209.239"/>
</g>
<!-- root1&#45;&gt;occ1 -->
<g id="edge17" class="edge"><title>root1&#45;&gt;occ1</title>
<path fill="none" stroke="black" d="M536.686,-300.204C549.364,-276.433 572.109,-233.786 588.338,-203.357"/>
<polygon fill="black" stroke="black" points="591.529,-204.811 593.147,-194.34 585.353,-201.516 591.529,-204.811"/>
</g>
<!-- root1&#45;&gt;cr1 -->
<g id="edge18" class="edge"><title>root1&#45;&gt;cr1</title>
<path fill="none" stroke="black" d="M565.28,-304.817C609.71,-289.437 683.468,-263.905 733.65,-246.535"/>
<polygon fill="black" stroke="black" points="735.051,-249.754 743.356,-243.175 732.761,-243.139 735.051,-249.754"/>
</g>
<!-- root1&#45;&gt;rr1 -->
<g id="edge19" class="edge"><title>root1&#45;&gt;rr1</title>
<path fill="none" stroke="black" d="M548.08,-301.292C592.323,-265.897 695.639,-183.245 747.041,-142.123"/>
<polygon fill="black" stroke="black" points="749.502,-144.637 755.124,-135.657 745.129,-139.171 749.502,-144.637"/>
</g>
<!-- place -->
<g id="node7" class="node"><title>place</title>
<ellipse fill="none" stroke="black" cx="377.195" cy="-368" rx="68.7879" ry="18"/>
<text text-anchor="middle" x="377.195" y="-364.3" font-family="Times,serif" font-size="14.00">related place(R)</text>
</g>
<!-- root1&#45;&gt;place -->
<g id="edge14" class="edge"><title>root1&#45;&gt;place</title>
<path fill="none" stroke="black" d="M488.566,-330.876C470.596,-336.866 448.949,-344.082 429.538,-350.552"/>
<polygon fill="black" stroke="black" points="428.299,-347.276 419.919,-353.759 430.512,-353.917 428.299,-347.276"/>
</g>
<!-- biog -->
<g id="node19" class="node"><title>biog</title>
<ellipse fill="none" stroke="black" cx="337.195" cy="-318" rx="42.4939" ry="18"/>
<text text-anchor="middle" x="337.195" y="-314.3" font-family="Times,serif" font-size="14.00">biog hist</text>
</g>
<!-- root1&#45;&gt;biog -->
<g id="edge20" class="edge"><title>root1&#45;&gt;biog</title>
<path fill="none" stroke="black" d="M471.728,-318C445.928,-318 415.393,-318 389.94,-318"/>
<polygon fill="black" stroke="black" points="389.735,-314.5 379.735,-318 389.735,-321.5 389.735,-314.5"/>
</g>
<!-- et -->
<g id="node20" class="node"><title>et</title>
<ellipse fill="none" stroke="black" cx="397.195" cy="-18" rx="49.2915" ry="18"/>
<text text-anchor="middle" x="397.195" y="-14.3" font-family="Times,serif" font-size="14.00">entity type</text>
</g>
<!-- root1&#45;&gt;et -->
<g id="edge12" class="edge"><title>root1&#45;&gt;et</title>
<path fill="none" stroke="black" d="M519.452,-300.132C497.602,-249.707 435.346,-106.04 409.097,-45.467"/>
<polygon fill="black" stroke="black" points="412.249,-43.9375 405.061,-36.1536 405.826,-46.7208 412.249,-43.9375"/>
</g>
<!-- subject -->
<g id="node21" class="node"><title>subject</title>
<ellipse fill="none" stroke="black" cx="517.195" cy="-98" rx="75.2868" ry="18"/>
<text text-anchor="middle" x="517.195" y="-94.3" font-family="Times,serif" font-size="14.00">topical subject(R)</text>
</g>
<!-- root1&#45;&gt;subject -->
<g id="edge10" class="edge"><title>root1&#45;&gt;subject</title>
<path fill="none" stroke="black" d="M526.377,-299.996C524.641,-261.804 520.577,-172.408 518.487,-126.426"/>
<polygon fill="black" stroke="black" points="521.975,-126.083 518.025,-116.252 514.982,-126.401 521.975,-126.083"/>
</g>
<!-- src -->
<g id="node22" class="node"><title>src</title>
<ellipse fill="none" stroke="black" cx="727.195" cy="-318" rx="46.5926" ry="18"/>
<text text-anchor="middle" x="727.195" y="-314.3" font-family="Times,serif" font-size="14.00">source(R)</text>
</g>
<!-- root1&#45;&gt;src -->
<g id="edge13" class="edge"><title>root1&#45;&gt;src</title>
<path fill="none" stroke="black" d="M582.64,-318C609.805,-318 642.483,-318 669.892,-318"/>
<polygon fill="black" stroke="black" points="670.117,-321.5 680.117,-318 670.117,-314.5 670.117,-321.5"/>
</g>
<!-- citation -->
<g id="node23" class="node"><title>citation</title>
<ellipse fill="none" stroke="black" cx="747.195" cy="-368" rx="50.0912" ry="18"/>
<text text-anchor="middle" x="747.195" y="-364.3" font-family="Times,serif" font-size="14.00">citation(R)</text>
</g>
<!-- root1&#45;&gt;citation -->
<g id="edge11" class="edge"><title>root1&#45;&gt;citation</title>
<path fill="none" stroke="black" d="M572.512,-328.299C607.925,-336.348 657.209,-347.549 694.402,-356.002"/>
<polygon fill="black" stroke="black" points="694.024,-359.505 704.551,-358.308 695.575,-352.679 694.024,-359.505"/>
</g>
<!-- surname -->
<g id="node14" class="node"><title>surname</title>
<ellipse fill="none" stroke="black" cx="57.1949" cy="-268" rx="53.8905" ry="18"/>
<text text-anchor="middle" x="57.1949" y="-264.3" font-family="Times,serif" font-size="14.00">surname(R)</text>
</g>
<!-- name_components&#45;&gt;surname -->
<g id="edge5" class="edge"><title>name_components&#45;&gt;surname</title>
<path fill="none" stroke="black" d="M160.045,-231.268C142.741,-237.448 121.974,-244.865 103.645,-251.411"/>
<polygon fill="black" stroke="black" points="102.273,-248.184 94.0326,-254.844 104.627,-254.776 102.273,-248.184"/>
</g>
<!-- forename -->
<g id="node15" class="node"><title>forename</title>
<ellipse fill="none" stroke="black" cx="57.1949" cy="-218" rx="57.3905" ry="18"/>
<text text-anchor="middle" x="57.1949" y="-214.3" font-family="Times,serif" font-size="14.00">forename(R)</text>
</g>
<!-- name_components&#45;&gt;forename -->
<g id="edge6" class="edge"><title>name_components&#45;&gt;forename</title>
<path fill="none" stroke="black" d="M142.265,-218C136.615,-218 130.828,-218 125.061,-218"/>
<polygon fill="black" stroke="black" points="124.733,-214.5 114.733,-218 124.733,-221.5 124.733,-214.5"/>
</g>
<!-- numeration -->
<g id="node16" class="node"><title>numeration</title>
<ellipse fill="none" stroke="black" cx="57.1949" cy="-168" rx="51.9908" ry="18"/>
<text text-anchor="middle" x="57.1949" y="-164.3" font-family="Times,serif" font-size="14.00">numeration</text>
</g>
<!-- name_components&#45;&gt;numeration -->
<g id="edge7" class="edge"><title>name_components&#45;&gt;numeration</title>
<path fill="none" stroke="black" d="M160.045,-204.732C142.604,-198.503 121.644,-191.017 103.209,-184.433"/>
<polygon fill="black" stroke="black" points="104.143,-181.051 93.5487,-180.983 101.789,-187.643 104.143,-181.051"/>
</g>
<!-- prefix -->
<g id="node17" class="node"><title>prefix</title>
<ellipse fill="none" stroke="black" cx="57.1949" cy="-118" rx="44.393" ry="18"/>
<text text-anchor="middle" x="57.1949" y="-114.3" font-family="Times,serif" font-size="14.00">prefix(R)</text>
</g>
<!-- name_components&#45;&gt;prefix -->
<g id="edge8" class="edge"><title>name_components&#45;&gt;prefix</title>
<path fill="none" stroke="black" d="M174.077,-201.487C150.492,-184.641 113.768,-158.409 87.7865,-139.851"/>
<polygon fill="black" stroke="black" points="89.5935,-136.841 79.4218,-133.876 85.5248,-142.537 89.5935,-136.841"/>
</g>
<!-- suffix -->
<g id="node18" class="node"><title>suffix</title>
<ellipse fill="none" stroke="black" cx="57.1949" cy="-68" rx="43.5923" ry="18"/>
<text text-anchor="middle" x="57.1949" y="-64.3" font-family="Times,serif" font-size="14.00">suffix(R)</text>
</g>
<!-- name_components&#45;&gt;suffix -->
<g id="edge9" class="edge"><title>name_components&#45;&gt;suffix</title>
<path fill="none" stroke="black" d="M181.135,-200.793C156.345,-174.232 108.653,-123.134 80.2033,-92.6519"/>
<polygon fill="black" stroke="black" points="82.4493,-89.9287 73.0674,-85.0062 77.3319,-94.7049 82.4493,-89.9287"/>
</g>
</g>
</svg>
##### Constellation diagrams
The diagrams show conceptual table names, which mirror the SQL database schema. An identity
has one record in each table unless noted as repeatable.
constellation_linked.gv.svg is an over view showing how two related records are linked via identity
relation. Each record is independent. The only link between records is the identity relation which had one
record for each side of the relationship. For reasons of clarity, the two identity constellations are not
shown in full detail.
identity_constellation_repeats.gv.svg is a detailed view of a single identity constellation with repeatable
recorda noted.
identity_constellation.gv.svg is an earlier, simplified view of the data.
SNAC Data outline
This is a broad view of various kinds of data in the SNAC web application. At the core, SNAC data was
historically EAC-CPF. Working with the CPF data causes two things to happen. First, CPF data itself becomes
more of a constellation than discrete fields. Second, using and manipulating the data requires many types of
meta data.
SNAC has always had aspects of controlled vocabulary and authority work. Both of those are being formalized
and both add data to the SNAC application.
Most of the data resides in the SQL database. Nearly every item below corresponds to a SQL table. The database
also has additional tables serving various linking and record keeping functions. At this time, we have several
non-SQL data stores: XTF, Neo4j, Elastic search index
- EAC-CPF constellation (broadly disambiguated from "identity", "entity", "EAC-CPF", "record", etc).
- Canonical data in SQL tables
- XML output generated as necessary
- Meta data
- Version system
- data current public version
- data current edit version (for records being edited)
- data old public versions
- data old edit versions
- Merge history
- Links to outside resources
- Archives
- Finding aids
- Multilingual strings
- Web UI labels
- Controlled vocabulary strings, including labels and definitions
- Controlled vocabularies
- Multilingual strings
- Have category and hierarchy
- All vocabularies share a base data structure
- Use varies by policy; does this imply a vocabulary workflow?
- Name format system
- Multiple known formats
- Canonical SNAC format?
- Context sensitive to language, script, and user?
- Workflows
- Web UI workflow
- Workflow specific to web domain, pages, buttons, output type, etc.
- Server workflow
- archivist edit
- split/merge
- identity reconciliation suggested merge
- manual merge
- policy based workflows
- technical workflows
- Web admins
- Create and assign institution roles (more powerful than institution admins)
- Institutions
- Institution admins
- Users
- SNAC CPF entries for institutions
- At least one role per institution
- Users
- Dashboard tabs
- Historical Research Tool per-user search history
- Maintenance tool per-user workflow task status
- Notifications, all users
- Account info
- name, email, user id, password
- roles, as many as necessary
- Web session, possibly multiple sessions per user
- REST API session, similar or identical to web sessions
- Removing a role from a user revokes the associated privilege
- Roles
- Created and maintained by admins with role privileges
- Single privilege per role, must be coordinated with workflows and application functions
- At least one role exists per institution
- At least one role per user (HRT user)
- Potentially, roles for ad-hoc groups (sub-institution, department, professional orgs, etc.)
- Need explicit, on-going policy guidance
- Reports
- Read the database
- Availability based on roles
- XTF full text index
- Neo4j graph database
- Elastic search full text index
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment