_id",-1),P=e("code",null,"note_object_id",-1),F=e("code",null,"note_object_type",-1),E=e("p",null,"There are well known arguments as to when/how each aspect of this approach breaks down or fails in certain circumstances. Our approach is to try and balance the semantics of the data models with the understanding and needs of the scientists using them. Too much semantics and there is a disconnect between what they actually do and the model, too little and things like identifiers, citations, provenance and attribution are not supported.",-1),N=e("p",null,"In addition to the individual table-class approach there are several higher-level classes, used to carefully isolate the differences between users, the data they curator, and how those data are displayed and presented:",-1),R=e("ul",null,[e("li",null,[t("Data - The properties of things in TaxonWorks. When designing our data-store we strive to eliminate, or minimize all fields that describe how we display or see Data (see below). Data are further classified, more for the purposes of utility than meaning, into three categories: "),e("ul",null,[e("li",null,"Core - the basic categories most useful for describing life"),e("li",null,"Supporting - the data that link or extend core classes"),e("li",null,"Annotation - General classes of of data that can be applied to most core and supporting classes")])]),e("li",null,"Project - Describes Users, and Projects, i.e. manages who can curate what data."),e("li",null,"UI/Display/Layout - Tables that define how we display, visualize, or present Data.")],-1),U=e("p",null,[t('There are various constraints (in ontology-speak "universals") on TaxonWorks models/concepts. For example if you create a CollectionObject instance then we assume some very specific things are true '),e("em",null,"in addition to"),t(" the data you provide. Definitions, and assumptions are encapsulated in the model via code, in the ways we serialize data (e.g. DwC exports), and in the textual descriptions (viewable in "),e("code",null,"rdoc"),t('), this partitioning is not optimal, but perhaps reflect the reality of how things get built. These assumptions must be further formalized both for computers (e.g. in RDF serialization, or ontology representation) and for human understanding. That is, people will use tools however they can, not however they should, the best way to prevent this "drift" away from intent is education as to why it is important to "follow the rules".')],-1),B=e("h2",{id:"code",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#code"},[e("span",null,"Code")])],-1),M=e("code",null,"otus table",-1),L=e("code",null,"OTU model",-1),V=e("a",{href:"https://rdoc.taxonworks.org/Otu.html",target:"_blank",rel:"noopener noreferrer"},[e("code",null,"otu.rb file")],-1),G=e("a",{href:"https://rubyonrails.org/",target:"_blank",rel:"noopener noreferrer"},"Rails",-1),H=n('TaxonWorks uses PostgreSQL with PostGIS extensions. For an auto-generated schema in text format see db/schema.rb .
',2);function J(K,Q){const o=l("RouteLink");return d(),r("div",null,[h,e("ul",null,[u,e("li",null,[p,t(" - In addition to all the science being done, scientists are constantly being asked to do more, differently. How should I organize my data? How might I integrate the diversity of my research program? I'm told to get out of Excel, how might that look? They want "),a(o,{to:"/develop/Data/models.html#identifier"},{default:s(()=>[t("Identifiers")]),_:1}),t(" for "),a(o,{to:"/develop/Data/models.html#person"},{default:s(()=>[t("People")]),_:1}),t("? A majority of the data types represented here are accessible via an externally-facing "),m,t(" well suited for all the data/information science running in parallel to the observation capture going on in labs, the field, and throughout the scientific process.")]),g]),f,b,_,e("ul",null,[e("li",null,[a(o,{to:"/develop/Data/models.html#taxon-name"},{default:s(()=>[t("Taxon names")]),_:1}),t(" - about nomenclature")]),e("li",null,[a(o,{to:"/develop/Data/models.html#collection-object"},{default:s(()=>[t("Collection objects")]),_:1}),t(" - about specimens")]),e("li",null,[a(o,{to:"/develop/Data/models.html#collecting-event"},{default:s(()=>[t("Collecting events")]),_:1}),t(" - who, where, when, and how some thing was collected")]),e("li",null,[a(o,{to:"/develop/Data/models.html#otu"},{default:s(()=>[t("OTUs")]),_:1}),t(" - like species or taxon concepts, but even broader, a place to link all the bits that aren't nomenclature, a useful biological unit permitting meaningful work")]),e("li",null,[a(o,{to:"/develop/Data/models.html#observation"},{default:s(()=>[t("Observations")]),_:1}),t(" - data about CollectionObjects or OTUs, e.g. characters or measurements")]),e("li",null,[a(o,{to:"/develop/Data/models.html#descriptor"},{default:s(()=>[t("Descriptors")]),_:1}),t(" - classes of Observations, like quantitative, qualitative, or statistical")]),e("li",null,[a(o,{to:"/develop/Data/models.html#asserted-distribution"},{default:s(()=>[t("Asserted distributions")]),_:1}),t(" - the low-resolution distribution of OTUs according to the literature")]),e("li",null,[a(o,{to:"/develop/Data/models.html#biological-association"},{default:s(()=>[t("Biological associations")]),_:1}),t(" - biological relationships, like host-parasite")]),e("li",null,[a(o,{to:"/develop/Data/models.html#sequence"},{default:s(()=>[t("Sequence")]),_:1}),t(" - curated chunks of the genome")]),e("li",null,[a(o,{to:"/develop/Data/models.html#source"},{default:s(()=>[t("Source")]),_:1}),t(" - a reference")])]),e("p",null,[t("The other types of data are loosely classified as "),v,t(" (blue ovals) and "),w,t(" (light-blue rectangles). Annotations can be thought of as ways to customize the data-model. Supporting data are the bits of information that link to and across "),y,t(" classes, for example a "),a(o,{to:"/develop/Data/models.html#citation"},{default:s(()=>[t("Citation")]),_:1}),t(" links a "),a(o,{to:"/develop/Data/models.html#source"},{default:s(()=>[t("Source")]),_:1}),t(' to nearly anything. This organization, core, supporting, annotation, is echoed in the UI by clicking the "Data" tab in the hub.')]),k,x,T,e("ul",null,[D,e("li",null,[t("In various cases data are organized into graph patterns (network-based, i.e. nodes, edges, and their attributes) amenable to down-stream migration into graph databases (e.g."),a(o,{to:"/develop/Data/models.html#taxon-name"},{default:s(()=>[W]),_:1}),t(" and "),a(o,{to:"/develop/Data/models.html#biological-association"},{default:s(()=>[t("Biological associations")]),_:1}),t(") or serialization into formats like RDF.")]),e("li",null,[t("Tables are named exactly as the class is named, in a pluralized format, for example the class "),a(o,{to:"/develop/Data/models.html#taxon-name"},{default:s(()=>[S]),_:1}),t(" is stored in table "),a(o,{to:"/develop/Data/develop/Data/tables.html#taxon-names"},{default:s(()=>[j]),_:1}),t(").")]),e("li",null,[t("Some classes of data have subclasses (e.g. "),A,t(" is a subclass of "),a(o,{to:"/develop/Data/models.html#collection-object"},{default:s(()=>[t("CollectionObject")]),_:1}),t(" and "),O,t(" is a subclass of "),C,t(". Each subclass adds assertions as to what the thing being represented is. Subclass assertions are stored in the field "),q,t(" (e.g. "),a(o,{to:"/develop/Data/develop/Data/tables.html#collection-objects"},{default:s(()=>[t("CollectionObject")]),_:1}),t(".")]),e("li",null,[t('Some classes of data are "polymorphic", particularly annotators (see below). This means that one table references many other tables by a combination of '),z,t(" and "),I,t(". For example see the fields "),P,t(" and "),F,t(" in "),a(o,{to:"/develop/Data/develop/Data/tables.html#notes"},{default:s(()=>[t("Notes")]),_:1}),t(".")])]),E,N,R,e("p",null,[t("When customizing or adapting TaxonWorks to your needs, maintaining this separate of concerns will facilitate the long term integrity of your data. For example, you can create custom attributes for Data classes via "),a(o,{to:"/develop/Data/models.html#data-attribute"},{default:s(()=>[t("DataAttributes")]),_:1}),t(', these attributes should describe the things they are tied to, not just what "I want to see on some page".')]),U,B,e("p",null,[t("As noted the database model is mirrored almost exactly in code, for example the "),a(o,{to:"/develop/Data/develop/Data/tables.html#otus"},{default:s(()=>[M]),_:1}),t(" is represented by an "),a(o,{to:"/develop/Data/models.html#otu"},{default:s(()=>[L]),_:1}),t(" in a "),V,t(". This is broadly a convention from "),G,t(", the back-end software used by TaxonWorks.")]),H])}const Y=i(c,[["render",J],["__file","index.html.vue"]]),Z=JSON.parse('{"path":"/develop/Data/","title":"Overview","lang":"en-US","frontmatter":{"sidebarParentPosition":100,"acknowledgments":"Lars Vogt provided many useful insights as to how to frame this page."},"headers":[{"level":2,"title":"Audience","slug":"audience","link":"#audience","children":[]},{"level":2,"title":"Concepts","slug":"concepts","link":"#concepts","children":[]},{"level":2,"title":"Meta-model","slug":"meta-model","link":"#meta-model","children":[]},{"level":2,"title":"Code","slug":"code","link":"#code","children":[]},{"level":2,"title":"Database","slug":"database","link":"#database","children":[]}],"git":{"updatedTime":1668380273000,"contributors":[{"name":"mjy","email":"diapriid@gmail.com","commits":1}]},"filePathRelative":"develop/Data/README.md"}');export{Y as comp,Z as data};
diff --git a/assets/index.html-DAxUMUpM.js b/assets/index.html-DAxUMUpM.js
new file mode 100644
index 00000000..bdc3d6ea
--- /dev/null
+++ b/assets/index.html-DAxUMUpM.js
@@ -0,0 +1 @@
+import{_ as n,r,c,a as e,d as o,e as a,w as s,b as t,o as d}from"./app-Bwgh_xIT.js";const l={},h=t('Discover the Source (e.g. publications) management features of TaxonWorks here. For example, sources are shared across projects , a cool and unique time-saving community feature of TW.
Credit: much of the following information derived from a manual tailored for and written by the Universal Chalcidoidea Database (UCD@TW) Project community.
In TaxonWorks, sources include the literature database, citations, and other related content that is fed directly into the database. The easiest way to access sources is through the Source hub
task. This is a unifying task that combines several commonly used tasks associated with sources. As a curator, researcher, data manager, student, or technician you may primarily be working from sources that are published papers. Source data can be entered one record at-a-time field-by-field, or using BibTeX or CrossRef DOIs. From most reference manager software, one can export source information in the BibTex format and edit as needed in any regular text editor. This can be used for uploading source
data into TW. With this wiki , you can learn more about BibTex.
Legend: Source hub
user interface sections: select
, filter
, recent sources
, add new source
, and batch load
. The TW Select a source
option offers a smart selector so you only need to enter as many letters needed to uniquely identify a source. For example, the search string 'wool dal sig' brings up Woolley and Dal Molin (2017). If a source is found it will show beneath the search box.
Type information in Select a source
to see if a source is in the database. In this example, search string is 'Woolley, J. B.' If you click on a result in the popup beneath the search box, it will take you to a page showing that source. Legend : Source hub
search resultWith Filter sources
you can apply different search criteria to locate sources of interest. Use this feature to identify sources you want to work on. My recent sources
shows a list of sources that you have entered recently.New Source
takes you to a screen that enables you to add new sources using various methods.Note the Batch upload
option here via BibTeX formatted source data. Next we delve into the details of various work you may need or want to do with source information (e.g. adding sources, editing, tagging, and filtering). The source content needing to be captured includes such data as new taxon names, people strings or names, distribution information, type information, and biological associations. For efficient source data extraction and entry, we recommend familiarity with the following TW Tasks and Data Cards.
FUTURE LINK TO INFORMATION about each of these items
Tasks Data Cards Browse nomenclature Taxon names Browse OTUs Biological Associations Source hub Sources Filter sources Manage Controlled Vocabulary Terms New taxon name New type specimen New combination Uniquify People
Once you find the publication of your choice using the Source Hub
, clicking on it opens the Show
page. Here you will find various ways to navigate to related information and a path to Edit
this source record. Next we describe some of the features and functions found in the Source show.
Note the green Pinboard icon
at the upper right. Clicking this adds the source to your Pinboard for quick access.
The Radial Annotator
is a very common function used throughout TW. It provides convenient access in one place to a variety of relevant functions. For example, clicking on the Radial Annotator
for a givenSource
might look like this:
Legend : The Radial Annotator
functions Documentation
is where you can drop a pdf of the source, or supplementary files.Tags
allow you to mark sources for later with tags such as Source Unprocessed
, or Source Processed for Nomenclature
. Instructions on creating and editing Tags are included below.Notes
is a free text field for any information you might want to add.Identifiers
provides a place to store one-to-many identifiers for a given object. For example, a paper might have a globally unique digital object identifier, aka DOI, but also an author-assigned identifier.Data attributes
in TW gives you a place to store your unique data that may not fit in any typical TW field currently in the data model. ',24),u=e("img",{align:"right",width:"200",title:"Edit a source",hspace:"10",src:"https://sfg.taxonworks.org/s/vrbjbz"},null,-1),p=t('From the Source Hub
search to a publication you choose Click Edit
to open the task to make corrections or put text in title in italics, for example. Note that italics are indicated in BibTex format as follows <i> text </i>
. Everything in between the special symbols will display or print in italics. There are tools in TW to do this for you by selecting text and hitting a button.
Be sure to click the Save
button to keep any changes. HINT: In Edit
, you see New source but you started by clicking the Edit
option from an existing source. Rest assured this New source window does not mean duplication of the source.
About adding Sources, options offered here include the option to re-order fields and ways to auto-fill the Source
information using a CrossRef DOI
or using BibTeX you may generate from Zotero or EndNote. This section features commonly used fields. See the scenarios section to find related activities that fit your workflows.
First, using the Source hub
always check to be sure the source is not already in TW. If it isn’t found in the search box in the Source Hub, '—None—' will appear below it. With TW "smart" searches you need only provide enough minimal text to find the source (e.g. misspellings may cause you to miss a source). Clicking New Source
in the Source Hub
brings up this screen. New Source user interface options. Note you may reorder the fields as you see fit using the Sortable fields
box in the upper right. The yellow triangle means you have made changes that have not been saved. Be sure to Save
before you leave this screen, or changes will be lost. If you have the DOI for a new source, this button provides access to the CrossRef database of DOIs. If it works (it usually does), most of the fields you need will be filled in. Be sure to check them , as they are not always correct. If you have the reference in BibTex format (most reference databases will output this), you can input it here. From Zotero, simply select the reference, right-click on it, select "export item" and save the file as BibTeX. From EndNote, select the reference and fill out the "label" field. Then go to File > export and select "text file", "BibTeX export". Most people don’t fill out the "label" field in their EndNote database, but if you don’t, you will have to add the label manually by editing the exported text file (that is the field highlighted in the example below). In the New Source Form
, Choose the blue BibTex
box at the top of the screen, and paste in the exported *.txt file. (No drag and drop here). Most of the fields may be self-explanatory. Here we note a few tricks, for instance:
Entering an author name in this box (5) Authors
tries to pull it up from the table of known authors. If it isn’t found, you can use the Add New
button that appears in this case. This is an advantage in some situations over entering authors as verbatim text (in the Verbatim from BibTex field lower in the screen), because you can easily pull them up later, for example, when adding author names to new species.
Similarly, below the Author
section is a search box for Serials
(journals). If the journal is not found, look for the New
button to the right of the Serial screen. This opens a screen for you to add a serial to the serials table.
Once you have created the new source, you should go to Documentation
in the blue Radial annotator
to the right of the Source
and upload the PDF file if available.
(Optional) Use the TW Tag
feature to group and track which papers need data parsing or do not.
To do this go to the Tags choice in the Radial annotator
Tag the source as desired (e.g. Unprocessed
) And add other suitable tags such as No Nomenclatural Acts
or Nomenclatural Acts
as appropriate (this is specific for the UCD project, other projects may use different tags). If a source has a title in a language other than English, and you wish to enter the English translation (or translation in any other language), follow these steps:
Enter the source with the title as given in the paper and create it. Click on the blue Radial BibTex annotator
to the right of the source at the top of the page, and click on the pie slice for Alternate Values
. Choose title from the pick-list, the language for the translated title, and paste the translation in the Value field. Be sure to Save
it (green button) if this is a new source. Then the original title and translation will both be rendered. As all fields are present on the data entry screen for all types of sources, it can be a bit confusing, particularly for books and chapters in books. The article type for a chapter in a book is "Inbook", and the book title would go into the Booktitle field. For books, there are fields for Editors, Series (if needed), Booktitle, Publisher, and Address (usually city or city and country). The type of a technical report is techreport
.
Using the UCD@TW Project as an example, note that most screens that pull up lists of sources in TW have a convenient PDF icon that either opens the source in the PDF viewer (where you can download it), or enables you to download it directly to your browser. For example, if you pull up a source using the Source hub
, you will get a screen like this -- the so-called Show
page. The pdf icon will open the source in your browser.
Legend : Source
has PDFYou can also check to see whether a pdf has been associated with a source using the Radial Annotator
associated with that source.
Click the Documentation
wedge in the Radial Annotator
to get the screen below. If a pdf for the source is not present, drag and drop it into the box as shown. If a pdf is associated with the source, you can click the icon indicated by the red arrow to download to your browser. Legend : Does Source
have a PDF?Tags
in TW provide a unique way to group documents (or other objects in TW) in any way that you choose. With the keywords
that you put into a tag, you and colleagues can find the relevant materials needing work or find groups where work is complete and may need vetting.
Because UCD@TW is a community-curated database, they added keyword tags for sources that allow them to better organize and coordinate group work. These are the tags currently associated with their sources. Tags can be added or removed from a source in the Radial Annotator
. Most of these tags should be self-explanatory.
',21),g=e("img",{align:"right",width:"300",title:"Source Processing Tags for UCD",hspace:"10",src:"https://sfg.taxonworks.org/s/2cldsu"},null,-1),f=t('HINT: Keywords
are the words you put in a Tag
. If certain that a source is an early view document
, that is, not yet published, they add this tag as any nomenclatural acts in the source are not yet valid. If the source is new to TW, for now, they use the tag Source unprocessed
, as this allows other curators and helpers to pull up sources that need to be curated. And to anyone starting work to curate a paper, they apply the tag Source being processed
so that other community members will not try to work on it simultaneously. HINT: Using the Browse Annotations
task you can find out who has claimed sources (or assigned various tags).
Using the Manage Controlled Vocabulary task (shown below), you can create custom tags
with the keywords
of your choice. In this task, you will need to decide the keywords to use, enter them, and define what they mean.
Legend : Find Manage Controlled Vocabulary task
Legend : Create and Edit TagsTo create a new tag use the Name
, Definition
, and Label color
fields on the left of the screen. Note that the definition field must have at least 20 characters before the Create
button is clickable. Note that if you want to use the same color for multiple tags, you can use the eyedropper tool in the Label color
window. To Edit
an existing tag, use the green icon associated with the Tag
. Some sources exist in more than one version, either with translated titles or in entirely translated versions. To add a translated title, use the radial annotator, under Alternate values
, and add the information under title
to add the English version, such as in the case below:
',9),m=e("p",null,[o("Example Paper With Title in German and English "),e("img",{width:"600",title:"Source Title Versions",hspace:"10",src:"https://sfg.taxonworks.org/s/8vsf1w"})],-1),b=t('Note, there are at least two reasons why you might have more than one version of source:
Someone has done a translation of a paper, but it has not been published separately. In this case, simpy add the translated pdf as a second document to the source (see Documentation
option in Radial Annotator
). The translation has been published separately from the original source. A common example is Entomological Review, which is a parallel version of Entomologicheskoe Obozrenie published in English. In this case, the page numbers are likely to be different in the two journals. You should enter this as a separate source from the original paper in Russian. A search on the author and date will bring up both sources. TW employs a powerful utility to search for particular sources, the Filter Source task
. Among the search fields, which can be used in any combination, are the following:
Keywords
: search text or title. These are verbatim text search fields that will scan the title or other text fields for keywords, such as taxon names. However, if the name is not in the title, it may not get picked up.Authors
: self explanatory. Search for authors verbatim or for authors in the Authors data table.Date
: you can provide starting and ending years for the search.Tags
: If a source has been tagged, you can search for the tag(s) here. You can batch tag sources using the method described below. (UCD@TW specific note: However, this will apply mostly to literature that has been added since the transfer of sources from UCD@NHM to UCD@TW). Topics
: This is one of the potentially most powerful uses of this utility. All of the tags to citations from UCD@NHM (the original UCD in London) should have been carried over to UCD@TW on import. Thus, UCD@TW folks can search for papers containing host information, keys to species, redescriptions, or any of the topics in the Topics list. Note that if you have Topics in your pinboard, they will appear here if you select Pinboard. Or you can Search for a topic or pull up the entire list of topics using All.Once you have created a list of sources, you can do the following:
Select All
(button is at top left) or Select Individual Sources
.Tag
: once you have selected sources you can tag them using whatever tag or tags are in your pinboard by hitting the green Tag
button. If there is more than one tag indicated as the default in your pinboard, both will be added. Note that if you create a new tag (explained above) this automatically becomes the default tag in your pinboard. HINT: This is a powerful way to create groups of sources for particular projects. Download CSV
: this creates and downloads to your browser a comma-delimited data file.Download formatted
: here you have the option to choose a format style (e.g. Zootaxa) and create a formatted bibliography.If a pdf is associated with the source, you can capture it using the pdf icon. ',9),y=e("code",null,"New Source",-1),w=t('Using the Batch Upload
section of the Sources
Data tab
(i.e. not the task
tab) from the project home screen, you can upload a list of BibTex-formatted references all at once.
From this screen, you can upload a Bibtex formatted TXT file that will allow for import of your references. Use this to load bibliographies exported from tools like EndNote, or Zotero. An example file is available here . Your Bibtex file must meet the following conditions:
The file to import should be in UTF-8 encoding. The file should have unix style line-endings. All entries should include a populated 'Label' field containing a unique internal identifier for the record. Endnote does not provide this by default, Zotero does. Year fields should not include periods ('.'). Try using a BibTeX bibliography "linter" or validating tool (for example ) on the web to find errors in your file.
Once you upload, you will see a preview list of your sources, highlighted in green, brown, and red. Green references will be imported, brown ones will be imported but have some soft validation that should be cehcked or fixed before upload, and red ones will not be imported.
Once you've ironed out any problems, you need to re-upload your data using the Choose File
button.
Click the Create
Button to upload your sources. Once the upload finishes, you should get a screen like this:
You can click the edit buttons or search for them in the Filter Sources
task.
In TaxonWorks, several options exist to download a source list in the desired format (e. g. comma separated (aka CSV), BibTeX, a custom style of your choosing). Using the Filter sources
task, you limit your sources to the desired subset and then choose your download format.
Using Filter sources
to select sources to export Navigate to the Filter sources
task. Use the options in the left side column to limit (aka filter) your results to the desired subset E. g. In the screenshot above, we used the Title
filter option with the string Cecidomyiidae
. Click on Filter
at the top left of the window. The result (in this example) returns 1640 records. Next, you will decide to download one of the following: all 1640 records a selected subset of the records shown on the first page (default limit is 50 records) all records on the page Select
your set to export. To select a few sources shown on the page, check the boxes next to each desired source. To export all sources on this specific page, you can check just the single box in the header row at the top of the list. To export all 1640 sources, you need to change the number of records shown on the page, to a number larger than your subset. See the drop-down option in the header menu for records per page
. Maximum number supported is 2500. If your set is larger than that, you'll need to do this using more than one download. Example, you might add a year range to subset your records. Use the download options picklist (in the header menu) to select: CSV
, BibTeX
, Download formatted
to get these sources exported in the format you need. If you select
CSV
from the drop-down options, then click the down arrow
next to the drop-down box, you get a CSV file downloaded right away. If you select
BibTeX
or Download formatted
you will see a preview window to review if they look as expected. If all is well, click
on the Generate download
option. Click the Generate download
button to get the BibTeX file Click the Generate download
button to get the Custom formatted
file When getting data from publication sources into TW, many "how-to" questions may arise. Please see next the following common situations and how to proceed for each. Each of these examples offer you an opportunity to try it yourself in your sandbox account.
',20),x=e("em",null,"Say you want to find new sources (papers) that have not yet been curated.",-1),T=e("code",null,"Filter Sources",-1),k=e("em",null,"tagging",-1),v=e("code",null,"Encyrtidae",-1),S=e("code",null,"Search Text and Title",-1),C=e("code",null,"Source unprocessed",-1),U=t('Tags can help you organize and find specific data The tag
box allows you to create collections of sources, for example, to download as *.CSV files for your own spreadsheet or database.
The PDF icon
opens the source
in the source viewer
, from which it can be downloaded. If no PDF is associated with the source, the PDF icon will not show. You will need to find a pdf for the source outside of TW, and add it using the Radial Annotator
, as shown above.
Note that there is a red button to remove from project
. This is because references are SHARED across projects in TaxonWorks, that is, if someone outside UCD already created this source record, you should be able to simply add it. Note that reference data for sources are shared, but not PDFs.
The blue buttons to the right are the BibTex Annotator
for sources, described above, and the Navigate Radial
(looks like a compass arrow), which brings up various functions, including an edit slice which takes you to the source editor.
When a new source (paper/book/etc.) is published and you want to document the information it contains, note the following steps.
(Historically, this workflow is described in-depth as an exercise in the former documentation repository in "basic_article_parsing.md" which you can find in Other Documents from the left sidebar).
Go to the Source Hub
task card, search the sources in TW to see if it exists. If it doesn’t then create it, preferably using CrossRef
function (blue icon at top of New Source
Screen) as described above. We recommend using CrossRef
because it imports more metadata (BibTeX
e.g. from Google Scholar keeps fields to a bare minimum). If it is in the database but has not been processed, this will be indicated in the Radial Annotator
under tags
. Always be careful since automatically imported articles, even if they are recent, may have wrong data. For example, the year informed by the web site may not match the year of publication (usually explicitly stated in the PDF file). Also, see immediately above for instructions on using the Filter Sources
task. To add additional information about the species from the publication, first navigate to the OTU corresponding to the new taxon name. From the Browse nomenclature
page for the taxon, you can hit the Browse OTU
icon at the top of the page. This takes you to the OTU that is associated with the taxon:
Alternatively, you can use the Browse OTU
task to find the OTU. TW may bring up more than one choice:
Browse OTUs
and find the subsequent combinationsIn this case the OTU name with the check mark refers to the protonym (name as originally published. The OTU name followed by (c) refers to a subsequent combination``. It is best to choose the
subsequent combination`` as this will ensure that the data is tracked correctly.
(UCD-specific note: in this case, there is a third choice, which looks like a ghost, that is, a name that was created as a string when host or distribution records were imported from the original UCD@NHM. You should ignore ghosts. UCD@TW are working on eliminating them).
The most common tasks at this point will be to capture Citations
, Asserted Distributions
, and Biological Associations
.
Citations
. These provide a way to capture any information that is in the publication (e.g. whether it includes a diagnosis, whether the taxon is figured, information on hosts or distribution, etc.), and page numbers
on which the information is found. Citing the exact page numbers will help subsequent users quickly find this information in long publications treating many species.To enter this information, hit the Radial Annotator
at top of screen Choose Citations
, enter the source (it should still be pinned) Enter the exact page number
s on which the information is found in the publication Click Create
Click the blue All
button for a list of currently used topics. Select the ones that are relevant Scroll to the bottom of the screen, and click the green Create
button. When you close this screen (x at upper right) you should return to the OTU (Browse Taxa
) page. If you refresh this in your browser, you should see the citation
you have created in the upper right. HINT: Topics
are unique to each project. For the UCD project, having created a lot of topics now, they suggest creating a new topic only if absolutely necessary.
For those working on other projects, you can use the Manage Controlled Vocabulary Terms
card in the Tasks portfolio to create and define new topics. Here, the Keyword
tab at the top refers to Tags
, discussed above, and the Topic
tab refers to Topics
.
Click the blue Quick Forms
icon at top right, and follow the instructions to pick geographic areas from which the taxon is reported. This is the place to capture information from a Distribution
section of the publication. Enter the source
which should still be pinned, and the exact page numbers
on which the distribution information is given. Is Original
means this is the first time that this distribution has been published.Is absent
presumably means that the publication states that the taxon is not present in the designated area, but UCD notes they are not sure when to use this. Next, enter the most restrictive geographic area present in the TW database, which in most cases will be a state or a province. HINT: If the paper contains many new asserted distributions, it is more efficient to record these using the New Asserted Distribution task
. Here you can lock in the source and each OTU, and enter the geographic areas one by one, without having to repeat the other information. In this example, we have locked the source and OTU (orange boxes), and we can enter geographic areas one by one. The task contains other tools (not shown below) that enable you to clone combinations of the Source/OTU, Source/Geographic area, or OTU/Geographic area.
New Asserted Distribution Task
showing how to lock fields for re-useNext, update the tags
(if necessary) to track progress. UCD Example, once you have entered the distribution
data from the source, if you are not at this time going to enter other information such as biological associations, add the Source processed – Distribution
tag to the source.
Biological Associations
. These are also accessed from the blue Quick forms
icon . The form is shown below. Examples presented here are UCD-based. You may have to enter more information as host data may or maynot already be in your instance of TW.[INSERT SCREENSHOT HERE]
Selecting All
(1) will bring up a list of all Biological Association
in the project (2). (UCD-specific note: In general for chalcidoids, you will want to capture the Primary (animal) host
or Plant host
, Plant Associate
in the case of parasitoids, or Parasitoid host in the case of hyperparasitoids).
Pick the relevant blue tab and then hit the blue Search
button (4) to find the host or associate name in the TW database. In most (UCD) cases, this will be a plant or animal name, so select OTU (3). Search for the taxon name in the database (this brings up a select OTU search box). The UCD database is extensive, and usually the host will already be there, either as a Taxon Name
or as an OTU
. If TW finds either of these, it will bring them up for you to choose. If neither are found, TW will ask you if you want to "customize an OTU with that name". Say yes, and cut and paste the OTU name in the OTU box that comes up. Leave the Taxon Name box below the OTU box blank. IF YOU DO THIS, BE SURE YOU ARE SPELLING THE NAME CORRECTLY! For this reason it is best to cut and paste whenever possible. There is probably no reason to enter the author name of the OTU, but it doesn’t hurt anything. Once you have entered the host or associate OTU, enter the Citation
(source) (5) and page number
(s) on which the information is located. As above the Is original
box (6) means that this biological association has not been published previously . So check this box if this is new information not published before. Use the Browse OTUs
page for the taxon (accessed with the Browse OTUs card
) to see all previous biological associations recorded in TW for that entity. At this time, there is no Biological Associations task comparable to the Asserted Distributions
task (this has been requested of the development team).
IF you are entering several new Biological Associations
from a paper, you can lock the citation for the source by hitting the little lock icon next to the pinboard icon in the Citation box. [INSERT SCREEN SHOT for above] Since most new species will be compared with other existing species, you will want to capture this information also. This is treated as another Biological Association, since any comparison will involve another OTU.
Repeat the process for hosts, but choose Compared With
(instead of associate) and follow the procedure above. After completing these tasks, close the form and return to the OTU page for the taxon. If you refresh your browser, all the new information should be displayed.
[INSERT SCREEN SHOT of OTU for a taxon showing biological associations]
Remember to make good use of the tags
for tracking progress.
If you have entered data for the biological associations reported in a paper, but are not planning to enter other data such as geographic distributions at this time, add the Source processed – Biological Information
to the source. If you have entered all nomenclatural acts in the paper, all relevant topics associated with the citation, all distribution information and all biological information, remove any tags associated with processing and add the tag Source processed – Complete
to the source. Congratulations, you have successfully and completely curated this publication! Before you do this, we recommend you add the Browse Taxa
and Browse Nomenclature
cards to your favorites for easy quick access.
Check to ensure the publication source you are working with is on your Pinboard
and selected as the default
. Navigate to the taxon (OTU) using the Browse Taxa card
in tasks Once you have found the correct taxon, proceed exactly as instructed above for a new taxon. HINT: There is at least one important caveat. If you are capturing information for a species that is currently used in a different combination from the genus in which it was originally described, you may get two OTUs for the species name when you search for it in Browse taxa
.
one will be the OTU
attached to the original protonym
(indicated by a check mark
next to the name) one will be the OTU
attached to the combination
(indicated by a c
next to the name). Use the OTU attached to the combination , at least for now. This is an area of the database that is still being worked on, but this should facilitate downstream display of the new information.Images can be attached to various entities in TW, such as Collection objects
(specimens) including types, OTUs
(concepts of taxa), Collecting events
, etc. If you put images in TW that are not your own property or are in the public domain, you should be sensitive to copyright issues. TW will accept images in PNG, TIFF, or JPEG formats. The following are probably the most common cases in which you might wish to upload images.
Navigate to the Collection object
form for the type using the New type specimen task
, or go to the Type
screen (either Quick
or Comprehensive
) in the Edit taxon name
form. If the type has not already been recorded (which will be the case for many old names), you will need to create it first. Drag and drop the image into the Depiction field
(it contains the text Drop images here to add figures
), in either the quick
or comprehensive type
screen. Of course, if you do this, you need to be sure that the images are actually of the types! Note that you can add images to holotypes, allotypes, and all of the other types possible in the Type
screen. Note also that if you click in the box surrounded by a dashed line, TW will open a dialog box representing the folders on your computer where you can browse for the images. If the image is something other than the type specimen itself, such as labels of a type specimen label or a copy of notes on the type, then:
Navigate to the Expanded Edit
Radial navigator
to the upper right of the Depiction
field, Choose Depiction
and check Is data depiction
. If you are pulling the image from a publication, find Citation
in the Radial annotator
below the image and give the source
and page number
. Images illustrating taxa should be attached to OTUs
.
Use the Browse taxa
task to find the OTU
. Note the Radial Annotator
to the right of the name at the top left of the field has a Depiction slice
, which you can click on and then use to add the image. Once the image has loaded, you can use the green Edit
button to add a figure name
and a caption
. If you are pulling the image from a published source, be sure to enter the source
and page number
, using the Citations
slice in the Radial annotator
to the right of the image. To delete an image, click the red trash icon
to the right of it. To enter the copyright status
for an image, find the Attribution
slice in the Radial annotator
associated with it (it also has a copyright symbol in it). Here you will find a menu with different copyright options, the year of copyright, and various other places to enter the Creator
, Owner
, Editor
, and Copyright holder
for the image.
Associated with each image are a Label
field and a Caption
field. We recommend using the Caption
field only to record information associated with the image, such as "Fig. 2, male head, frontal view". The Label
field is intended for use primarily when using TW to create output such as species pages or publications.
It is also possible to batch process images using the New Image
task, which may be more efficient if you are uploading many images from the same publication. You can drag and drop batches of images, and then assign the author/creator, source (publication), copyright information and so forth for all of them at once. If you plan to attach the images to an OTU
or Collection Object
(including type specimens) upload only the relevant images in each batch. Then you can use the Depict Some
screen to assign them.
',55);function I(D,N){const i=r("RouteLink");return d(),c("div",null,[h,u,p,g,f,m,b,e("p",null,[o("As described above, sources can be uploaded in different ways, one-at-a-time, or in batch using BibTeX format, searching CrossRef or using a URL that pulls in source data using CrossRef DOIs. With the "),y,o(" task, you have all these options in one task. See above section "),a(i,{to:"/guide/Manual/Sources/#adding-a-source"},{default:s(()=>[o("Adding a Source")]),_:1})]),w,e("p",null,[x,o(" The easiest way to do this is to use the "),T,o(" task. This specific example uses the "),a(i,{to:"/guide/Manual/Sources/#ucd-tw-project-tag-example"},{default:s(()=>[k,o(" method chosen by the UCD@TW Project")]),_:1}),o(". In this example, if you enter the family "),v,o(" name string in both "),S,o(", and choose "),C,o(" tag in the Tags filter option, you will generate a list of currently uncurated papers for that family:")]),U])}const O=n(l,[["render",I],["__file","index.html.vue"]]),E=JSON.parse('{"path":"/guide/Manual/Sources/","title":"About Sources in TW","lang":"en-US","frontmatter":{"sidebarParentPosition":40},"headers":[{"level":2,"title":"The Source Hub","slug":"the-source-hub","link":"#the-source-hub","children":[{"level":3,"title":"Source hub task features","slug":"source-hub-task-features","link":"#source-hub-task-features","children":[{"level":4,"title":"Select a Source","slug":"select-a-source","link":"#select-a-source","children":[]}]}]},{"level":2,"title":"Related Source Tasks","slug":"related-source-tasks","link":"#related-source-tasks","children":[]},{"level":2,"title":"Source Show","slug":"source-show","link":"#source-show","children":[{"level":3,"title":"Try Editing a Source","slug":"try-editing-a-source","link":"#try-editing-a-source","children":[]}]},{"level":2,"title":"Adding a Source","slug":"adding-a-source","link":"#adding-a-source","children":[]},{"level":2,"title":"PDFs for Sources","slug":"pdfs-for-sources","link":"#pdfs-for-sources","children":[]},{"level":2,"title":"Tags on Sources","slug":"tags-on-sources","link":"#tags-on-sources","children":[{"level":3,"title":"UCD@TW Project Tag Example","slug":"ucd-tw-project-tag-example","link":"#ucd-tw-project-tag-example","children":[]}]},{"level":2,"title":"Creating or Editing Tags","slug":"creating-or-editing-tags","link":"#creating-or-editing-tags","children":[]},{"level":2,"title":"Sources With Versions or Translated Titles","slug":"sources-with-versions-or-translated-titles","link":"#sources-with-versions-or-translated-titles","children":[]},{"level":2,"title":"Filtering Sources","slug":"filtering-sources","link":"#filtering-sources","children":[]},{"level":2,"title":"Importing Sources","slug":"importing-sources","link":"#importing-sources","children":[{"level":3,"title":"Add a Source, one at a time","slug":"add-a-source-one-at-a-time","link":"#add-a-source-one-at-a-time","children":[]},{"level":3,"title":"Source Batch Upload","slug":"source-batch-upload","link":"#source-batch-upload","children":[]}]},{"level":2,"title":"Exporting Sources","slug":"exporting-sources","link":"#exporting-sources","children":[{"level":3,"title":"Use Filter sources to download selected sources","slug":"use-filter-sources-to-download-selected-sources","link":"#use-filter-sources-to-download-selected-sources","children":[]}]},{"level":2,"title":"Source Scenarios (aka How-To)","slug":"source-scenarios-aka-how-to","link":"#source-scenarios-aka-how-to","children":[{"level":3,"title":"Find uncurated unparsed papers","slug":"find-uncurated-unparsed-papers","link":"#find-uncurated-unparsed-papers","children":[]},{"level":3,"title":"Document information from a newly published source","slug":"document-information-from-a-newly-published-source","link":"#document-information-from-a-newly-published-source","children":[]},{"level":3,"title":"Add more species information","slug":"add-more-species-information","link":"#add-more-species-information","children":[{"level":4,"title":"Asserted Distributions","slug":"asserted-distributions","link":"#asserted-distributions","children":[]}]},{"level":3,"title":"Enter information on an existing taxon","slug":"enter-information-on-an-existing-taxon","link":"#enter-information-on-an-existing-taxon","children":[]},{"level":3,"title":"Adding images to TW","slug":"adding-images-to-tw","link":"#adding-images-to-tw","children":[{"level":4,"title":"Adding Type specimen images","slug":"adding-type-specimen-images","link":"#adding-type-specimen-images","children":[]},{"level":4,"title":"Images depicting taxa go with OTUs","slug":"images-depicting-taxa-go-with-otus","link":"#images-depicting-taxa-go-with-otus","children":[]},{"level":4,"title":"Adding Image Copyright infomation","slug":"adding-image-copyright-infomation","link":"#adding-image-copyright-infomation","children":[]}]}]}],"git":{"updatedTime":1695167580000,"contributors":[{"name":"Debbie Paul","email":"dlpaul@illinois.edu","commits":15},{"name":"mjy","email":"diapriid@gmail.com","commits":3},{"name":"José Luis Pereira","email":"pepelui@outlook.com","commits":2},{"name":"Deborah Paul","email":"dlpaul@illinois.edu","commits":1},{"name":"Tommy McElrath","email":"monotomidae@gmail.com","commits":1}]},"filePathRelative":"guide/Manual/Sources/README.md"}');export{O as comp,E as data};
diff --git a/assets/index.html-Db11gV9a.js b/assets/index.html-Db11gV9a.js
new file mode 100644
index 00000000..a5d0f7bd
--- /dev/null
+++ b/assets/index.html-Db11gV9a.js
@@ -0,0 +1 @@
+import{_ as e,c as a,o}from"./app-Bwgh_xIT.js";const t={};function r(s,n){return o(),a("div")}const c=e(t,[["render",r],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/es/","title":"Inicio","lang":"es-ES","frontmatter":{"home":true,"title":"Inicio","heroImage":"/images/taxonworks_home.svg","actions":[{"text":"Guía","link":"/guide/","type":"primary"},{"text":"Desarrollar","link":"/develop/","type":"primary"},{"text":"Acerca","link":"/about/","type":"secondary"}],"features":[{"title":"Guía","splash":"Aprenda a usar TaxonWorks","details":"Una aproximación general. Comience un nuevo proyecto. Estudie los manuales, mire videos, obtenga tips, aprenda las mejores practicas de SOPs, responda \\"Cómo lo hago?\\" desde FAQs, aprenda a mover los dato con importación y exportación, conectar flujos de trabajo con la API. Solicita nuevas características, crea reportes de errores."},{"title":"Desarrollar","splash":"Aprenda a desarrollar en TaxonWorks","details":"Instalación, diseño, código, y documentación de TaxonWorks. Encontrar codigo fuente, modelos de datos y documentación técnica. Seguimiento de problemas. Construye este sitio!"},{"title":"Acerca","splash":"Aprenda mas sobre TaxonWorks","details":"Contacta y conecte con la comunidad. Entienda para quién es TaxonWorks. Cite el proyecto. Encuentre usuarios, sus datos, y ejemplos de uso. Lea mas sobre su pasado, presente y futuro. Sepa mas acerca de la informática de la biodiversidad."}],"footer":"El contenido es CC0. Por favor, considere citar."},"headers":[],"git":{"updatedTime":1636739397000,"contributors":[{"name":"José Luis Pereira","email":"pepelui@outlook.com","commits":3}]},"filePathRelative":"es/README.md"}');export{c as comp,d as data};
diff --git a/assets/index.html-Dm5tlExW.js b/assets/index.html-Dm5tlExW.js
new file mode 100644
index 00000000..c6181184
--- /dev/null
+++ b/assets/index.html-Dm5tlExW.js
@@ -0,0 +1 @@
+import{_ as o,c as t,o as a,a as e}from"./app-Bwgh_xIT.js";const n={},i=e("h1",{id:"overview",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#overview"},[e("span",null,"Overview")])],-1),r=e("p",null,[e("em",null,"More on the background of TaxonWorks. Who to contact with questions. Ongoing events. Concepts behind TaxonWorks data modelling, approach to development, and more.")],-1),s=[i,r];function c(d,l){return a(),t("div",null,s)}const h=o(n,[["render",c],["__file","index.html.vue"]]),_=JSON.parse('{"path":"/about/","title":"Overview","lang":"en-US","frontmatter":{},"headers":[],"git":{"updatedTime":1637512285000,"contributors":[{"name":"mjy","email":"diapriid@gmail.com","commits":2}]},"filePathRelative":"about/README.md"}');export{h as comp,_ as data};
diff --git a/assets/index.html-GD_sZnvb.js b/assets/index.html-GD_sZnvb.js
new file mode 100644
index 00000000..94e39fcc
--- /dev/null
+++ b/assets/index.html-GD_sZnvb.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o,b as r}from"./app-Bwgh_xIT.js";const i={},n=r('Why emphasize that software development in science is big-picture important? How are the resources available to developers described here?
A project the nature of TaxonWorks needs contributions from many people to succeed over the long term. To that end we're working hard to build a foundation that permits and encourages anyone to contribute to the project. Highlights include:
All elements of the project are open source. Example meta-projects exist, for example taxonowrks_stats (demo ) illustrating how to build an application off of the API Code generators let you stub a new task view (core feature) or batch-loader in a single line. TaxonWorks is built on Rails. The conventions there acts a wrapper around features that can be written in Ruby or other frameworks like Vue , or other webpack supported frameworks. TaxonWorks is extensively unit tested. This means you can code and contribute with a lot less fear of breaking things. TaxonWorks is deployed in production in Kubernetes , cutting edge application deployment and management software. The Species File Group and its members have held hackathons and many in-house joint workshops. Contact them if you're interested in participating on site. They are also interested in supporting visits to would-be developers, students, or others wishing to get a bootcamp in TaxonWorks development. Docker images let you build against the API in your own JavaScript framework with extremely minimal setup. ',5),a=[n];function s(l,p){return o(),t("div",null,a)}const h=e(i,[["render",s],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/develop/","title":"The big picture","lang":"en-US","frontmatter":{"sidebarPosition":10},"headers":[{"level":2,"title":"How is TaxonWorks supporting developer contributions?","slug":"how-is-taxonworks-supporting-developer-contributions","link":"#how-is-taxonworks-supporting-developer-contributions","children":[]}],"git":{"updatedTime":1668380273000,"contributors":[{"name":"mjy","email":"diapriid@gmail.com","commits":3}]},"filePathRelative":"develop/README.md"}');export{h as comp,d as data};
diff --git a/assets/index.html-kUO2BIpO.js b/assets/index.html-kUO2BIpO.js
new file mode 100644
index 00000000..be55447f
--- /dev/null
+++ b/assets/index.html-kUO2BIpO.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as c,a as e}from"./app-Bwgh_xIT.js";const o={},s=e("h1",{id:"acerca",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#acerca"},[e("span",null,"Acerca")])],-1),r=[s];function n(i,l){return c(),t("div",null,r)}const _=a(o,[["render",n],["__file","index.html.vue"]]),m=JSON.parse('{"path":"/es/about/","title":"Acerca","lang":"es-ES","frontmatter":{},"headers":[],"git":{"updatedTime":1636727752000,"contributors":[{"name":"José Luis Pereira","email":"pepelui@outlook.com","commits":1}]},"filePathRelative":"es/about/README.md"}');export{_ as comp,m as data};
diff --git a/assets/installation.html-C5TqQ23A.js b/assets/installation.html-C5TqQ23A.js
new file mode 100644
index 00000000..a45d904c
--- /dev/null
+++ b/assets/installation.html-C5TqQ23A.js
@@ -0,0 +1 @@
+import{_ as t,c as o,o as n,a as e,d as a}from"./app-Bwgh_xIT.js";const s={},l=e("h1",{id:"instalacion",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#instalacion"},[e("span",null,"Instalación")])],-1),r=e("p",null,[e("em",null,"Como instalo TaxonWorks en ambientes de desarrollo y producción? Cual es el ambiente recomendado y las herramientas para desarrollar TaxonWorks?")],-1),i=e("p",null,[a("La documentación se encuentra presente en el repositorio "),e("a",{href:"https://github.com/SpeciesFileGroup/install_taxonworks",target:"_blank",rel:"noopener noreferrer"},"install_taxonworks"),a(".")],-1),c=[l,r,i];function d(m,p){return n(),o("div",null,c)}const h=t(s,[["render",d],["__file","installation.html.vue"]]),u=JSON.parse('{"path":"/es/develop/installation.html","title":"Instalación","lang":"es-ES","frontmatter":{"sidebarPosition":20},"headers":[],"git":{"updatedTime":1677462190000,"contributors":[{"name":"jlpereira","email":"pepelui@outlook.com","commits":1}]},"filePathRelative":"es/develop/installation.md"}');export{h as comp,u as data};
diff --git a/assets/installation.html-Dm117ntV.js b/assets/installation.html-Dm117ntV.js
new file mode 100644
index 00000000..9f842a59
--- /dev/null
+++ b/assets/installation.html-Dm117ntV.js
@@ -0,0 +1 @@
+import{_ as n,c as o,o as a,a as e,d as t}from"./app-Bwgh_xIT.js";const l={},i=e("h1",{id:"installation",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#installation"},[e("span",null,"Installation")])],-1),s=e("p",null,[e("em",null,"How do I install TaxonWorks both in development and production environments? What is the recommended environment and tools for developing TaxonWorks?")],-1),r=e("p",null,[t("Presently documented in the "),e("a",{href:"https://github.com/SpeciesFileGroup/install_taxonworks",target:"_blank",rel:"noopener noreferrer"},"install_taxonworks"),t(" repository.")],-1),d=[i,s,r];function c(m,_){return a(),o("div",null,d)}const p=n(l,[["render",c],["__file","installation.html.vue"]]),u=JSON.parse('{"path":"/develop/installation.html","title":"Installation","lang":"en-US","frontmatter":{"sidebarPosition":20},"headers":[],"git":{"updatedTime":1668380273000,"contributors":[{"name":"mjy","email":"diapriid@gmail.com","commits":5}]},"filePathRelative":"develop/installation.md"}');export{p as comp,u as data};
diff --git a/assets/matrices.html-BBek7Ay5.js b/assets/matrices.html-BBek7Ay5.js
new file mode 100644
index 00000000..076b3dc0
--- /dev/null
+++ b/assets/matrices.html-BBek7Ay5.js
@@ -0,0 +1 @@
+import{_ as i,r as a,c as r,a as e,d as t,e as d,w as c,b as n,o as s}from"./app-Bwgh_xIT.js";const l={},h=e("h1",{id:"matrices",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#matrices"},[e("span",null,"Matrices")])],-1),m=e("p",null,[e("em",null,"Build sophisticated matrices in TW. Use them to create keys, score images and observations, manage projects, and streamline creation of custom outputs and sharing of descriptors.")],-1),u=e("h2",{id:"nomenclature-quick-start",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#nomenclature-quick-start"},[e("span",null,"Nomenclature Quick Start")])],-1),p=n('Extensive information exists about the TaxonWorks data model . Information is presented in text and searchable graphic formats. Few comments:
Each matrix consistas of defined Rows
and Columns
. Rows
are OTUs
, Collection Objects
and other objects in the database which could be added to a matrix. The same OTU or any other object could be added to as many matrices as needed.Columns
are Descriptors
(characters) which could be added to a matrix. The same descriptor could be added to sevaral matrices.TaxonWorks does not store the entire matrix, instead we store individual observations for each cell in the table. In practice this means, that if you have two matrices which include the same OTU and the same descriptor, the observations in the cell will be identical in both matrices, regardless in which matrix the original observation was made. This allow for the user to clone and combine matrices as needed, the observations will be replicated for each matrix and the combination of the Row object and Column object. In most cases, the work with matrices starts in Observation Matrix Hub
task. Click New
button to create a new matrix. Once the matrix is created, you are automatically in the Edit
matrix mode. Alternatively, in the Observation Matrix Hub
, find an existing matrix from the list and click Edit
button. Also, in the Hub
you can pin a matrix, so that it could be used as a default matrix in various interfaces. Once in Edit
mode, rows and columns needs to be defined. Switch the Row/Column switch
to Column
position; Dynamic/Fixed
switch to Fixed
position. After that we can add a new Descriptor
to the matrix To add a new Descriptor
, click the New Descriptor
link at the top off the interface. Select the descriptor Type
. The available types are: Qualitative
- traditional phylogenetic descriptor with multiple character statesPresence/absence
- similar to the previous one, but only two predefined states are possibleQuantitative
- a single measurement character (a default measurement unit could be defined)Sample
- a numeric character, for which a min/max range could be scored (a default measurement unit could be defined)Gene
- ???Free text
Media
- a specialized descriptor designed for attachment of Depictions
, which will serve as a visual observation in the image matrix Show more mode allows to add some additional details about the descriptor: Short name
, Description name
- which will be used for autogenerated description, Key name
- which will be used in an interactive key, Weight
- which will bring the descriptor close to the top in an interactive key. If the qualitative 'Descriptor' is selected, two or more character states need to be defined. Each Character state
has two fields: Label
- '0', '1', '2', and the Name
, some additional information could also be provided when Show more
is selector. An example of a Qualitative descriptor: 'Body color' with two states: '0' - red, '1' - black. Once the information on the descriptor entered you can click one of the Create
buttons. In all cases, newly created descriptor is added to the matrix as a Column
. Create
will save the record, but you can continue editing the descriptorCreate and return to matrix
, will return you back to the Edit matrix interfaceCreate and new
could be used if multiple descriptors need to be defined. Alternatively, if descriptors do already exists in the database, they could be just added to an existing matrix in the Edit observation matrix
interface by using the search interface on the low left side. Change the Row\\Column
switch to the Column
, and use Search
option. Alternatively, multiple descriptors could be copies from another matrix using From Another Matrix
option. To add Rows
to the matrix, change Row/Column
switch to Row
; Dynamic/Fixed
switch to Fixed
position. OTU
, Collection Object
, or Extract
could be added to a matrix as a Row
. Assuming that those objects already exist in the database, they could be added to the matrix using Search
or From Another Matrix
options, it will work very simillar to adding an existing Descriptor
to the matrix. There is also an option to add a new Row
to the matrix directly from the Browse OTU
or Browse Nomenclature
tasks. In either of tasks, select OTU radial
button, in the Observation matrices
sector, you can select a matrix to automatically add this OTU to it, and proceed directly to scoring mode. Addvanced option to add multiple OTUs to the matrix is using Dynamic
option. This option allow to select either all OTUs marked with a specific Tag
or select a parent taxon, for example a genus, to add all children taxa, for example species, if new species are added to a genus in the future, those should automatically be added to the matrix. Select Sortable columns/rows
checkbox on the top, after that the columns and rowns could be resorted by drugging each up and down the list. OTUs could also be sorted by their nomenclature, using Sort by nomenclature
button. To delete a Row
or Column
from the matrix, use the Trash can button. Keep in mind, deleting each of those does not delete the corresponding object from the database, it only delete its association with a particular Matrix. Deleting Rows and Columns also do not affect the observations associated with those. To edit Row or column, for example to add a new character state to the descriptor, use Edit
button next to this descriptor. In the Edit Matrix
interface, select a 'Score' button second after an OTU or Collection object name in the list You will see the list of descriptors and all possible states, you can check applicable states or add values for numeric descriptors. All changes are saved automatically. Scores could also be cloned from an another object in the matrix using Clone and copy
button. After cloning, only few changes may be required to separate one OTU or a Collection Object from another. It is recommended to select the most similar object for clonning. Destroy
button could be use to clear all scores from a particular OTU or a Collection object.The Matrix Row Coder
interface could also be accessed from the Browse OTU
or Browse Nomenclature
tasks. In either of tasks, select OTU radial
button, in the Observation matrices
sector, you can select a matrix to automatically add this OTU to it (if not added previously), and proceed directly to scoring mode. In the Edit Matrix
interface, select a 'Score' button second after a Descriptor in the list You will see the list of OTUs and Collection object associated with this particular Descriptor. You can check applicable states or add values for numeric descriptors. All changes are saved automatically. On the top of the form, there are options to Destroy all observations
, Populate column
with one particular character state, From the Observation Matrix Hub
task, you can click View
button next to the name of the matrix. In the view mode, you can preview entire matrix, download the matrix in TNT
, nexus
, NeXML
, CSV
formats, to be used, for example in phylogenetic recontstuction or be uploaded into a Lucid builder. Once the matrix is completed, it could be used for species determination as an Interactive Key
, which is accessible from the Observation Matrix Hub
. Before using the matrix for identification, it is recommended to validate the matrix. A matrix could be validated in the Edit
mode by selecting the checkbox Validation
. Each row of the matrix will be evaluated if it has enough resolution to separate this particular row from all other rows in the same matrix. If a row does not pass validation, the matrix could still be used for interactive identification, but adding some additional descriptors may improve the resolution. The Interactive key
interface is divided into 4 frames: the top one with the title and options; the middle one with the list of descriptors; the lower two frames include the list of rows which could be identifier, and eliminated rows which will be populated once the identification is started. The descriptors are sorted by their weight and separating power. The order of the descriptors could be changed in the preferences on the top. To start the identification, select one character state from any descriptor. It is possible to select more than one state in a case of uncertanty, to do this, click on the descriptor name, and make multiple selection. By default the rows which do not have scores for selected descriptor are not eliminated from the list, it is assumed that any character state is possible, but this behavior could be changed in the settings on the top of the page, if it is needed, for example, for the matrix evaluation. If a particular row in the matrix does not have a score matching selected character state, this taxon or collection object is moved to the list of Eliminated rows. The behavior could be slightly changed by adding error tolerance. The tolerance equal '1' means that a single error in identification is permitted, the row will be eliminated only when 2 or more errors exists. To clear the interactive key, and start the identification from the beginning, use Reset
button. If the matrix is large, it could be more convenient not to eliminate the row after selection of each descriptor, since the wait time could be several seconds, before you can select a next descriptor. It is possible to use Refresh only taxa
option. The list of descriptors will not be updated before the Refresh
button is clicked. After the refresh, the taxa not matching the search criteria are moved to the right, and the list of descriptors also updated to bring more useful once closer to the top of the list. Continue determination before only one or few rows still present in the list of Remaining. It is also possible to use Select
button, to reduce the list of rows to be identified from the very beginning. If the list of entities is reduced, the list of descriptors will also be optimized to identify the remaining entries. To make the interactive key more functional, you can add depictions to each character state of each descriptor. To do this, go back to the Edit Matrix
interface, select one of the descriptors, click edit button next to it. In the Edit
mode, you can use the radial annotator next to each character state to add a depiction. Image matrix is a specialized matrix which has defined descriptors and row, but does not have any scores. Instead of scores, images are added as a depiction to each cell of the table. The image matrix could also be used as a pictorial key for taxon identification, the images from the matrix are also viewed in the Browse OTU page. So instead of adding images directly to each OTU, they could be added to the image matrix instead to get additional functionality.
To work with an image matrix, create a new matrix as described above. Add rows to the matrix, OTUs for example. Add new descriptors to the matrix, all of them should be Media
type descriptors. Usually this matrix has fewer descriptors than typical morphological matrix, and each descriptor will represent a standard view of the organism or a particular structure useful to determination of taxa. For example, 'dorsal view', 'lateral view', 'head', 'wing venation'. Once the rows and columns are defined, the most convenient way to work with the image matrix would be to use the Observation Matrix Dashbord
task. In the Observation Matrix Dashbord
task, select a parent taxon and rank of the children taxa which you would like to see, for example, select a genus name, and select species rank to see all the species-level taxa from this particular genus. Once selected, click the Search
button. You will see the table of OTUs with some summary, how many observations has each, and how many depictions are added to a particular OTU in an image matrix. Use Open in a matrix
button next to one of the OTUs to add OTU to a matrix. Select the image matrix from the list. Once the matrix is selected, you get redirected to an editing interface, which looks like a table, where the descriptors are the headers of each column. To add an image to a particular cell of the table, simly drug and drop it from a folder on your computer to that cell. The images could also be moved from one cell to another. Once the image added, you can provide some metadata. Click on the image to add caption. Click the Radial Annotator
button, to add citation and/or attribution. Adding images to multiple OTUs: in the 'Observation matrices dashboard', once you filtered the list of OTUs, select few of tham and click the Edit image matrix
buttom. The table for editing multiple OTUs will be opened. WARNING: do not select all OTUs for editing, since ALL of tham will be added to a matrix as separate Rows. Use the previous step to add multiple OTUs to any given matrix, not only to Image matrix, that could be another fast way to add multiple rows, for example adding rows for a future ineractive key. Image matrix for any given OTU could also be accessed with the OTU Radial
button, in the Browse OTU
, or Browse Nomenclature
tasks. In the Observation Matrix Dashbord
task, select a parent taxon and rank of the children taxa which you would like to see, for example, select a genus name, and select species rank to see all the species-level taxa from this particular genus. Once selected, click the Search
button. In the filtered results, Select All
or few OTUs using checkboxes before the names, and click the View image matrix
button. A table will be open to display all illustrations, so that OTUs could be compared to each other. In the View mode, you can hide some rows but clicking a checkbox before each row, or you can quickly switch to the Edit mode. ',25);function f(b,g){const o=a("RouteLink");return s(),r("div",null,[h,m,u,e("p",null,[t("TW provides a suite of common tasks help you to manage your matrices, descriptors, observations and related data. This section assumes you have some familiarity with the "),d(o,{to:"/guide/Manual/conventions.html"},{default:c(()=>[t("TW user interface conventions")]),_:1}),t(" and introduces new user interface features where needed. Next, please familiarize yourself with the kinds of tasks TW offers related to Matrices.")]),p])}const x=i(l,[["render",f],["__file","matrices.html.vue"]]),v=JSON.parse('{"path":"/guide/Manual/matrices.html","title":"Matrices","lang":"en-US","frontmatter":{"sidebarPosition":300},"headers":[{"level":2,"title":"Nomenclature Quick Start","slug":"nomenclature-quick-start","link":"#nomenclature-quick-start","children":[]},{"level":2,"title":"Understanding the data model","slug":"understanding-the-data-model","link":"#understanding-the-data-model","children":[]},{"level":2,"title":"Curating data","slug":"curating-data","link":"#curating-data","children":[{"level":3,"title":"Basic information","slug":"basic-information","link":"#basic-information","children":[]},{"level":3,"title":"Adding a Descriptor to the Matrix","slug":"adding-a-descriptor-to-the-matrix","link":"#adding-a-descriptor-to-the-matrix","children":[]},{"level":3,"title":"Adding an OTU or Collection Object to the Matrix","slug":"adding-an-otu-or-collection-object-to-the-matrix","link":"#adding-an-otu-or-collection-object-to-the-matrix","children":[]},{"level":3,"title":"Reordering And Editing Rows and Collumns in the Matrix","slug":"reordering-and-editing-rows-and-collumns-in-the-matrix","link":"#reordering-and-editing-rows-and-collumns-in-the-matrix","children":[]},{"level":3,"title":"Adding scores to a Row","slug":"adding-scores-to-a-row","link":"#adding-scores-to-a-row","children":[]},{"level":3,"title":"Adding scores to a Collumn","slug":"adding-scores-to-a-collumn","link":"#adding-scores-to-a-collumn","children":[]},{"level":3,"title":"Using a Matrix","slug":"using-a-matrix","link":"#using-a-matrix","children":[]}]},{"level":2,"title":"Interactive key interface","slug":"interactive-key-interface","link":"#interactive-key-interface","children":[]},{"level":2,"title":"Image matrices","slug":"image-matrices","link":"#image-matrices","children":[{"level":3,"title":"Viewing images in the Image Matrix","slug":"viewing-images-in-the-image-matrix","link":"#viewing-images-in-the-image-matrix","children":[]}]}],"git":{"updatedTime":1695167580000,"contributors":[{"name":"Debbie Paul","email":"dlpaul@illinois.edu","commits":2},{"name":"José Luis Pereira","email":"pepelui@outlook.com","commits":2},{"name":"Deborah Paul","email":"dlpaul@illinois.edu","commits":1},{"name":"Dmitry Dmitriev","email":"arboridia@gmail.com","commits":1}]},"filePathRelative":"guide/Manual/matrices.md"}');export{x as comp,v as data};
diff --git a/assets/migrate-to-TaxonWorks.html-DawmXU2R.js b/assets/migrate-to-TaxonWorks.html-DawmXU2R.js
new file mode 100644
index 00000000..09ef3916
--- /dev/null
+++ b/assets/migrate-to-TaxonWorks.html-DawmXU2R.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as a,b as o}from"./app-Bwgh_xIT.js";const i={},r=o('General strategies and tips for migrating complete projects into TaxonWorks with reference to broader considerations for any data migration.
For general import and input methods see Import and Export .
Those considering TaxonWorks often have existing data in many different formats. One of their first questions is how can they get their existing data in to TaxonWorks. In your considerations it might help to read the Checklist , a generic list of things to consider.
TaxonWorks collectively provides a nice spectrum of strategies for moving projects into it depending on the nature of your data and the skill-sets of those helping you. These range from completely manually typing in the data to using code to script enter everything. All the strategies listed below have been employed by at least one project within TaxonWorks.
Even with a large dataset some see coming into a new project as a way to start fresh. Keying in your data has the benefit of forcing you to look carefully at it. It ensures a maximal match to TaxonWorks concepts (data models) as everything is done "natively". It lets you master the interfaces you'll ultimately use through repeated use and experimentation. For incoming datasets with tables of less than 500 rows this is very feasible. Remember that the time spent starting, even if weeks or months, is a tiny fraction of the years spent curating into the future. The elephant in the room- the time it takes to write a script, reformat your data, test and refine batch loads is all time spent, often waiting for others, that you and your team could have been entering data.
We've worked hard to build interfaces that variously:
Facilitate adding multiple items via drag and drop (e.g. images) Use "smart selectors" that predict what values you might use based on your recent use Use hot keys to copy values from field to field Use locks to lock in values from record to record Use locks to increment values from record to record Let you build a list of current favourites, and default forms to use one of them Reference an extended clipboard toggling between 4 values Use hot keys to clone records Use in-line data creation for related values when autocompletes fail to find a search target Select-paste from one target to another Make annotation easy in many contexts via radial popups This option is most likely to fully cover needs if your data are encodable in Darwin Core Occurrence and Checklist formats. Other batch loaders exist per model, though without the sophistication of the former.
If your data are old and rich/complex then writing a 1-off script is often the most effective strategy. It's the practice that SFG members use for datasets that span decades of curation. This is also useful for data not covered in other batch-loaders as part of the hybrid approach.
This process is not comprehensive, i.e. complete datasets are not migrated in this way. It augments the Hybrid approach outlined below. Small updates are possible directly via careful code execution in the Rails console. In production this option is only accessible by server administrators, however crafting this code is possible by users, with the execution step provided via communication with those administrators.
Hybrid approaches use one or more of the above options to achieve complete coverage. For example use BibTeX formatted sources to import References followed by DwC Checklist data for names, DwC Occurrence data for specimens followed by a script that adds BiologicalAssociation data and Citations.
Accessing the database directly via SQL calls is very rarely done by admins, almost exclusively to address bad data that was not initially caught by model validation but has been, i.e. for retroactive fixes. No batch import uses direct calls to write or update as this avoids the data validation layer.
The external API does not allow POST/PATCH requests, i.e. you can't write to the system in that way.
TODO, document paths from other broadly used software platforms. In general many platforms export to DwC, this is the first step then see Batch Load.
Here the idea is to import the core of your data via the built-in importer, see Darwin Core Archive (DwC-A) import , then, if needed, augment the with the Hybrid approach.
The intent is that these apply to any migration, not just into TaxonWorks.
Regardless of what you're migrating, and where you are migrating to, one of the very first questions you should ask is not "How do I get in?", but rather "How do I get out ?". We know of no software that has lasted forever in its current form, and there is little reason to expect this to change.
How long do I need to use the platform I'm using? What platforms can you migrate to? What data-formats does the new platform let me export to. Do I understand those formats. Do others understand them? And what can I afford to lose
Going from one system to another means you will lose, so to speak, some things. In addition to the opposite of what you might gain (below) these might include:
Institutional memory on how things were done in the old system, for example how to use interfaces, and how data got in-and-out. Documentation that is now not relevant in the new system Data semantics In addition to the opposite of what you might lose (above):
Improved data semantics, which translates to an increase in data quality
and the FAIRness
of your data. This is one of the primary motivators for moving to a new system New, better documentation (if it exists) Improved interfaces. Greater flexibility Access to a community of support Longer than you expect, however this is highly dependent on what you're coming in with. In our experience, particularly with regards to complex, old data, a rough rule of thumb is that for every year of curation you've done on your dataset you can expect up to 1/2 a years time for the migration process to complete . This assumes that you want to be a lossless as possible. Research datasets 20 years old have gone through multiple revisions, have had their semantics drift here and there, cover things that are often very specific to some domain and contain other complexities that make this a difficult process. If we think about taking into account the time between the "AHA! This data should move!" moment to the time at which the dataset is moved then you might take into account such things as (in no particular order): 1) writing grants for support (and resubmitting them, that's 4 years right there); 2) finding people to do the work; 3) waiting for those people to have the time to do the work; 4) finding a community to join you in the move; 5) educating you and your community on how to use the new platform; 5) validating data at all steps; 6) practicing the migration; 7) modelling the transition of your data to the new model; 8) iteratively updating your data to match the new model; 9) writing the tools or processes that do the data migration; 10) waiting for new features that must be there to meet your needs to be created on the target platform; 11) debating other platforms to use; 12) building community consensus on what platform to migrate to; 13) doing feature comparisons; 14) learning about your options; 15) waiting for the original curator to retire; 16) waiting for the original curator to retire and "be done" with their data; 16) migrating your data to a platform and finding out near the end (or shortly thereafter) that the platform is no longer supported and starting all over again (thanks big G); 17) some standards group changing what identifier you should use; 18) some ontology group changing the meaning of the things the identifiers point to; 19) staff turnover; 20) your ace post-doc who ran the show retiring and never, ever, coming back; 21) big arguments with your governmental agency as to why you should be allowed to move; 22) doing the migration, then figuring out you missed that 1 critical field; 22) waiting for the server that hosts the data to finally die to induce that real motivating moment of panic. These are all things we've experienced, please share yours!
Or, "get to text"
Many systems that you migrate too will want your data in a text format (e.g. CSV). This is in contrast to something like a Spreadsheet. Depending on who is supporting the migration it might be valuable for you to get eperienced in exporting to this format, as it may happen iteratively and frequently. If your data are in a wide-spread SQL format that is compatible (e.g. SQLlite or PostgresQL)
Consider archiving snapshots of your data as they originally existed for all the future digital-archaeologist who need to justify their jobs.
Keep original
copies of exported text files, as "pristine" as possible in one directory. Clone
those files into a working directory. Use Git to commit the files to persist changes at different times. TODO: Reference to data carpentry class or R for data science setup.
Coming, a pointer to a checklist of data quality utilities.
The process at this step seeks to accomplish a number of things:
Improving the consistency of your data prior to migration Pre-adapting, so to speak, your data to the semantics of the new system. For example using specific column-headers or splitting data into multiple fields if the new system prefers a specific format. A general cleaning of your data. Since you don't have to go back to your old tools you can use new tools to update your data (see list above) without having the problem of synchronizing the data back to your original tools format. At this point you'll engage the import capabilities of the system you're moving to.
Hopefully that system has ways to trial the import, and re-do it from scratch. This is key for complex data. Practice also means using the new system, getting familiar with the user-interfaces and tools. This helps to confirm whether or not you really want to migrate. It gives you new views on your data. You, as the expert, will best see anomalies in the data, some of which may suggests problems with the import process.
Set a date-time a making the final import run. Make sure your community is aware and engaged.
You may also consider taking the opportunity to:
Broaden your community by encouraging others to join. Solo-run projects on complex data are "fragile" in ways that groups of collaborators don't face. Adding new ways to communicate issues. Remember, no migration is perfect, immediately after the import run expect to see a flurry of communication that points out problems with the data, tools, etc. Perhaps you can start a shared issue tracker or chat-room so that these issues become visible and accessible to others beyond yourself. Open, shared communications lets experts outside your community hop in and help, as opposed to, for example emails from 1 person to another that are "hidden"from others who might help. Open communication also leaves an audit-trail that can be used to highlight the broader impacts of your project (e.g. look, X number of people need our data, and took the time to engage us) in ways that emails can not. You're never done. Sorry.
',65),n=[r];function s(l,h){return a(),t("div",null,n)}const c=e(i,[["render",s],["__file","migrate-to-TaxonWorks.html.vue"]]),p=JSON.parse(`{"path":"/guide/migrate-to-TaxonWorks.html","title":"Migrate to TaxonWorks","lang":"en-US","frontmatter":{"sidebarPosition":32},"headers":[{"level":2,"title":"Overview","slug":"overview","link":"#overview","children":[]},{"level":2,"title":"Strategies","slug":"strategies","link":"#strategies","children":[{"level":3,"title":"Keying","slug":"keying","link":"#keying","children":[]},{"level":3,"title":"Batch load","slug":"batch-load","link":"#batch-load","children":[]},{"level":3,"title":"Script","slug":"script","link":"#script","children":[{"level":4,"title":"Console","slug":"console","link":"#console","children":[]}]},{"level":3,"title":"Hybrid","slug":"hybrid","link":"#hybrid","children":[]}]},{"level":2,"title":"Methods not available","slug":"methods-not-available","link":"#methods-not-available","children":[{"level":3,"title":"SQL statements","slug":"sql-statements","link":"#sql-statements","children":[]},{"level":3,"title":"API POST/PATCH","slug":"api-post-patch","link":"#api-post-patch","children":[]}]},{"level":2,"title":"Migrating from an existing platform","slug":"migrating-from-an-existing-platform","link":"#migrating-from-an-existing-platform","children":[]},{"level":2,"title":"Darwin Core Archive (DwC-A) based strategies","slug":"darwin-core-archive-dwc-a-based-strategies","link":"#darwin-core-archive-dwc-a-based-strategies","children":[]},{"level":2,"title":"Checklist","slug":"checklist","link":"#checklist","children":[{"level":3,"title":"Before you start","slug":"before-you-start","link":"#before-you-start","children":[{"level":4,"title":"Getting out","slug":"getting-out","link":"#getting-out","children":[]},{"level":4,"title":"What might I lose?","slug":"what-might-i-lose","link":"#what-might-i-lose","children":[]},{"level":4,"title":"What might I gain?","slug":"what-might-i-gain","link":"#what-might-i-gain","children":[]},{"level":4,"title":"How long will this take?","slug":"how-long-will-this-take","link":"#how-long-will-this-take","children":[]}]},{"level":3,"title":"Prepare your data","slug":"prepare-your-data","link":"#prepare-your-data","children":[{"level":4,"title":"Archive your old data","slug":"archive-your-old-data","link":"#archive-your-old-data","children":[]},{"level":4,"title":"Organize your text","slug":"organize-your-text","link":"#organize-your-text","children":[]},{"level":4,"title":"Iteratively clean, transform, and validate your data","slug":"iteratively-clean-transform-and-validate-your-data","link":"#iteratively-clean-transform-and-validate-your-data","children":[]}]},{"level":3,"title":"Import","slug":"import","link":"#import","children":[{"level":4,"title":"Practice","slug":"practice","link":"#practice","children":[]},{"level":4,"title":"Plan for transition","slug":"plan-for-transition","link":"#plan-for-transition","children":[]},{"level":4,"title":"Complete the migration","slug":"complete-the-migration","link":"#complete-the-migration","children":[]}]},{"level":3,"title":"When you're done","slug":"when-you-re-done","link":"#when-you-re-done","children":[]}]}],"git":{"updatedTime":1711747772000,"contributors":[{"name":"mjy","email":"diapriid@gmail.com","commits":1}]},"filePathRelative":"guide/migrate-to-TaxonWorks.md"}`);export{c as comp,p as data};
diff --git a/assets/models.html-CKtLdWnZ.js b/assets/models.html-CKtLdWnZ.js
new file mode 100644
index 00000000..1198e9ec
--- /dev/null
+++ b/assets/models.html-CKtLdWnZ.js
@@ -0,0 +1 @@
+import{_ as r,r as s,c as n,a as e,d as t,e as a,w as l,o as i}from"./app-Bwgh_xIT.js";const d={},c=e("h1",{id:"models",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#models"},[e("span",null,"Models")])],-1),h=e("p",null,[e("em",null,"This file auto-generated 2022-02-08 10:47:07 -0600 via 'rake tw:docs:model_ers'. Do not hand-edit.")],-1),_=e("em",null,"target model",-1),m=e("em",null,"through",-1),p=e("em",null,"target model",-1),g=e("em",null,"target model",-1),u=e("em",null,"through",-1),b=e("h2",{id:"alternate-value",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#alternate-value"},[e("span",null,"Alternate value")])],-1),f=e("a",{href:"#models"},"top",-1),v=e("a",{href:"https://rdoc.taxonworks.org/AlternateValue.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),x=e("object",{data:"/images/model/alternate_values_model_er.svg",type:"image/svg+xml"},null,-1),k=e("h2",{id:"asserted-distribution",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#asserted-distribution"},[e("span",null,"Asserted distribution")])],-1),y=e("a",{href:"#models"},"top",-1),D=e("a",{href:"https://rdoc.taxonworks.org/AssertedDistribution.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),w=e("a",{href:"https://api.taxonworks.org/#/asserted_distributions",target:"_blank",rel:"noopener noreferrer"},"api",-1),j=e("object",{data:"/images/model/asserted_distributions_model_er.svg",type:"image/svg+xml"},null,-1),C=e("h2",{id:"attribution",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#attribution"},[e("span",null,"Attribution")])],-1),O=e("a",{href:"#models"},"top",-1),T=e("a",{href:"https://rdoc.taxonworks.org/Attribution.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),S=e("object",{data:"/images/model/attributions_model_er.svg",type:"image/svg+xml"},null,-1),B=e("h2",{id:"biocuration-classification",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#biocuration-classification"},[e("span",null,"Biocuration classification")])],-1),P=e("a",{href:"#models"},"top",-1),G=e("a",{href:"https://rdoc.taxonworks.org/BiocurationClassification.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),R=e("object",{data:"/images/model/biocuration_classifications_model_er.svg",type:"image/svg+xml"},null,-1),q=e("h2",{id:"biological-association",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#biological-association"},[e("span",null,"Biological association")])],-1),A=e("a",{href:"#models"},"top",-1),L=e("a",{href:"https://rdoc.taxonworks.org/BiologicalAssociation.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),I=e("a",{href:"https://api.taxonworks.org/#/biological_associations",target:"_blank",rel:"noopener noreferrer"},"api",-1),N=e("object",{data:"/images/model/biological_associations_model_er.svg",type:"image/svg+xml"},null,-1),z=e("h2",{id:"biological-associations-biological-associations-graph",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#biological-associations-biological-associations-graph"},[e("span",null,"Biological associations biological associations graph")])],-1),M=e("a",{href:"#models"},"top",-1),E=e("a",{href:"https://rdoc.taxonworks.org/BiologicalAssociationsBiologicalAssociationsGraph.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),V=e("object",{data:"/images/model/biological_associations_biological_associations_graphs_model_er.svg",type:"image/svg+xml"},null,-1),F=e("h2",{id:"biological-associations-graph",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#biological-associations-graph"},[e("span",null,"Biological associations graph")])],-1),J=e("a",{href:"#models"},"top",-1),K=e("a",{href:"https://rdoc.taxonworks.org/BiologicalAssociationsGraph.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),U=e("object",{data:"/images/model/biological_associations_graphs_model_er.svg",type:"image/svg+xml"},null,-1),H=e("h2",{id:"biological-relationship-type",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#biological-relationship-type"},[e("span",null,"Biological relationship type")])],-1),Q=e("a",{href:"#models"},"top",-1),W=e("a",{href:"https://rdoc.taxonworks.org/BiologicalRelationshipType.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),X=e("object",{data:"/images/model/biological_relationship_types_model_er.svg",type:"image/svg+xml"},null,-1),Y=e("h2",{id:"biological-relationship",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#biological-relationship"},[e("span",null,"Biological relationship")])],-1),Z=e("a",{href:"#models"},"top",-1),$=e("a",{href:"https://rdoc.taxonworks.org/BiologicalRelationship.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ee=e("object",{data:"/images/model/biological_relationships_model_er.svg",type:"image/svg+xml"},null,-1),te=e("h2",{id:"character-state",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#character-state"},[e("span",null,"Character state")])],-1),oe=e("a",{href:"#models"},"top",-1),ae=e("a",{href:"https://rdoc.taxonworks.org/CharacterState.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),le=e("object",{data:"/images/model/character_states_model_er.svg",type:"image/svg+xml"},null,-1),re=e("h2",{id:"citation-topic",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#citation-topic"},[e("span",null,"Citation topic")])],-1),se=e("a",{href:"#models"},"top",-1),ne=e("a",{href:"https://rdoc.taxonworks.org/CitationTopic.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ie=e("object",{data:"/images/model/citation_topics_model_er.svg",type:"image/svg+xml"},null,-1),de=e("h2",{id:"citation",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#citation"},[e("span",null,"Citation")])],-1),ce=e("a",{href:"#models"},"top",-1),he=e("a",{href:"https://rdoc.taxonworks.org/Citation.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),_e=e("a",{href:"https://api.taxonworks.org/#/citations",target:"_blank",rel:"noopener noreferrer"},"api",-1),me=e("object",{data:"/images/model/citations_model_er.svg",type:"image/svg+xml"},null,-1),pe=e("h2",{id:"collecting-event",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#collecting-event"},[e("span",null,"Collecting event")])],-1),ge=e("a",{href:"#models"},"top",-1),ue=e("a",{href:"https://rdoc.taxonworks.org/CollectingEvent.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),be=e("a",{href:"https://api.taxonworks.org/#/collecting_events",target:"_blank",rel:"noopener noreferrer"},"api",-1),fe=e("object",{data:"/images/model/collecting_events_model_er.svg",type:"image/svg+xml"},null,-1),ve=e("h2",{id:"collection-object-observation",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#collection-object-observation"},[e("span",null,"Collection object observation")])],-1),xe=e("a",{href:"#models"},"top",-1),ke=e("a",{href:"https://rdoc.taxonworks.org/CollectionObjectObservation.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ye=e("object",{data:"/images/model/collection_object_observations_model_er.svg",type:"image/svg+xml"},null,-1),De=e("h2",{id:"collection-object",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#collection-object"},[e("span",null,"Collection object")])],-1),we=e("a",{href:"#models"},"top",-1),je=e("a",{href:"https://rdoc.taxonworks.org/CollectionObject.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ce=e("a",{href:"https://api.taxonworks.org/#/collection_objects",target:"_blank",rel:"noopener noreferrer"},"api",-1),Oe=e("object",{data:"/images/model/collection_objects_model_er.svg",type:"image/svg+xml"},null,-1),Te=e("h2",{id:"collection-profile",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#collection-profile"},[e("span",null,"Collection profile")])],-1),Se=e("a",{href:"#models"},"top",-1),Be=e("a",{href:"https://rdoc.taxonworks.org/CollectionProfile.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Pe=e("object",{data:"/images/model/collection_profiles_model_er.svg",type:"image/svg+xml"},null,-1),Ge=e("h2",{id:"common-name",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#common-name"},[e("span",null,"Common name")])],-1),Re=e("a",{href:"#models"},"top",-1),qe=e("a",{href:"https://rdoc.taxonworks.org/CommonName.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ae=e("object",{data:"/images/model/common_names_model_er.svg",type:"image/svg+xml"},null,-1),Le=e("h2",{id:"confidence",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#confidence"},[e("span",null,"Confidence")])],-1),Ie=e("a",{href:"#models"},"top",-1),Ne=e("a",{href:"https://rdoc.taxonworks.org/Confidence.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ze=e("object",{data:"/images/model/confidences_model_er.svg",type:"image/svg+xml"},null,-1),Me=e("h2",{id:"container-item",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#container-item"},[e("span",null,"Container item")])],-1),Ee=e("a",{href:"#models"},"top",-1),Ve=e("a",{href:"https://rdoc.taxonworks.org/ContainerItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Fe=e("object",{data:"/images/model/container_items_model_er.svg",type:"image/svg+xml"},null,-1),Je=e("h2",{id:"container",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#container"},[e("span",null,"Container")])],-1),Ke=e("a",{href:"#models"},"top",-1),Ue=e("a",{href:"https://rdoc.taxonworks.org/Container.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),He=e("object",{data:"/images/model/containers_model_er.svg",type:"image/svg+xml"},null,-1),Qe=e("h2",{id:"content",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#content"},[e("span",null,"Content")])],-1),We=e("a",{href:"#models"},"top",-1),Xe=e("a",{href:"https://rdoc.taxonworks.org/Content.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ye=e("a",{href:"https://api.taxonworks.org/#/contents",target:"_blank",rel:"noopener noreferrer"},"api",-1),Ze=e("object",{data:"/images/model/contents_model_er.svg",type:"image/svg+xml"},null,-1),$e=e("h2",{id:"controlled-vocabulary-term",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#controlled-vocabulary-term"},[e("span",null,"Controlled vocabulary term")])],-1),et=e("a",{href:"#models"},"top",-1),tt=e("a",{href:"https://rdoc.taxonworks.org/ControlledVocabularyTerm.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ot=e("object",{data:"/images/model/controlled_vocabulary_terms_model_er.svg",type:"image/svg+xml"},null,-1),at=e("h2",{id:"data-attribute",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#data-attribute"},[e("span",null,"Data attribute")])],-1),lt=e("a",{href:"#models"},"top",-1),rt=e("a",{href:"https://rdoc.taxonworks.org/DataAttribute.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),st=e("a",{href:"https://api.taxonworks.org/#/data_attributes",target:"_blank",rel:"noopener noreferrer"},"api",-1),nt=e("object",{data:"/images/model/data_attributes_model_er.svg",type:"image/svg+xml"},null,-1),it=e("h2",{id:"dataset-record-field",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dataset-record-field"},[e("span",null,"Dataset record field")])],-1),dt=e("a",{href:"#models"},"top",-1),ct=e("a",{href:"https://rdoc.taxonworks.org/DatasetRecordField.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ht=e("object",{data:"/images/model/dataset_record_fields_model_er.svg",type:"image/svg+xml"},null,-1),_t=e("h2",{id:"dataset-record",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dataset-record"},[e("span",null,"Dataset record")])],-1),mt=e("a",{href:"#models"},"top",-1),pt=e("a",{href:"https://rdoc.taxonworks.org/DatasetRecord.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),gt=e("object",{data:"/images/model/dataset_records_model_er.svg",type:"image/svg+xml"},null,-1),ut=e("h2",{id:"depiction",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#depiction"},[e("span",null,"Depiction")])],-1),bt=e("a",{href:"#models"},"top",-1),ft=e("a",{href:"https://rdoc.taxonworks.org/Depiction.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),vt=e("object",{data:"/images/model/depictions_model_er.svg",type:"image/svg+xml"},null,-1),xt=e("h2",{id:"derived-collection-object",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#derived-collection-object"},[e("span",null,"Derived collection object")])],-1),kt=e("a",{href:"#models"},"top",-1),yt=e("a",{href:"https://rdoc.taxonworks.org/DerivedCollectionObject.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Dt=e("object",{data:"/images/model/derived_collection_objects_model_er.svg",type:"image/svg+xml"},null,-1),wt=e("h2",{id:"descriptor",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#descriptor"},[e("span",null,"Descriptor")])],-1),jt=e("a",{href:"#models"},"top",-1),Ct=e("a",{href:"https://rdoc.taxonworks.org/Descriptor.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ot=e("object",{data:"/images/model/descriptors_model_er.svg",type:"image/svg+xml"},null,-1),Tt=e("h2",{id:"documentation",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#documentation"},[e("span",null,"Documentation")])],-1),St=e("a",{href:"#models"},"top",-1),Bt=e("a",{href:"https://rdoc.taxonworks.org/Documentation.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Pt=e("object",{data:"/images/model/documentation_model_er.svg",type:"image/svg+xml"},null,-1),Gt=e("h2",{id:"document",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#document"},[e("span",null,"Document")])],-1),Rt=e("a",{href:"#models"},"top",-1),qt=e("a",{href:"https://rdoc.taxonworks.org/Document.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),At=e("object",{data:"/images/model/documents_model_er.svg",type:"image/svg+xml"},null,-1),Lt=e("h2",{id:"extract",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#extract"},[e("span",null,"Extract")])],-1),It=e("a",{href:"#models"},"top",-1),Nt=e("a",{href:"https://rdoc.taxonworks.org/Extract.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),zt=e("object",{data:"/images/model/extracts_model_er.svg",type:"image/svg+xml"},null,-1),Mt=e("h2",{id:"gene-attribute",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#gene-attribute"},[e("span",null,"Gene attribute")])],-1),Et=e("a",{href:"#models"},"top",-1),Vt=e("a",{href:"https://rdoc.taxonworks.org/GeneAttribute.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ft=e("object",{data:"/images/model/gene_attributes_model_er.svg",type:"image/svg+xml"},null,-1),Jt=e("h2",{id:"geographic-area-type",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#geographic-area-type"},[e("span",null,"Geographic area type")])],-1),Kt=e("a",{href:"#models"},"top",-1),Ut=e("a",{href:"https://rdoc.taxonworks.org/GeographicAreaType.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ht=e("object",{data:"/images/model/geographic_area_types_model_er.svg",type:"image/svg+xml"},null,-1),Qt=e("h2",{id:"geographic-area",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#geographic-area"},[e("span",null,"Geographic area")])],-1),Wt=e("a",{href:"#models"},"top",-1),Xt=e("a",{href:"https://rdoc.taxonworks.org/GeographicArea.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Yt=e("object",{data:"/images/model/geographic_areas_model_er.svg",type:"image/svg+xml"},null,-1),Zt=e("h2",{id:"geographic-areas-geographic-item",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#geographic-areas-geographic-item"},[e("span",null,"Geographic areas geographic item")])],-1),$t=e("a",{href:"#models"},"top",-1),eo=e("a",{href:"https://rdoc.taxonworks.org/GeographicAreasGeographicItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),to=e("object",{data:"/images/model/geographic_areas_geographic_items_model_er.svg",type:"image/svg+xml"},null,-1),oo=e("h2",{id:"geographic-item",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#geographic-item"},[e("span",null,"Geographic item")])],-1),ao=e("a",{href:"#models"},"top",-1),lo=e("a",{href:"https://rdoc.taxonworks.org/GeographicItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ro=e("object",{data:"/images/model/geographic_items_model_er.svg",type:"image/svg+xml"},null,-1),so=e("h2",{id:"georeference",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#georeference"},[e("span",null,"Georeference")])],-1),no=e("a",{href:"#models"},"top",-1),io=e("a",{href:"https://rdoc.taxonworks.org/Georeference.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),co=e("object",{data:"/images/model/georeferences_model_er.svg",type:"image/svg+xml"},null,-1),ho=e("h2",{id:"identifier",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#identifier"},[e("span",null,"Identifier")])],-1),_o=e("a",{href:"#models"},"top",-1),mo=e("a",{href:"https://rdoc.taxonworks.org/Identifier.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),po=e("a",{href:"https://api.taxonworks.org/#/identifiers",target:"_blank",rel:"noopener noreferrer"},"api",-1),go=e("object",{data:"/images/model/identifiers_model_er.svg",type:"image/svg+xml"},null,-1),uo=e("h2",{id:"image",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#image"},[e("span",null,"Image")])],-1),bo=e("a",{href:"#models"},"top",-1),fo=e("a",{href:"https://rdoc.taxonworks.org/Image.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),vo=e("a",{href:"https://api.taxonworks.org/#/images",target:"_blank",rel:"noopener noreferrer"},"api",-1),xo=e("object",{data:"/images/model/images_model_er.svg",type:"image/svg+xml"},null,-1),ko=e("h2",{id:"import-dataset",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#import-dataset"},[e("span",null,"Import dataset")])],-1),yo=e("a",{href:"#models"},"top",-1),Do=e("a",{href:"https://rdoc.taxonworks.org/ImportDataset.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),wo=e("object",{data:"/images/model/import_datasets_model_er.svg",type:"image/svg+xml"},null,-1),jo=e("h2",{id:"label",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#label"},[e("span",null,"Label")])],-1),Co=e("a",{href:"#models"},"top",-1),Oo=e("a",{href:"https://rdoc.taxonworks.org/Label.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),To=e("object",{data:"/images/model/labels_model_er.svg",type:"image/svg+xml"},null,-1),So=e("h2",{id:"language",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#language"},[e("span",null,"Language")])],-1),Bo=e("a",{href:"#models"},"top",-1),Po=e("a",{href:"https://rdoc.taxonworks.org/Language.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Go=e("object",{data:"/images/model/languages_model_er.svg",type:"image/svg+xml"},null,-1),Ro=e("h2",{id:"loan-item",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#loan-item"},[e("span",null,"Loan item")])],-1),qo=e("a",{href:"#models"},"top",-1),Ao=e("a",{href:"https://rdoc.taxonworks.org/LoanItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Lo=e("object",{data:"/images/model/loan_items_model_er.svg",type:"image/svg+xml"},null,-1),Io=e("h2",{id:"loan",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#loan"},[e("span",null,"Loan")])],-1),No=e("a",{href:"#models"},"top",-1),zo=e("a",{href:"https://rdoc.taxonworks.org/Loan.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Mo=e("object",{data:"/images/model/loans_model_er.svg",type:"image/svg+xml"},null,-1),Eo=e("h2",{id:"namespace",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#namespace"},[e("span",null,"Namespace")])],-1),Vo=e("a",{href:"#models"},"top",-1),Fo=e("a",{href:"https://rdoc.taxonworks.org/Namespace.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Jo=e("object",{data:"/images/model/namespaces_model_er.svg",type:"image/svg+xml"},null,-1),Ko=e("h2",{id:"note",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#note"},[e("span",null,"Note")])],-1),Uo=e("a",{href:"#models"},"top",-1),Ho=e("a",{href:"https://rdoc.taxonworks.org/Note.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Qo=e("a",{href:"https://api.taxonworks.org/#/notes",target:"_blank",rel:"noopener noreferrer"},"api",-1),Wo=e("object",{data:"/images/model/notes_model_er.svg",type:"image/svg+xml"},null,-1),Xo=e("h2",{id:"observation-matrix",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#observation-matrix"},[e("span",null,"Observation matrix")])],-1),Yo=e("a",{href:"#models"},"top",-1),Zo=e("a",{href:"https://rdoc.taxonworks.org/ObservationMatrix.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),$o=e("a",{href:"https://api.taxonworks.org/#/observation_matrices",target:"_blank",rel:"noopener noreferrer"},"api",-1),ea=e("object",{data:"/images/model/observation_matrices_model_er.svg",type:"image/svg+xml"},null,-1),ta=e("h2",{id:"observation-matrix-column-item",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#observation-matrix-column-item"},[e("span",null,"Observation matrix column item")])],-1),oa=e("a",{href:"#models"},"top",-1),aa=e("a",{href:"https://rdoc.taxonworks.org/ObservationMatrixColumnItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),la=e("object",{data:"/images/model/observation_matrix_column_items_model_er.svg",type:"image/svg+xml"},null,-1),ra=e("h2",{id:"observation-matrix-column",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#observation-matrix-column"},[e("span",null,"Observation matrix column")])],-1),sa=e("a",{href:"#models"},"top",-1),na=e("a",{href:"https://rdoc.taxonworks.org/ObservationMatrixColumn.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ia=e("object",{data:"/images/model/observation_matrix_columns_model_er.svg",type:"image/svg+xml"},null,-1),da=e("h2",{id:"observation-matrix-row-item",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#observation-matrix-row-item"},[e("span",null,"Observation matrix row item")])],-1),ca=e("a",{href:"#models"},"top",-1),ha=e("a",{href:"https://rdoc.taxonworks.org/ObservationMatrixRowItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),_a=e("object",{data:"/images/model/observation_matrix_row_items_model_er.svg",type:"image/svg+xml"},null,-1),ma=e("h2",{id:"observation-matrix-row",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#observation-matrix-row"},[e("span",null,"Observation matrix row")])],-1),pa=e("a",{href:"#models"},"top",-1),ga=e("a",{href:"https://rdoc.taxonworks.org/ObservationMatrixRow.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ua=e("object",{data:"/images/model/observation_matrix_rows_model_er.svg",type:"image/svg+xml"},null,-1),ba=e("h2",{id:"observation",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#observation"},[e("span",null,"Observation")])],-1),fa=e("a",{href:"#models"},"top",-1),va=e("a",{href:"https://rdoc.taxonworks.org/Observation.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),xa=e("a",{href:"https://api.taxonworks.org/#/observations",target:"_blank",rel:"noopener noreferrer"},"api",-1),ka=e("object",{data:"/images/model/observations_model_er.svg",type:"image/svg+xml"},null,-1),ya=e("h2",{id:"organization",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#organization"},[e("span",null,"Organization")])],-1),Da=e("a",{href:"#models"},"top",-1),wa=e("a",{href:"https://rdoc.taxonworks.org/Organization.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ja=e("object",{data:"/images/model/organizations_model_er.svg",type:"image/svg+xml"},null,-1),Ca=e("h2",{id:"origin-relationship",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#origin-relationship"},[e("span",null,"Origin relationship")])],-1),Oa=e("a",{href:"#models"},"top",-1),Ta=e("a",{href:"https://rdoc.taxonworks.org/OriginRelationship.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Sa=e("object",{data:"/images/model/origin_relationships_model_er.svg",type:"image/svg+xml"},null,-1),Ba=e("h2",{id:"otu-page-layout-section",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#otu-page-layout-section"},[e("span",null,"Otu page layout section")])],-1),Pa=e("a",{href:"#models"},"top",-1),Ga=e("a",{href:"https://rdoc.taxonworks.org/OtuPageLayoutSection.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ra=e("object",{data:"/images/model/otu_page_layout_sections_model_er.svg",type:"image/svg+xml"},null,-1),qa=e("h2",{id:"otu-page-layout",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#otu-page-layout"},[e("span",null,"Otu page layout")])],-1),Aa=e("a",{href:"#models"},"top",-1),La=e("a",{href:"https://rdoc.taxonworks.org/OtuPageLayout.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ia=e("object",{data:"/images/model/otu_page_layouts_model_er.svg",type:"image/svg+xml"},null,-1),Na=e("h2",{id:"otu",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#otu"},[e("span",null,"Otu")])],-1),za=e("a",{href:"#models"},"top",-1),Ma=e("a",{href:"https://rdoc.taxonworks.org/Otu.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ea=e("a",{href:"https://api.taxonworks.org/#/otus",target:"_blank",rel:"noopener noreferrer"},"api",-1),Va=e("object",{data:"/images/model/otus_model_er.svg",type:"image/svg+xml"},null,-1),Fa=e("h2",{id:"person",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#person"},[e("span",null,"Person")])],-1),Ja=e("a",{href:"#models"},"top",-1),Ka=e("a",{href:"https://rdoc.taxonworks.org/Person.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ua=e("a",{href:"https://api.taxonworks.org/#/people",target:"_blank",rel:"noopener noreferrer"},"api",-1),Ha=e("object",{data:"/images/model/people_model_er.svg",type:"image/svg+xml"},null,-1),Qa=e("h2",{id:"preparation-type",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#preparation-type"},[e("span",null,"Preparation type")])],-1),Wa=e("a",{href:"#models"},"top",-1),Xa=e("a",{href:"https://rdoc.taxonworks.org/PreparationType.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ya=e("object",{data:"/images/model/preparation_types_model_er.svg",type:"image/svg+xml"},null,-1),Za=e("h2",{id:"project-member",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#project-member"},[e("span",null,"Project member")])],-1),$a=e("a",{href:"#models"},"top",-1),el=e("a",{href:"https://rdoc.taxonworks.org/ProjectMember.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),tl=e("object",{data:"/images/model/project_members_model_er.svg",type:"image/svg+xml"},null,-1),ol=e("h2",{id:"project-source",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#project-source"},[e("span",null,"Project source")])],-1),al=e("a",{href:"#models"},"top",-1),ll=e("a",{href:"https://rdoc.taxonworks.org/ProjectSource.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),rl=e("object",{data:"/images/model/project_sources_model_er.svg",type:"image/svg+xml"},null,-1),sl=e("h2",{id:"protocol-relationship",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#protocol-relationship"},[e("span",null,"Protocol relationship")])],-1),nl=e("a",{href:"#models"},"top",-1),il=e("a",{href:"https://rdoc.taxonworks.org/ProtocolRelationship.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),dl=e("object",{data:"/images/model/protocol_relationships_model_er.svg",type:"image/svg+xml"},null,-1),cl=e("h2",{id:"protocol",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#protocol"},[e("span",null,"Protocol")])],-1),hl=e("a",{href:"#models"},"top",-1),_l=e("a",{href:"https://rdoc.taxonworks.org/Protocol.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ml=e("object",{data:"/images/model/protocols_model_er.svg",type:"image/svg+xml"},null,-1),pl=e("h2",{id:"ranged-lot-category",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#ranged-lot-category"},[e("span",null,"Ranged lot category")])],-1),gl=e("a",{href:"#models"},"top",-1),ul=e("a",{href:"https://rdoc.taxonworks.org/RangedLotCategory.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),bl=e("object",{data:"/images/model/ranged_lot_categories_model_er.svg",type:"image/svg+xml"},null,-1),fl=e("h2",{id:"repository",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#repository"},[e("span",null,"Repository")])],-1),vl=e("a",{href:"#models"},"top",-1),xl=e("a",{href:"https://rdoc.taxonworks.org/Repository.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),kl=e("object",{data:"/images/model/repositories_model_er.svg",type:"image/svg+xml"},null,-1),yl=e("h2",{id:"role",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#role"},[e("span",null,"Role")])],-1),Dl=e("a",{href:"#models"},"top",-1),wl=e("a",{href:"https://rdoc.taxonworks.org/Role.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),jl=e("object",{data:"/images/model/roles_model_er.svg",type:"image/svg+xml"},null,-1),Cl=e("h2",{id:"sequence-relationship",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sequence-relationship"},[e("span",null,"Sequence relationship")])],-1),Ol=e("a",{href:"#models"},"top",-1),Tl=e("a",{href:"https://rdoc.taxonworks.org/SequenceRelationship.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Sl=e("object",{data:"/images/model/sequence_relationships_model_er.svg",type:"image/svg+xml"},null,-1),Bl=e("h2",{id:"sequence",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sequence"},[e("span",null,"Sequence")])],-1),Pl=e("a",{href:"#models"},"top",-1),Gl=e("a",{href:"https://rdoc.taxonworks.org/Sequence.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Rl=e("object",{data:"/images/model/sequences_model_er.svg",type:"image/svg+xml"},null,-1),ql=e("h2",{id:"serial-chronology",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#serial-chronology"},[e("span",null,"Serial chronology")])],-1),Al=e("a",{href:"#models"},"top",-1),Ll=e("a",{href:"https://rdoc.taxonworks.org/SerialChronology.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Il=e("object",{data:"/images/model/serial_chronologies_model_er.svg",type:"image/svg+xml"},null,-1),Nl=e("h2",{id:"serial",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#serial"},[e("span",null,"Serial")])],-1),zl=e("a",{href:"#models"},"top",-1),Ml=e("a",{href:"https://rdoc.taxonworks.org/Serial.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),El=e("object",{data:"/images/model/serials_model_er.svg",type:"image/svg+xml"},null,-1),Vl=e("h2",{id:"sled-image",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sled-image"},[e("span",null,"Sled image")])],-1),Fl=e("a",{href:"#models"},"top",-1),Jl=e("a",{href:"https://rdoc.taxonworks.org/SledImage.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Kl=e("object",{data:"/images/model/sled_images_model_er.svg",type:"image/svg+xml"},null,-1),Ul=e("h2",{id:"source",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#source"},[e("span",null,"Source")])],-1),Hl=e("a",{href:"#models"},"top",-1),Ql=e("a",{href:"https://rdoc.taxonworks.org/Source.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Wl=e("a",{href:"https://api.taxonworks.org/#/sources",target:"_blank",rel:"noopener noreferrer"},"api",-1),Xl=e("object",{data:"/images/model/sources_model_er.svg",type:"image/svg+xml"},null,-1),Yl=e("h2",{id:"tagged-section-keyword",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#tagged-section-keyword"},[e("span",null,"Tagged section keyword")])],-1),Zl=e("a",{href:"#models"},"top",-1),$l=e("a",{href:"https://rdoc.taxonworks.org/TaggedSectionKeyword.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),er=e("object",{data:"/images/model/tagged_section_keywords_model_er.svg",type:"image/svg+xml"},null,-1),tr=e("h2",{id:"tag",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#tag"},[e("span",null,"Tag")])],-1),or=e("a",{href:"#models"},"top",-1),ar=e("a",{href:"https://rdoc.taxonworks.org/Tag.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),lr=e("object",{data:"/images/model/tags_model_er.svg",type:"image/svg+xml"},null,-1),rr=e("h2",{id:"taxon-determination",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#taxon-determination"},[e("span",null,"Taxon determination")])],-1),sr=e("a",{href:"#models"},"top",-1),nr=e("a",{href:"https://rdoc.taxonworks.org/TaxonDetermination.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ir=e("object",{data:"/images/model/taxon_determinations_model_er.svg",type:"image/svg+xml"},null,-1),dr=e("h2",{id:"taxon-name-classification",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#taxon-name-classification"},[e("span",null,"Taxon name classification")])],-1),cr=e("a",{href:"#models"},"top",-1),hr=e("a",{href:"https://rdoc.taxonworks.org/TaxonNameClassification.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),_r=e("a",{href:"https://api.taxonworks.org/#/taxon_name_classifications",target:"_blank",rel:"noopener noreferrer"},"api",-1),mr=e("object",{data:"/images/model/taxon_name_classifications_model_er.svg",type:"image/svg+xml"},null,-1),pr=e("h2",{id:"taxon-name-relationship",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#taxon-name-relationship"},[e("span",null,"Taxon name relationship")])],-1),gr=e("a",{href:"#models"},"top",-1),ur=e("a",{href:"https://rdoc.taxonworks.org/TaxonNameRelationship.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),br=e("a",{href:"https://api.taxonworks.org/#/taxon_name_relationships",target:"_blank",rel:"noopener noreferrer"},"api",-1),fr=e("object",{data:"/images/model/taxon_name_relationships_model_er.svg",type:"image/svg+xml"},null,-1),vr=e("h2",{id:"taxon-name",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#taxon-name"},[e("span",null,"Taxon name")])],-1),xr=e("a",{href:"#models"},"top",-1),kr=e("a",{href:"https://rdoc.taxonworks.org/TaxonName.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),yr=e("a",{href:"https://api.taxonworks.org/#/taxon_names",target:"_blank",rel:"noopener noreferrer"},"api",-1),Dr=e("object",{data:"/images/model/taxon_names_model_er.svg",type:"image/svg+xml"},null,-1),wr=e("h2",{id:"type-material",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#type-material"},[e("span",null,"Type material")])],-1),jr=e("a",{href:"#models"},"top",-1),Cr=e("a",{href:"https://rdoc.taxonworks.org/TypeMaterial.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Or=e("object",{data:"/images/model/type_materials_model_er.svg",type:"image/svg+xml"},null,-1);function Tr(Sr,Br){const o=s("RouteLink");return i(),n("div",null,[c,h,e("p",null,[t("Algorithmically generated ER diagrams. Node shapes: green octagons- the target model the ER perspective is drawn from; orange rounded rectangles- core models; light purple rectangles- supporting models; blue ovals- annotating models; purple diamonds- polymorphic models (matches to many other models). Node edges (arrow points to many side): solid arrows- 'has many'; dotted arrows- "),_,t(" 'has many' "),m,t(" one side model; dashed arrows: "),p,t(" 'has one'; dotted squared arrows: "),g,t(" 'has one', but "),u,t(" a corresponding dotted relationship. See also description in "),a(o,{to:"/develop/Data/#concepts"},{default:l(()=>[t("Overview")]),_:1}),t(". Click a node to navigate (not all are linked).")]),e("p",null,[a(o,{to:"/develop/Data/models.html#alternate-value"},{default:l(()=>[t("Alternate value")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#asserted-distribution"},{default:l(()=>[t("Asserted distribution")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#attribution"},{default:l(()=>[t("Attribution")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#biocuration-classification"},{default:l(()=>[t("Biocuration classification")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#biological-association"},{default:l(()=>[t("Biological association")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#biological-associations-biological-associations-graph"},{default:l(()=>[t("Biological associations biological associations graph")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#biological-associations-graph"},{default:l(()=>[t("Biological associations graph")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#biological-relationship-type"},{default:l(()=>[t("Biological relationship type")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#biological-relationship"},{default:l(()=>[t("Biological relationship")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#character-state"},{default:l(()=>[t("Character state")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#citation-topic"},{default:l(()=>[t("Citation topic")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#citation"},{default:l(()=>[t("Citation")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#collecting-event"},{default:l(()=>[t("Collecting event")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#collection-object-observation"},{default:l(()=>[t("Collection object observation")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#collection-object"},{default:l(()=>[t("Collection object")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#collection-profile"},{default:l(()=>[t("Collection profile")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#common-name"},{default:l(()=>[t("Common name")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#confidence"},{default:l(()=>[t("Confidence")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#container-item"},{default:l(()=>[t("Container item")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#container"},{default:l(()=>[t("Container")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#content"},{default:l(()=>[t("Content")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#controlled-vocabulary-term"},{default:l(()=>[t("Controlled vocabulary term")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#data-attribute"},{default:l(()=>[t("Data attribute")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#dataset-record-field"},{default:l(()=>[t("Dataset record field")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#dataset-record"},{default:l(()=>[t("Dataset record")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#depiction"},{default:l(()=>[t("Depiction")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#derived-collection-object"},{default:l(()=>[t("Derived collection object")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#descriptor"},{default:l(()=>[t("Descriptor")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#documentation"},{default:l(()=>[t("Documentation")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#document"},{default:l(()=>[t("Document")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#extract"},{default:l(()=>[t("Extract")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#gene-attribute"},{default:l(()=>[t("Gene attribute")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#geographic-area-type"},{default:l(()=>[t("Geographic area type")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#geographic-area"},{default:l(()=>[t("Geographic area")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#geographic-areas-geographic-item"},{default:l(()=>[t("Geographic areas geographic item")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#geographic-item"},{default:l(()=>[t("Geographic item")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#georeference"},{default:l(()=>[t("Georeference")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#identifier"},{default:l(()=>[t("Identifier")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#image"},{default:l(()=>[t("Image")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#import-dataset"},{default:l(()=>[t("Import dataset")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#label"},{default:l(()=>[t("Label")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#language"},{default:l(()=>[t("Language")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#loan-item"},{default:l(()=>[t("Loan item")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#loan"},{default:l(()=>[t("Loan")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#namespace"},{default:l(()=>[t("Namespace")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#note"},{default:l(()=>[t("Note")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#observation-matrix"},{default:l(()=>[t("Observation matrix")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#observation-matrix-column-item"},{default:l(()=>[t("Observation matrix column item")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#observation-matrix-column"},{default:l(()=>[t("Observation matrix column")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#observation-matrix-row-item"},{default:l(()=>[t("Observation matrix row item")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#observation-matrix-row"},{default:l(()=>[t("Observation matrix row")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#observation"},{default:l(()=>[t("Observation")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#organization"},{default:l(()=>[t("Organization")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#origin-relationship"},{default:l(()=>[t("Origin relationship")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#otu-page-layout-section"},{default:l(()=>[t("Otu page layout section")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#otu-page-layout"},{default:l(()=>[t("Otu page layout")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#otu"},{default:l(()=>[t("Otu")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#person"},{default:l(()=>[t("Person")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#preparation-type"},{default:l(()=>[t("Preparation type")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#project-member"},{default:l(()=>[t("Project member")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#project-source"},{default:l(()=>[t("Project source")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#protocol-relationship"},{default:l(()=>[t("Protocol relationship")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#protocol"},{default:l(()=>[t("Protocol")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#ranged-lot-category"},{default:l(()=>[t("Ranged lot category")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#repository"},{default:l(()=>[t("Repository")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#role"},{default:l(()=>[t("Role")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#sequence-relationship"},{default:l(()=>[t("Sequence relationship")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#sequence"},{default:l(()=>[t("Sequence")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#serial-chronology"},{default:l(()=>[t("Serial chronology")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#serial"},{default:l(()=>[t("Serial")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#sled-image"},{default:l(()=>[t("Sled image")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#source"},{default:l(()=>[t("Source")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#tagged-section-keyword"},{default:l(()=>[t("Tagged section keyword")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#tag"},{default:l(()=>[t("Tag")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#taxon-determination"},{default:l(()=>[t("Taxon determination")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#taxon-name-classification"},{default:l(()=>[t("Taxon name classification")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#taxon-name-relationship"},{default:l(()=>[t("Taxon name relationship")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#taxon-name"},{default:l(()=>[t("Taxon name")]),_:1}),t(", "),a(o,{to:"/develop/Data/models.html#type-material"},{default:l(()=>[t("Type material")]),_:1})]),b,e("p",null,[f,t(","),a(o,{to:"/develop/Data/tables.html#alternate-values"},{default:l(()=>[t("table")]),_:1}),t(","),v,x]),k,e("p",null,[y,t(","),a(o,{to:"/develop/Data/tables.html#asserted-distributions"},{default:l(()=>[t("table")]),_:1}),t(","),D,t(","),w,j]),C,e("p",null,[O,t(","),a(o,{to:"/develop/Data/tables.html#attributions"},{default:l(()=>[t("table")]),_:1}),t(","),T,S]),B,e("p",null,[P,t(","),a(o,{to:"/develop/Data/tables.html#biocuration-classifications"},{default:l(()=>[t("table")]),_:1}),t(","),G,R]),q,e("p",null,[A,t(","),a(o,{to:"/develop/Data/tables.html#biological-associations"},{default:l(()=>[t("table")]),_:1}),t(","),L,t(","),I,N]),z,e("p",null,[M,t(","),a(o,{to:"/develop/Data/tables.html#biological-associations-biological-associations-graphs"},{default:l(()=>[t("table")]),_:1}),t(","),E,V]),F,e("p",null,[J,t(","),a(o,{to:"/develop/Data/tables.html#biological-associations-graphs"},{default:l(()=>[t("table")]),_:1}),t(","),K,U]),H,e("p",null,[Q,t(","),a(o,{to:"/develop/Data/tables.html#biological-relationship-types"},{default:l(()=>[t("table")]),_:1}),t(","),W,X]),Y,e("p",null,[Z,t(","),a(o,{to:"/develop/Data/tables.html#biological-relationships"},{default:l(()=>[t("table")]),_:1}),t(","),$,ee]),te,e("p",null,[oe,t(","),a(o,{to:"/develop/Data/tables.html#character-states"},{default:l(()=>[t("table")]),_:1}),t(","),ae,le]),re,e("p",null,[se,t(","),a(o,{to:"/develop/Data/tables.html#citation-topics"},{default:l(()=>[t("table")]),_:1}),t(","),ne,ie]),de,e("p",null,[ce,t(","),a(o,{to:"/develop/Data/tables.html#citations"},{default:l(()=>[t("table")]),_:1}),t(","),he,t(","),_e,me]),pe,e("p",null,[ge,t(","),a(o,{to:"/develop/Data/tables.html#collecting-events"},{default:l(()=>[t("table")]),_:1}),t(","),ue,t(","),be,fe]),ve,e("p",null,[xe,t(","),a(o,{to:"/develop/Data/tables.html#collection-object-observations"},{default:l(()=>[t("table")]),_:1}),t(","),ke,ye]),De,e("p",null,[we,t(","),a(o,{to:"/develop/Data/tables.html#collection-objects"},{default:l(()=>[t("table")]),_:1}),t(","),je,t(","),Ce,Oe]),Te,e("p",null,[Se,t(","),a(o,{to:"/develop/Data/tables.html#collection-profiles"},{default:l(()=>[t("table")]),_:1}),t(","),Be,Pe]),Ge,e("p",null,[Re,t(","),a(o,{to:"/develop/Data/tables.html#common-names"},{default:l(()=>[t("table")]),_:1}),t(","),qe,Ae]),Le,e("p",null,[Ie,t(","),a(o,{to:"/develop/Data/tables.html#confidences"},{default:l(()=>[t("table")]),_:1}),t(","),Ne,ze]),Me,e("p",null,[Ee,t(","),a(o,{to:"/develop/Data/tables.html#container-items"},{default:l(()=>[t("table")]),_:1}),t(","),Ve,Fe]),Je,e("p",null,[Ke,t(","),a(o,{to:"/develop/Data/tables.html#containers"},{default:l(()=>[t("table")]),_:1}),t(","),Ue,He]),Qe,e("p",null,[We,t(","),a(o,{to:"/develop/Data/tables.html#contents"},{default:l(()=>[t("table")]),_:1}),t(","),Xe,t(","),Ye,Ze]),$e,e("p",null,[et,t(","),a(o,{to:"/develop/Data/tables.html#controlled-vocabulary-terms"},{default:l(()=>[t("table")]),_:1}),t(","),tt,ot]),at,e("p",null,[lt,t(","),a(o,{to:"/develop/Data/tables.html#data-attributes"},{default:l(()=>[t("table")]),_:1}),t(","),rt,t(","),st,nt]),it,e("p",null,[dt,t(","),a(o,{to:"/develop/Data/tables.html#dataset-record-fields"},{default:l(()=>[t("table")]),_:1}),t(","),ct,ht]),_t,e("p",null,[mt,t(","),a(o,{to:"/develop/Data/tables.html#dataset-records"},{default:l(()=>[t("table")]),_:1}),t(","),pt,gt]),ut,e("p",null,[bt,t(","),a(o,{to:"/develop/Data/tables.html#depictions"},{default:l(()=>[t("table")]),_:1}),t(","),ft,vt]),xt,e("p",null,[kt,t(","),a(o,{to:"/develop/Data/tables.html#derived-collection-objects"},{default:l(()=>[t("table")]),_:1}),t(","),yt,Dt]),wt,e("p",null,[jt,t(","),a(o,{to:"/develop/Data/tables.html#descriptors"},{default:l(()=>[t("table")]),_:1}),t(","),Ct,Ot]),Tt,e("p",null,[St,t(","),a(o,{to:"/develop/Data/tables.html#documentation"},{default:l(()=>[t("table")]),_:1}),t(","),Bt,Pt]),Gt,e("p",null,[Rt,t(","),a(o,{to:"/develop/Data/tables.html#documents"},{default:l(()=>[t("table")]),_:1}),t(","),qt,At]),Lt,e("p",null,[It,t(","),a(o,{to:"/develop/Data/tables.html#extracts"},{default:l(()=>[t("table")]),_:1}),t(","),Nt,zt]),Mt,e("p",null,[Et,t(","),a(o,{to:"/develop/Data/tables.html#gene-attributes"},{default:l(()=>[t("table")]),_:1}),t(","),Vt,Ft]),Jt,e("p",null,[Kt,t(","),a(o,{to:"/develop/Data/tables.html#geographic-area-types"},{default:l(()=>[t("table")]),_:1}),t(","),Ut,Ht]),Qt,e("p",null,[Wt,t(","),a(o,{to:"/develop/Data/tables.html#geographic-areas"},{default:l(()=>[t("table")]),_:1}),t(","),Xt,Yt]),Zt,e("p",null,[$t,t(","),a(o,{to:"/develop/Data/tables.html#geographic-areas-geographic-items"},{default:l(()=>[t("table")]),_:1}),t(","),eo,to]),oo,e("p",null,[ao,t(","),a(o,{to:"/develop/Data/tables.html#geographic-items"},{default:l(()=>[t("table")]),_:1}),t(","),lo,ro]),so,e("p",null,[no,t(","),a(o,{to:"/develop/Data/tables.html#georeferences"},{default:l(()=>[t("table")]),_:1}),t(","),io,co]),ho,e("p",null,[_o,t(","),a(o,{to:"/develop/Data/tables.html#identifiers"},{default:l(()=>[t("table")]),_:1}),t(","),mo,t(","),po,go]),uo,e("p",null,[bo,t(","),a(o,{to:"/develop/Data/tables.html#images"},{default:l(()=>[t("table")]),_:1}),t(","),fo,t(","),vo,xo]),ko,e("p",null,[yo,t(","),a(o,{to:"/develop/Data/tables.html#import-datasets"},{default:l(()=>[t("table")]),_:1}),t(","),Do,wo]),jo,e("p",null,[Co,t(","),a(o,{to:"/develop/Data/tables.html#labels"},{default:l(()=>[t("table")]),_:1}),t(","),Oo,To]),So,e("p",null,[Bo,t(","),a(o,{to:"/develop/Data/tables.html#languages"},{default:l(()=>[t("table")]),_:1}),t(","),Po,Go]),Ro,e("p",null,[qo,t(","),a(o,{to:"/develop/Data/tables.html#loan-items"},{default:l(()=>[t("table")]),_:1}),t(","),Ao,Lo]),Io,e("p",null,[No,t(","),a(o,{to:"/develop/Data/tables.html#loans"},{default:l(()=>[t("table")]),_:1}),t(","),zo,Mo]),Eo,e("p",null,[Vo,t(","),a(o,{to:"/develop/Data/tables.html#namespaces"},{default:l(()=>[t("table")]),_:1}),t(","),Fo,Jo]),Ko,e("p",null,[Uo,t(","),a(o,{to:"/develop/Data/tables.html#notes"},{default:l(()=>[t("table")]),_:1}),t(","),Ho,t(","),Qo,Wo]),Xo,e("p",null,[Yo,t(","),a(o,{to:"/develop/Data/tables.html#observation-matrices"},{default:l(()=>[t("table")]),_:1}),t(","),Zo,t(","),$o,ea]),ta,e("p",null,[oa,t(","),a(o,{to:"/develop/Data/tables.html#observation-matrix-column-items"},{default:l(()=>[t("table")]),_:1}),t(","),aa,la]),ra,e("p",null,[sa,t(","),a(o,{to:"/develop/Data/tables.html#observation-matrix-columns"},{default:l(()=>[t("table")]),_:1}),t(","),na,ia]),da,e("p",null,[ca,t(","),a(o,{to:"/develop/Data/tables.html#observation-matrix-row-items"},{default:l(()=>[t("table")]),_:1}),t(","),ha,_a]),ma,e("p",null,[pa,t(","),a(o,{to:"/develop/Data/tables.html#observation-matrix-rows"},{default:l(()=>[t("table")]),_:1}),t(","),ga,ua]),ba,e("p",null,[fa,t(","),a(o,{to:"/develop/Data/tables.html#observations"},{default:l(()=>[t("table")]),_:1}),t(","),va,t(","),xa,ka]),ya,e("p",null,[Da,t(","),a(o,{to:"/develop/Data/tables.html#organizations"},{default:l(()=>[t("table")]),_:1}),t(","),wa,ja]),Ca,e("p",null,[Oa,t(","),a(o,{to:"/develop/Data/tables.html#origin-relationships"},{default:l(()=>[t("table")]),_:1}),t(","),Ta,Sa]),Ba,e("p",null,[Pa,t(","),a(o,{to:"/develop/Data/tables.html#otu-page-layout-sections"},{default:l(()=>[t("table")]),_:1}),t(","),Ga,Ra]),qa,e("p",null,[Aa,t(","),a(o,{to:"/develop/Data/tables.html#otu-page-layouts"},{default:l(()=>[t("table")]),_:1}),t(","),La,Ia]),Na,e("p",null,[za,t(","),a(o,{to:"/develop/Data/tables.html#otus"},{default:l(()=>[t("table")]),_:1}),t(","),Ma,t(","),Ea,Va]),Fa,e("p",null,[Ja,t(","),a(o,{to:"/develop/Data/tables.html#people"},{default:l(()=>[t("table")]),_:1}),t(","),Ka,t(","),Ua,Ha]),Qa,e("p",null,[Wa,t(","),a(o,{to:"/develop/Data/tables.html#preparation-types"},{default:l(()=>[t("table")]),_:1}),t(","),Xa,Ya]),Za,e("p",null,[$a,t(","),a(o,{to:"/develop/Data/tables.html#project-members"},{default:l(()=>[t("table")]),_:1}),t(","),el,tl]),ol,e("p",null,[al,t(","),a(o,{to:"/develop/Data/tables.html#project-sources"},{default:l(()=>[t("table")]),_:1}),t(","),ll,rl]),sl,e("p",null,[nl,t(","),a(o,{to:"/develop/Data/tables.html#protocol-relationships"},{default:l(()=>[t("table")]),_:1}),t(","),il,dl]),cl,e("p",null,[hl,t(","),a(o,{to:"/develop/Data/tables.html#protocols"},{default:l(()=>[t("table")]),_:1}),t(","),_l,ml]),pl,e("p",null,[gl,t(","),a(o,{to:"/develop/Data/tables.html#ranged-lot-categories"},{default:l(()=>[t("table")]),_:1}),t(","),ul,bl]),fl,e("p",null,[vl,t(","),a(o,{to:"/develop/Data/tables.html#repositories"},{default:l(()=>[t("table")]),_:1}),t(","),xl,kl]),yl,e("p",null,[Dl,t(","),a(o,{to:"/develop/Data/tables.html#roles"},{default:l(()=>[t("table")]),_:1}),t(","),wl,jl]),Cl,e("p",null,[Ol,t(","),a(o,{to:"/develop/Data/tables.html#sequence-relationships"},{default:l(()=>[t("table")]),_:1}),t(","),Tl,Sl]),Bl,e("p",null,[Pl,t(","),a(o,{to:"/develop/Data/tables.html#sequences"},{default:l(()=>[t("table")]),_:1}),t(","),Gl,Rl]),ql,e("p",null,[Al,t(","),a(o,{to:"/develop/Data/tables.html#serial-chronologies"},{default:l(()=>[t("table")]),_:1}),t(","),Ll,Il]),Nl,e("p",null,[zl,t(","),a(o,{to:"/develop/Data/tables.html#serials"},{default:l(()=>[t("table")]),_:1}),t(","),Ml,El]),Vl,e("p",null,[Fl,t(","),a(o,{to:"/develop/Data/tables.html#sled-images"},{default:l(()=>[t("table")]),_:1}),t(","),Jl,Kl]),Ul,e("p",null,[Hl,t(","),a(o,{to:"/develop/Data/tables.html#sources"},{default:l(()=>[t("table")]),_:1}),t(","),Ql,t(","),Wl,Xl]),Yl,e("p",null,[Zl,t(","),a(o,{to:"/develop/Data/tables.html#tagged-section-keywords"},{default:l(()=>[t("table")]),_:1}),t(","),$l,er]),tr,e("p",null,[or,t(","),a(o,{to:"/develop/Data/tables.html#tags"},{default:l(()=>[t("table")]),_:1}),t(","),ar,lr]),rr,e("p",null,[sr,t(","),a(o,{to:"/develop/Data/tables.html#taxon-determinations"},{default:l(()=>[t("table")]),_:1}),t(","),nr,ir]),dr,e("p",null,[cr,t(","),a(o,{to:"/develop/Data/tables.html#taxon-name-classifications"},{default:l(()=>[t("table")]),_:1}),t(","),hr,t(","),_r,mr]),pr,e("p",null,[gr,t(","),a(o,{to:"/develop/Data/tables.html#taxon-name-relationships"},{default:l(()=>[t("table")]),_:1}),t(","),ur,t(","),br,fr]),vr,e("p",null,[xr,t(","),a(o,{to:"/develop/Data/tables.html#taxon-names"},{default:l(()=>[t("table")]),_:1}),t(","),kr,t(","),yr,Dr]),wr,e("p",null,[jr,t(","),a(o,{to:"/develop/Data/tables.html#type-materials"},{default:l(()=>[t("table")]),_:1}),t(","),Cr,Or])])}const Gr=r(d,[["render",Tr],["__file","models.html.vue"]]),Rr=JSON.parse('{"path":"/develop/Data/models.html","title":"Models","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Alternate value","slug":"alternate-value","link":"#alternate-value","children":[]},{"level":2,"title":"Asserted distribution","slug":"asserted-distribution","link":"#asserted-distribution","children":[]},{"level":2,"title":"Attribution","slug":"attribution","link":"#attribution","children":[]},{"level":2,"title":"Biocuration classification","slug":"biocuration-classification","link":"#biocuration-classification","children":[]},{"level":2,"title":"Biological association","slug":"biological-association","link":"#biological-association","children":[]},{"level":2,"title":"Biological associations biological associations graph","slug":"biological-associations-biological-associations-graph","link":"#biological-associations-biological-associations-graph","children":[]},{"level":2,"title":"Biological associations graph","slug":"biological-associations-graph","link":"#biological-associations-graph","children":[]},{"level":2,"title":"Biological relationship type","slug":"biological-relationship-type","link":"#biological-relationship-type","children":[]},{"level":2,"title":"Biological relationship","slug":"biological-relationship","link":"#biological-relationship","children":[]},{"level":2,"title":"Character state","slug":"character-state","link":"#character-state","children":[]},{"level":2,"title":"Citation topic","slug":"citation-topic","link":"#citation-topic","children":[]},{"level":2,"title":"Citation","slug":"citation","link":"#citation","children":[]},{"level":2,"title":"Collecting event","slug":"collecting-event","link":"#collecting-event","children":[]},{"level":2,"title":"Collection object observation","slug":"collection-object-observation","link":"#collection-object-observation","children":[]},{"level":2,"title":"Collection object","slug":"collection-object","link":"#collection-object","children":[]},{"level":2,"title":"Collection profile","slug":"collection-profile","link":"#collection-profile","children":[]},{"level":2,"title":"Common name","slug":"common-name","link":"#common-name","children":[]},{"level":2,"title":"Confidence","slug":"confidence","link":"#confidence","children":[]},{"level":2,"title":"Container item","slug":"container-item","link":"#container-item","children":[]},{"level":2,"title":"Container","slug":"container","link":"#container","children":[]},{"level":2,"title":"Content","slug":"content","link":"#content","children":[]},{"level":2,"title":"Controlled vocabulary term","slug":"controlled-vocabulary-term","link":"#controlled-vocabulary-term","children":[]},{"level":2,"title":"Data attribute","slug":"data-attribute","link":"#data-attribute","children":[]},{"level":2,"title":"Dataset record field","slug":"dataset-record-field","link":"#dataset-record-field","children":[]},{"level":2,"title":"Dataset record","slug":"dataset-record","link":"#dataset-record","children":[]},{"level":2,"title":"Depiction","slug":"depiction","link":"#depiction","children":[]},{"level":2,"title":"Derived collection object","slug":"derived-collection-object","link":"#derived-collection-object","children":[]},{"level":2,"title":"Descriptor","slug":"descriptor","link":"#descriptor","children":[]},{"level":2,"title":"Documentation","slug":"documentation","link":"#documentation","children":[]},{"level":2,"title":"Document","slug":"document","link":"#document","children":[]},{"level":2,"title":"Extract","slug":"extract","link":"#extract","children":[]},{"level":2,"title":"Gene attribute","slug":"gene-attribute","link":"#gene-attribute","children":[]},{"level":2,"title":"Geographic area type","slug":"geographic-area-type","link":"#geographic-area-type","children":[]},{"level":2,"title":"Geographic area","slug":"geographic-area","link":"#geographic-area","children":[]},{"level":2,"title":"Geographic areas geographic item","slug":"geographic-areas-geographic-item","link":"#geographic-areas-geographic-item","children":[]},{"level":2,"title":"Geographic item","slug":"geographic-item","link":"#geographic-item","children":[]},{"level":2,"title":"Georeference","slug":"georeference","link":"#georeference","children":[]},{"level":2,"title":"Identifier","slug":"identifier","link":"#identifier","children":[]},{"level":2,"title":"Image","slug":"image","link":"#image","children":[]},{"level":2,"title":"Import dataset","slug":"import-dataset","link":"#import-dataset","children":[]},{"level":2,"title":"Label","slug":"label","link":"#label","children":[]},{"level":2,"title":"Language","slug":"language","link":"#language","children":[]},{"level":2,"title":"Loan item","slug":"loan-item","link":"#loan-item","children":[]},{"level":2,"title":"Loan","slug":"loan","link":"#loan","children":[]},{"level":2,"title":"Namespace","slug":"namespace","link":"#namespace","children":[]},{"level":2,"title":"Note","slug":"note","link":"#note","children":[]},{"level":2,"title":"Observation matrix","slug":"observation-matrix","link":"#observation-matrix","children":[]},{"level":2,"title":"Observation matrix column item","slug":"observation-matrix-column-item","link":"#observation-matrix-column-item","children":[]},{"level":2,"title":"Observation matrix column","slug":"observation-matrix-column","link":"#observation-matrix-column","children":[]},{"level":2,"title":"Observation matrix row item","slug":"observation-matrix-row-item","link":"#observation-matrix-row-item","children":[]},{"level":2,"title":"Observation matrix row","slug":"observation-matrix-row","link":"#observation-matrix-row","children":[]},{"level":2,"title":"Observation","slug":"observation","link":"#observation","children":[]},{"level":2,"title":"Organization","slug":"organization","link":"#organization","children":[]},{"level":2,"title":"Origin relationship","slug":"origin-relationship","link":"#origin-relationship","children":[]},{"level":2,"title":"Otu page layout section","slug":"otu-page-layout-section","link":"#otu-page-layout-section","children":[]},{"level":2,"title":"Otu page layout","slug":"otu-page-layout","link":"#otu-page-layout","children":[]},{"level":2,"title":"Otu","slug":"otu","link":"#otu","children":[]},{"level":2,"title":"Person","slug":"person","link":"#person","children":[]},{"level":2,"title":"Preparation type","slug":"preparation-type","link":"#preparation-type","children":[]},{"level":2,"title":"Project member","slug":"project-member","link":"#project-member","children":[]},{"level":2,"title":"Project source","slug":"project-source","link":"#project-source","children":[]},{"level":2,"title":"Protocol relationship","slug":"protocol-relationship","link":"#protocol-relationship","children":[]},{"level":2,"title":"Protocol","slug":"protocol","link":"#protocol","children":[]},{"level":2,"title":"Ranged lot category","slug":"ranged-lot-category","link":"#ranged-lot-category","children":[]},{"level":2,"title":"Repository","slug":"repository","link":"#repository","children":[]},{"level":2,"title":"Role","slug":"role","link":"#role","children":[]},{"level":2,"title":"Sequence relationship","slug":"sequence-relationship","link":"#sequence-relationship","children":[]},{"level":2,"title":"Sequence","slug":"sequence","link":"#sequence","children":[]},{"level":2,"title":"Serial chronology","slug":"serial-chronology","link":"#serial-chronology","children":[]},{"level":2,"title":"Serial","slug":"serial","link":"#serial","children":[]},{"level":2,"title":"Sled image","slug":"sled-image","link":"#sled-image","children":[]},{"level":2,"title":"Source","slug":"source","link":"#source","children":[]},{"level":2,"title":"Tagged section keyword","slug":"tagged-section-keyword","link":"#tagged-section-keyword","children":[]},{"level":2,"title":"Tag","slug":"tag","link":"#tag","children":[]},{"level":2,"title":"Taxon determination","slug":"taxon-determination","link":"#taxon-determination","children":[]},{"level":2,"title":"Taxon name classification","slug":"taxon-name-classification","link":"#taxon-name-classification","children":[]},{"level":2,"title":"Taxon name relationship","slug":"taxon-name-relationship","link":"#taxon-name-relationship","children":[]},{"level":2,"title":"Taxon name","slug":"taxon-name","link":"#taxon-name","children":[]},{"level":2,"title":"Type material","slug":"type-material","link":"#type-material","children":[]}],"git":{"updatedTime":1644347967000,"contributors":[{"name":"mjy","email":"diapriid@gmail.com","commits":5}]},"filePathRelative":"develop/Data/models.md"}');export{Gr as comp,Rr as data};
diff --git a/assets/nomenclature.html-B4dF5ngD.js b/assets/nomenclature.html-B4dF5ngD.js
new file mode 100644
index 00000000..1e87a97f
--- /dev/null
+++ b/assets/nomenclature.html-B4dF5ngD.js
@@ -0,0 +1 @@
+import{_ as a,r as i,c as n,a as e,d as o,e as s,w as r,b as l,o as c}from"./app-Bwgh_xIT.js";const d={},h=e("h1",{id:"nomenclature",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#nomenclature"},[e("span",null,"Nomenclature")])],-1),u=e("p",null,[e("em",null,"Collectively gather all your relevant nomenclature information in one place in TW. Nomenclatural data are separated from but connected to the biological taxonomically-related information about such topics as host information, genetic/genomic or other biological associations data about a given biological taxon.")],-1),m=e("h2",{id:"nomenclature-quick-start",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#nomenclature-quick-start"},[e("span",null,"Nomenclature Quick Start")])],-1),p=l('A reminder, if you want to record information about biology (hosts, parasites, distribution, etc.) that doesn't belong in the nomenclature section, you will use the OTU radial icon
or OTU nav icon
to access and record those data from a nomenclatural context. Legend: Navigate from Browse Nomenclature
to the OTU
for a given taxon. Biologically related information about a taxon goes into the Operational Taxonomic Unit (OTU) taskLegend: In the Browse OTU
task, enter biologically-related information.Navigate to the Tasks
list Use the left side bar filter to Select
Nomenclature
The result is a list of task cards, each one related in some way to capturing, using, filtering, editing, and publishing nomenclatural data. Legend: Color-coded Nomenclature tasks
. Yellow tasks are more or less stable and useful, some changes anticipated but basic functionality will remain the same. If green, they likely won't change. Red indicates experimental status -- they work, but might not last or may radically change.Browse nomenclature
, New taxon name
, and New combination
are useful tasks to add, view, and modify existing classification. Browse nomenclature
provides a convenient way of navigating from one Taxon Name
to another. It also gives you an option to quickly jump to the Edit Task
.
Legend: Finding keyboard shortcuts associated with the Browse Nomenclature
user interfaceMac computers use ctrl
as triggering key, PCs use alt
. Example: From the New/Edit taxon name
task there are different extensive keyboard shortcut options:
ctrl+s Save taxon name changes ctrl+n Create a new taxon name ctrl+p Create a new taxon name with the same parent ctrl+d Create a child of this taxon name ctrl+l Clone this taxon name ctrl+e Go to comprehensive specimen digitization ctrl+p Create a new taxon name with the same parent ctrl+m Go to new type material ctrl+c Go to comprehensive specimen digitization ctrl+b Go to browse nomenclature ctrl+o Go to browse otus Additionally, on any Browse/Show
page you can:
ctrl+p - automatically pin and default that name to the pinboard ctrl+g - pop-up a quick navigation modal that lets you navigate to the defaulted records Extensive information exists about the TaxonWorks data model . Information is presented in text and searchable graphic formats.
Legend: Visualizing TaxonName
relationships in TWAll Taxon Names
are stored as uninomials (called Protonyms
) in TaxonWorks. A hierarchical nomenclature is entered by you and is customizable to provide the maximum level of flexibility for classifications. Three fields are required to create a Taxon Name
record in the database: Name
, Parent
, and Taxonomic rank
using the New taxon name
task.
Select the New taxon name
task. Enter the desired Name
Start typing to select the Parent
from a drop-down that will appear Select the Rank
Note that TW software smart logic guesses at the Rank
so please check. Click Create
to save
. The Parent
is any valid taxon of a rank higher than a new one. This section is the only section of the form which requires the use of the Save button (after Create
step). All other sections of the New Taxon name
form use autosave mode. After you click Create
the task name changes to Edit taxon name
. Three fields required to create a New taxon name
Once you have entered the required fields for New taxon name
and clicked Create
more fields become available for you to populate with data for adding Author
, Status
, Relationship
, Synonymy
, Type
, Original Combination
, Subsequent Combination
, Classification
, Gender
, and Etymlogy
. Please review the next screenshot for what this looks like in the UI. Below this screenshot after the Conceptual Approach section, you will find a brief description of each of these sections followed by detailed explanations and examples.
All fields in the New taxon name
task The highest rank taxon in a given hierarchy is Root
. This is a default Taxon and can not be modified, it is created when the project is first initiated. The first taxon attached to the Root requires selection of the Code of Nomenclature (ICZN, ICN, ICNP, ICTV). This selection is required to enforce validation rules specific to this particular Code of Nomenclature. All taxa below this taxon do not require selection of the Code, it will be inherited from the parent. The same database may contain taxa covered by different Codes of Nomenclature.
Illustrating the concept of Root
in TaxonWorks See this next screenshot to show how you can have other taxa at the Root
as needed, that reference a different Code of Nomenclature.
Showing several taxa that cross kingdoms and Codes of Nomenclature at the level of root To understand nomenclature in TaxonWorks it's important to understand that the basic idea is to accumulate/add new facts rather than update, change, or delete existing records. This is incredibly liberating in many ways, as the system will resolve the current status by inferring across the facts that you have added. As an example, rather than think "how do I change this name to invalid", think "how do I add the fact that so-and-so stated this name is invalid". The name was valid in the past, now we add a fact to indicate somebody more recently thinks it's invalid. The system will look at the years the facts were applied and then summarize the facts as we presently see them. This also lets the complete nomenclatural history, in all its gory detail, be recorded.
In the Author
section of Edit taxon name
you have three optional ways to pick from to record authorship. This information sets the original authorship of the name (as opposed to a subsequent citation).
Three ways to add original authorship via Source
, Verbatim
, or Person
The Source
option works if you have added the relevant Source
(e. g. publication) for this particular Taxon name
to TaxonWorks.
Add original authorship via Source
Click Source
Type just a few characters in the search box to find the correct source. A drop-down appears with your search results. Select the relevant publication. Source author
and Source year
of that publication will be used for the taxon name Author
.Note you can pin this source if you know you'll immediately be adding more names with the same Author
. Results for this example above would be Suricata Desmarest, 1804. Add original authorship via Verbatim
Click Verbatim
Enter the Verbatim author
and Verbatim year
directly. Add original authorship via Person
Click Person
Search
(enter only a few letters)Click to select the desired Person
This example shows Desmarest was found by Search and then selected. If you pick an incorrect Person
then Click on the trash can to remove and search to pick a different person. If you have more than one Author
, then pick the others here as well. If authorship is provided by you in more than one way it is prioritized and works as follows:
From the Verbatim Author
and Verbatim Year
fields From the Person
(TaxonNameAuthor) assigned as an author of the taxon name From the Source author
and source year
fields From the Person
assigned as an author of the Source (SourceAuthor) assigned as the original citation The preferred priority for your workflow is:
Assign an original citation (Source
in Author
section) that has People
assigned as authors to that Source
entry. Override the authorship in the Source
if needed by assigning one or more People
from that source as authors in the Person
section (for example when doing Smith in Jones & Smith
). Use Verbatim Author
and year
, if original source and People
roles are not provided. Keep in mind.
TaxonWorks is about creating the links between concepts (e.g. things like People
, Collection Objects
, Names
, OTUs
). How those concepts are visualized is a big can of worms. You can assign alternate values to People's names (e.g. abbreviations, alternate spellings) if you want to reflect how an author's name is spelled in different contexts.
The preferred mechanism to rendering parentheses around an author/year (indicating current placement is different than original) is to assign the original Genus
in the Original Combination
(see below). This will automatically render the name correctly. Use Original Combination
in Edit taxon name
to render parentheses If you do not know the original combination, or you wish to "force" the use of parentheses you must use the Verbatim Author
option. Place the parentheses around the author there: (Smith)
. The code will automatically include the year in rendering out the name as needed. The year a name becomes available defines its priority for nomenclatural purposes. It may differ from the year printed on the matter which is made available. The year of publication can be inferred from the Source
you linked to the name as an original combination, or explicitly noted in the Edit taxon name
task in the Author
> Verbatim
> Verbatim year
section.
From the Source hub
task
Type a few characters to find your Source
and select it. Click the Edit
(pencil) icon to edit the year
(month, day) as follows If you only have reference to a single value, it goes in year
(month, day) If you have reference to two year values, the actual year of publication
goes in year
, and the stated year of publication
goes in stated_year
. If you have month
or day
publication, they go in month
or day
. The value provided in Edit taxon name
> Author
> Verbatim
> verbatim_year
is always assumed to be the actual year of publication
. We assume that if two dates are known then the user will create and reference a Source
to record those values, i.e. there is no mechanism to provide and differentiate the two types of year directly with the name itself.
This section of Edit taxon name
relates to nomenclatural statuses, which are applicable to the taxon itself and does not require any knowledge of related taxa (e.g., Nomen nudum
, Non binomial
). Note that valid
is the default Status
so that you do not usually have to select Valid
(except in certain circumstances, see below).
In Edit taxon name
: Three ways to assign Status
to a taxon name Multiple Statuses could/can be assigned to the same taxon Most common status are listed directly in the Common
section for you to pick from. The Advanced
option allows you to search for a specific status. All available statuses are listed in Show all
section in a pop-up for you to scroll down and click to select. The statuses which are not applicable to a current taxon are greyed out. Using Show all
to select a Status
for a taxon Keep in mind.
All names by default are valid names, i.e. a valid
status should not be assigned to all the names in the database. Use of the Valid
status is reserved for special cases, for example when the taxon has a nomenclatural history of being treated as a synonym, and later was treated as a valid name again, in order to preserve a historical record of synonymy, and override it, a status valid
could be added to the taxon, the citation
on the status will indicate the source
where the validity of taxon was confirmed. Status Homonym
could be added to the taxon to indicate invalid
status in cases where the senior homonym
is not known, but this should be avoided -- the better way to record homonymy is to create a relationship
(see below). After you select a Common
status, e. g. Nomen nudum
Select Status
= Nomen nudum
option under Common
. Note your choice is automatically saved after you selected it. In this sense, a Relationship
references a nomenclatural status
(or more than one status) based on the connection to other taxon names.
These nomenclatural relationships are the statuses which require record of two Taxon Names. For example, Aus
is a synonym of Bus
. In this relationship we can specify a status for each of those two names:
Aus
is a Junior synonymBus
is a Senior synonymKeep in mind.
For a given invalid name, navigate to Edit taxon name
> Relationship
for that invalid name. In the Relationship
section, you will do two things: search for and select the related name, then you declare the relationship status picking from the options provided (as described above).
Here's a quick example of what it looks like when you have completed the above process. In this example, we started by using the Browse Nomenclature
task to search for and find the Nomenclatural record for the invalid name Thysanidae Peck, 1951
. Then, we clicked the to get to Edit taxon name
and go to the Relationship
section. We searched for the (valid) name Signiphoridae Howard, 1894 and picked it. We then selected one of the default statuses: Subjective synonym of
. Our choice was saved automatically.
What we see after we declared the Subjective synonym
status relationship Always start with the invalid name and add relationships that reference the valid (or senior) name Use Browse nomenclature
to find the invalid name, then Edit
the Relationship
for that name. Check the soft validation messages, they will let you know what may be improved or added. When adding a relationship, select one that is as specific as possible, subjective synonym
is better than just synonym
, primary homonym
is better than just homonym
. Note the Soft validation
help in the right margin Although each relationship could be read in either direction (Aus
is junior synonym of Bus
, Bus
is senior synonym of Aus
) only one way recording of the information is supported in TaxonWorks at the moment. The relationship should always start from invalid name . In our example, it is Aus
, so the editing should start on the Edit taxon name
Page for Aus
. Then, to build a new relationship
, search for the second (related) name, in our example it is Bus
, and then select the status
for this relationship, which is objective synonym
in this case. Once the relationship is created a citation
could be added to this relationship
to indicate the Source
, where this synonymy was first proposed. In cases of competing synonymy, where in one source Aus
is recorded as synonym of Bus
, and in the next publication it is a synonym of Cus
, both synonym relationships should be created in the database, if the citations are provided, the latest citation will be used to position the taxon in the classification. In cases where the name was reported as a synonym by mistake and was revalidated in a later publication, the relationship should not be deleted , a valid
status could be added to the taxon to overwrite the synonymy (see above) If we know that Aus aus
is a homonym of Bus aus
, and that Aus bus
is a replacement name, then we have to express two "facts", i.e. relationship between taxa, in this case 1) A. aus
is a synonym of B. aus
, 2) A. aus
is replaced by A. bus
. Both of those statemens are invalidating statements, so both of them start with the taxonomic page for A. aus
The basic steps:
Ensure all 3 protonyms exist in the database (aus
, aus
, bus
) Navigate to the invalid name Aus aus
Create the first relationship: Select the senior homonym name Bus aus
and a homonym relationship (be specific: primary homonym
or secondary homonym
) Create the second relationship: Select the valid name (replacement name) Aus bus
and add a synonym relationship (replaced by
or subjective synonym of
, the second option is true when the substitute name was selected from one of the junior synonyms) If we know that Aus aus Author2
is a misidentification of Aus aus Author1
, and that Aus bus
is a correct name, then we have to express two "facts", i.e. relationship between taxa, in this case 1) A. aus Author 2
is a misidentification of A. aus Author 1
, 2) A. aus
is invalid name for A. bus
. Both of those statements are invalidating statements, so both of them start with the taxonomic page for A. aus
The basic steps:
Ensure all 3 protonyms exist in the database (aus
, aus
, bus
). An additional protonym should be created in the database for 'Aus aus Author2' different from the correctly applied name 'Aus aus Author1' Navigate to the invalid name Aus aus Author2
Create the first relationship: Select the correctly applied name name Aus aus Author1
and a misapplication
relationship Create the second relationship: Select the valid name Aus bus
and add non specific invalid, linked to
relationship (do not use synonym
relationships, since misapplication
is not an avaliable name) Create the misspelling
relationship the same way as misapplication
.
The original combination is required to keep track of the taxon history, properly handle parentheses in the author string, and also to validate homonymy between taxa. There are two ways to enter the original combination in TaxonWorks.
To cite usage of the original combination cite the taxon name (Protonym) itself. This is because you are citing the fact that a) there is some name that b) came into existence in some first use, i.e. the definition of a Protonym.
To properly handle taxonomy, always enter taxon name
(basic information) in the original form (e.g. species was described as Aus albus Author
, now it is Ba alba (Author)
, the name of the taxon should stay as albus
, the form transition will be handled by the genus gender and the species part of speech . To build an original combination, first move the name of the taxon to the nomenclatural rank level, at which it was originally described. This is important, because a species could be originally described at the subspecies level. Select the original genus and if needed the original subgenus, assuming those taxa are already in the database. If they are not, open a separate browser tab and enter missing names in the classification. The rank of each name can be adjusted, the name can be dragged up or down. Hint: if the original name has an incorrect spelling which had to be corrected (e.g. mülleri
or albi-lineata
), or the original genus was misspelled, two protonyms have to be stored in the database. The first one with the correct spelling and the second one with the original spelling. The second protonym should be linked to the first one with the Incorrect original spelling
relationship. This relationship also overrrides the restriction on the Taxon Name
spelling.
You will sometimes discover you cannot create a taxon with a misspelling. The soft validation
software steps in. To enter a misspelled name in TaxonWorks:
Enter the correct spelling for the TaxonName Click Save
to save this Taxon Add misspelling
or incorrect original spelling
in Relationship
Then change the Taxon name
spelling to the misspelled form and Click Save
again. Click the button Set as current Data can be added directly in the Type section
of these tasks
New type specimen
or viaNew taxon name
Find the New type specimen
task via the New taxon name
task Type
section or directly from the tasks tab (filter by Nomenclature
on the left to quickly find the New type specimen
task).
See also the basic article parsing exercise for a walk through that addresses many of these issues in a more contextual framework.
Manage Biocuration Groups and the Classes associated with each of the groups Adding Groups
and Classes
can be done independently. You can then assign classes to a given group (e. g. class Female
or Male
get added to group Sex
). Classes do not have to be part of a group. Adding Groups and Classes work the same way. Classes, once added, can be associated with any given group created. Note the "plus" sign in the above screenshot which gives you a list of your classes you can add to that group.
Manage Biocuration Groups using the Manage Controlled Vocabulary
task To add a biocuration group
Select Biocuration Group
from the menu bar. Give your biocuration group
a Name
Next, write a definition
for this group
so that others may apply it correctly for your project. Note that definitions must be at least 20 characters. Then, select
a color to apply to this group
label for ease of use / finding in the user interface. If one exists, enter a URL here to a known standard term / ontology entry for this group concept. Example, for group
= Sex
there is a term in the Darwin Core Standard (DwC) (from Biodiversity Information Standards TDWG) for Sex
. You would get this URL http://rs.tdwg.org/dwc/terms/sex
from the DwC Terms List from tdwg.org and enter it in the URL field for this term. This ensures the data get mapped / associated with the intended concept on export. Lastly, click Create.
Manage Biocuration Classes using the Manage Controlled Vocabulary
task To add a biocuration class
Select Biocuration Class
from the menu bar. Give your biocuration class
a Name
. Next, write a definition
for this class
so that others may apply it correctly for your project. Note that definitions must be at least 20 characters. Then, select
a color to apply to this class
label for ease of use / finding in the user interface. If one exists, enter a URL here to a known standard term / ontology entry for this group concept. Example, for class
= Female
there is a standard term and definition in the Phenotype and Trait Ontology (PATO) . You can search PATO for female
and you will get this URL http://purl.obolibrary.org/obo/PATO_0000383
to enter in the URL field for this term. This ensures the data get mapped / associated with the intended concept on export. Lastly, click Create.
Now you can navigate to the New type specimen
task
Select the type
(e.g. holotype, paratype, etc.), this unlocks the Collection object
section of the form (see screen shot next). New Type Specimen
Task optionsIf the type designator is not the same as either the 1) the original citation on the species Protonym or 2) the original citation on the type material record then select the type designator if known. The designator will be inferred from the aforementioned citations otherwise. At present, if you have created a Collecting event
, find it by id
(the current search is a stub, and very crude), otherwise add verbatim data to the Buffered
sections. Buffered
data persist with the Collection object
, to be transcribed into Collecting events
, determinations
records, etc. some time downstream in the digitization process. Select the Biocuration classes
you want by clicking on a green button (remember green in TaxonWorks means create a record). This creates a record indicating that the collection object is that class. The button will turn red (remember red in TaxonWorks means destroy a record). Clicking a red button will remove that classification from the object. Select a repository
Click create
. Your record will be added to the right side of the form, you will see it highlighted by type in a light green. That means the form on the left can be used to edit that record. Click New type
to add another record (e.g. paratype). New Type Specimen
task showing Buffered
, Repository
, and Biocurations
sectionsSeveral categories for the family group name
exist:
original family group name form
;incorrect original family group name form
;subsequent family group name form
;misspelling
. All of them could be added to the database as individual Protonym linked to the correct family group name form (valid or synonym) with a single Taxon Name Relationship
, for example Aini is family group name original form of
Ainae.To simplify the work with family family group names, two sections were added at the botom of Edit task . For each name (valid or synonym), an Original form
could be added as well as multiple Subsequen name forms
(with citations to the works where those forms were introduced). The two section should simplify working with history of a family-group name, and keeping track of spelling changes and/or historical changes of the taxon rank. It is recommended to track changes of a family-group name at the lovest coordinate rank taxon. For example, if you have a family, subfamily, and tribe based on the same genus name, all history should be added to the protonym at the tribe level (regardless at what level the name was treated in the literature historically).
Incertae sedis implies a relationship between two protonyms. Any time something you want to express references two protonyms you must use a Taxon Name Relationship
to express this data.
For the name in question select the parent
under which it should be placed, then select the relationship
. Misidentifications are a tricky gray area. Remember that we only care about the nomenclatural consequences of the use of the names in question. Taxon Identifications are linkages of OTUs
to Collection objects
, this is the preferred mechanism for linking one or more identifications to a collection object.
A question from a user reflects the trickiness:
Imagine there is a genus Aus , with type species Aus bus . Then someone describes a new species Aus cus , which subsequent authors don't even consider to be in the same superfamily. So I cannot enter Aus twice because the second one is a misidentification but no one knows for sure what it is. This is just an original genus
. This is the same genus in both species. The genus cannot be misidentified. This is just a position of the species in classification, regardless where it was originally described or subsequently placed.
The proper way to handle this is to use a single Aus , which is placed in the correct family. In both species Aus is the Original genus
, in Aus bus , this is also a Parent taxon
. In case of Aus cus , if the current genus is not assigned, the superfamily is the parent taxon. An incertae sedis relationship should connect Aus cus and the superfamily.
Species misidentification/misapplication. Misapplication itself does not make an available name. But this a common practice to include misapplication in the list of historical usages of the taxon names, especially in the cases where a new name is proposed as a "replacement" for a previously misidentified species. Remember, that nomen novum cannot be proposed for misapplication, since it requires a previously available name, but invalid because of homonymy.
To record this in TaxonWorks, a new Protonym
for a misapplied name should be created in the database. This Protonym should be linked to two other Taxon Names
with two Taxon Name Relationships
. The first relationship is to an available name with the same spelling (it could be a valid name or a synonym). The relationship type
is Misapplication
. The second relationship Invalidating
relationship should link this TaxonName
to the correct name for this taxon. Remember, the Synonym
relationship is not applicable here, since it assumes that both names are available name, and in this example Misapplication
is not an available name. Follow the soft validation messages for other essential information for the Protonym
in the database.
An example: The name Aus aus Author 1, is a misapplication for Aus bus , and Aus aus Author 2 is a completely different species.
After the Protonym for the first name is created two relationships will be added in the database:
Aus aus Author 1 Misapplication, linked to Aus aus Author 2Aus aus Author 1 Invalid, linked to Aus bus Once the misapplication is created, an OTU
could be linked to the TaxonName
, which could be used, for example, for taxon determination
.
For this task, be sure you have put the source
in the Pinboard
and selected it as the default
, as this will save a lot of time during the process. Note also, that TW is smart, and as soon as you enter the name, it checks to see if it already has it (see example below).
UCD Specific Note: UCD@TW has been previously populated with the data from John Noyes’ UCD, so inside the UCD@TW database you will not have to create a root
for the taxonomic name tree (that is, there should always be a parent taxon
). First, fill out the name of the highest-level taxon that you are creating, and indicate its parent taxon. For example, if you are creating a new genus with 2 new species, first create the genus, and then create the two new species. If one of the two new species is type-species for the genus, you can come back to the genus name and add the type-species later.
To manually create a new taxon name
(e.g. species / genus / family):
Select the New Taxon Name
card from the Hub
. Finding the New Taxon Name
task card In the New Taxon Name form
add the new name
and select the parent
. Entering a string in the Parent
field gives you a list of possible matching names to pick from. The new Name
field works similarly to help you avoid adding the same name twice (think about collaborations). Partial view of the New Taxon Name
task Adding new name
and selecting the parent
in New Taxon Name
task Based on the rank of the parent, TW will then ask you to select the precise taxonomic rank of the new name
(see below). If everything is correct, hit Create
. Once you do this, the rest of the fields related to a new name will appear (see below). Check rank
of name to be added is correct and click create
The entire New Taxon Name
form options now appear Now you provide the Source
(publication) and authors
. If you have pinned the source, the pinboard
icon will be blue and you can click it to automatically fill in the source details. Then choose Person
, and enter enough letters to bring up each author (they should be in the database if they were entered with the source). If the authors of the Source are the same as the authors of the new name, you can click the button to the right Clone from source
. If multiple persons pop up that appear to be the same (for example A. Dal Molin
and Ana Dal Molin
), you can use the Uniquify People task
to resolve and merge them (see Scenario: Resolving redundant person name strings, and matching author names with and without diacritical marks). If an author name is not found, you can enter it and add it by clicking the green Add New
button. This will add the author to the names table. In most cases, for new taxa , you can skip over the Status
and Relationship
fields.
However, if the taxon is a fossil, you should check Fossil
in the Status
field. The name will now appear with a little cross symbol to the left. There are special rules in ICZN and TW for fossil taxa. Notes for Status
and Relationship
fields.
To pick a Status
for a name, you note Common
ones are listed by default for you to pick from.
Pick from the Common
list OR Click Advanced
to search for a Status
not in the Common
list and pick it OR Click Show all
to get a scrollable list of all Status
options possible for the given code (e.g. ICN vs ICZN options will differ) to pick from. To declare a Relationship
First go to the Edit Taxon Name
record with the lesser status (e.g. the Synonym
name) From there, in the Relationship
field, search for the name with the higher status (e.g. accepted or valid name). Select the desired name You then get to select the Status
of the Relationship
for the two names. The result always in TaxonWorks is that you read the result as the lesser status name has Relationship
(what ever you selected) to the higher status name. (Not in the other direction). The Status
and Relationship
fields in Add/Edit new taxon name
task The scrollable Status
list resulting when you click Show All
The Type
form is next, which opens up a new form to capture details on the type. We prefer to complete the rest of the New Taxon Name
form first, and then do the Type
.
For new species, the Original Combination
will be the same as used in the paper, so Set as Current
.
Finally you can specify the gender and form of the new name . For species-level names there are four possibilities:
Adjective
. Most species epithets are probably treated as adjectives, for example, Signiphora flavella meaning a yellow species. These will change their ending if moved to a genus with a different gender. Names with the suffix “-ensis” (usually referring to a place), change the ending only if put in combination with a genus name that is neuter, in which case it becomes “-ense”.Noun in Apposition
. These don’t change gender when transferred to other genera with a different gender. An example might be a name like Aphelinus mali , named after the common host, the woolly apple aphid. An arbitrary combination of letters is treated as a noun.Noun in genitive case
. These are commonly patronyms, ending in “-i” for males and “-ae” for females.Participle
. A participle is an adjectival form of a verb. These are treated as adjectives, and they must agree in gender with the genus name.There is a text field to capture the Etymology
, in most cases you can simply paste this text from the publication.
Be sure to Save
all the information (green Save
button at upper right) before moving to the Type
screen. (UCD prefers to enter Type
information last, after everything else on this page has been saved).
In most cases, the Quick type
screen will provide all the details you need to enter information on the type, and this is what we show below. However, if you have other information to add for the type, such as Lat/Long data, you will need to use the Comprehensive
form.
In Edit Taxon Name
task add type
information using Quick
or Comprehensive
options The Quick
New Type Specimen
form The Comprehensive
form to add many type specimen details First, pick the nature of the type
(for most new species this will be a holotype), provide the source
(click blue pin
button if source is the default
), and the page number
(s) on which the type is designated. The rest of the information on the type is filled in with the screen below.
In most cases, the type will be a new specimen, not already in TW as an existing Collection Object
. If so, click New
. Paste the label data for the type into Buffered Collecting
event. This is a verbatim text field. In most cases, you can ignore Buffered determinations
, and Buffered other labels
. Total is number of specimens (one for a holotype). Designate the preparation type
(pin, slide-mount, there are several choices). The Repository
is the institution where the type is deposited. Hopefully the repository will be in the TW table, otherwise you may need to create it using the Repositories card
in the Data portfolio. Collection Event
refers to a specimen already in the TW database, which in most cases will not be the case if you are curating a new species description.In Biocurations
, indicate whether the type is an adult or immature, and a male or female. Adding more Type
information Finally, you enter the Identifier
for the type, which consists of two parts. Note that this may be different from the repository (a single institution may have several collections, each with a different “namespace”). Think of the namespace
as the part of a specimen ID number that does not change for each specimen, for example, TAMU
in TAMU x01234567
. If the namespace is not in the database, you may need to create it, but since these are shared across projects, there is a good chance it will be there. (See the Glossary for more details) Click to open the Radial Annotator
. Select the Identifiers
option. For Identifier group, select Local
. Next Search for the Namespace
of the collection in which the type is deposited. Once you have selected the namespace, paste in the type or specimen number (only) in the Identifier
field. Click the green Create
button. Open the Radial Annotator to add a specimen Identifier
in TaxonWorks Adding the specimen Identifier
information If you wish to add paratypes
(optional), you essentially follow the same process for each one.
For many contemporary taxa, there may also be a ZooBank number
associated with the species. The correct way to enter this is to:
Scroll to the top of the Edit Type Specimen
page (or Edit taxon name
page) and click the Radial Annotator
to the right of the blue species name. In this case, the Identifier
will be Global
. Pick Lsid
, and enter the ZooBank accession number
in the Identifier
box. Note that some publications will provide the link to ZooBank which is not accepted by TW, but not the actual Lsid. In this case, navigate to ZooBank to get the valid Lsid, which will have the following format: urn:lsid:zoobank.org:act:5EB72879-1E9C-4A89-BCD8-FF37534B7172
If the paper does not list an Lsid for the new species, it might be worth a try to find it on the Zoobank.org web site.
Be sure to click the green Create
button at the bottom of the screen before leaving! You show now add any additional information about the new species (or genus) in the publication following the process described next.
If you are creating a new genus-level
or family-level
name, the process is similar, but in many ways more simple because the type will be a species name or a genus name, respectively. If the type-species or type-genus name is also new, probably the easiest path would be to create the family-level or genus-level name first, then create the name of the type-species or type-genus, and then return to the new genus-level or family-level name and indicate the type. If you enter an existing name in the New Taxon Name
task and select it (assuming it is found), TW will take you to the Edit Taxon Name
screen where you can enter the type information.
After you click Create
and Save
you should be returned to the Browse Nomenclature
page:
[INSERT SCREENSHOT HERE]
If you have entered all the information correctly, it should be shown here. Note that the Validation
form can serve as a checklist. In this case, we have neglected to enter several items, indicated here. To fix these, the easiest way is hit the Navigate Radial
button (3 at upper right) and from here choose Edit
. We think the easiest way to proceed from here is to hit the Browse OTUs
button (1 at top of screen). This takes you to the summary form for the OTU that you have just created. Note that there is a similar icon on the Browse OTUs page, which will take you back to Browse Nomenclature
page. This is an easy way to move back and forth between these two important screens.
For many older species group names, there will be no information on the type in TW. If you wish to add this information, you will want to have the original description handy, and pin it to the Pinboard
. The easiest way to proceed is to use the New type specimen task
. You can then follow the steps above for designating a type for a new species.
HINT: The New type specimen task
is also used to add or modify information on types already in the system.
Find the junior synonym
name using the Browse Nomenclature
task. Click the Edit
icon to navigate to the Edit taxon name
page. Enter the senior synonym
in the Relationship
box. A list of candidate names will come up. Select the correct one and Set to Parent
. A list of choices for the synonym relationship will include Subjective synonym
, Objective synonym
, subsequent Misspelling
, and Homonym of
. Note that you must also tag
this nomenclatural act (new synonymy) to a citation and page number. Click the Radial Annotator
icon to the right in the Relationship box
, and choose Citations
. Enter the Source
(use the blue pin key!) and page number
(s). If this is the first time the synonymy has been proposed, check the Is Original
box. Problem: Eremidium had five subgenera that became synonyms. Current state of modified data: Eremidium (Eremidium) has almost all citations, 4 synonyms and 22 species whereas Eremidium has 28 species (the species of the synonyms were moved under the genus). What would be the easiest way to end up with Eremidium without subgenus and all the 50 species?
The method is to delete the genus and elevate subgenus to the genus level using the following steps. In this way you will preserve most of the data.
Rename the genus to something recognizable, e.g. "Eremidiumdelete" Go to the subgenus and change parent and rank to "Eremidium" Synonymize all subgenera to "Eremidium" (previous subgenus) Apply all soft validation fixes Follow the procedure to delete the duplicate e.g. "Eremidiumdelelete". If species remain under Eremidiumdelete, make Eremidiumdelete genus a syn of Eremidium and transfer all the species as suggested. Then delete synonym relationship. Now the children of Eremidiumdelete need to run the soft validation fix to change the parent. If the junior synonym is a genus name, you must then decide if you want to transfer some or all of the species to the new parent.
Once you have made the synonymy, TW will present a table called Manage Synonyms
. This shows the current parent, and by default, the new parent. You can change the latter to cover cases in which a genus is being split up and the species are being moved to different genera. You can select species individually, or select All of them. At the bottom of the screen click the green Move
button. TW will ask you if you are sure you want to do this! HINT a la UCD@TW: It is the consenus of UCD@TW curators that if a genus is synonymized under another genus, and the author(s) of the paper do not explicitly treat generic placement of the species formerly contained in it, that all species are considered to belong to the senior synonym, by default.
To do this, find the junior synonym and move to the Edit taxon name
page as above. Scroll down to Status
and click the Show All
button to the right. This brings up a list of all possibilities. Choose Valid
(nested under Available), and then be sure to enter the Source citation
and pagination as above, but this time use the Radial annotator
in the right lower corner of the Status
box. HINT: Note well, after a name has been removed from synonymy using the Valid Status
, if that name is moved into synonymy again, first complete the steps to create the new synonymy , then delete the Valid
status. This last step is required to show the name in its new, synonymized state.
In an older version of TW, your strategy depended upon whether the combination is really new (that is, the species has previously been placed in that genus), or whether the combination had been used before. Scenarios 1 and 2 below cover those cases, respectively. Both procedures still work, but as of November 2021, there is new functionality on the Edit Taxon Name
page that allows you to handle either case. This is shown as option 3 below. Option 3 is probably the easiest, most preferred way to handle all new combinations now.
For New Combinations.
Open the New Combination
task, and type in the new combination. TW will bring up a list of candidate genera and candidate species. If you enter a trinomial (for assigning to a subgenus, TW will show 3 sets of names. Pick the correct genus name
and species name
Click the pinboard
icon to paste in the citation
, add the page number
, and hit Create
. Once you have created the new combination, be sure to click the green button
to move the species to the new genus. (The only time you would not want to move the species to this genus is if you were entering a historical combination, and the species is not currently classified in that genus). It’s as simple as that! Combinations used before.
Navigate to the Edit Taxon name
page for the species. Change the parent to the current genus (the revived combination
). Then move to the Radial annotator
to the right of the species name shown in blue at the top right of the screen. Choose citation
and enter the source
and page number
for the paper in which the former combination was revived. Option 3 (either use case above)
Navigate to the Edit Taxon Name
page for the species in its existing combination. Change the parent
to the genus
in which it has now been placed. Scroll down to the Subsequent combination
box. Click Set as current
, or drag down the old combination to the species line and enter the genus for the new combination on the genus line. Enter the source
and page number
of the paper in which the transfer was published and click Create
. The new combination
will be added to the chronological list at the bottom of the box, and it should show in the historical list when you return to the name in Browse Nomenclature
.
If the gender of species is incorrect following the new combination, you may need to change the Gender and form of the species name, and/or the gender of the genus (on the Edit taxon name
forms for the species name and genus respectively). This correction can also be made using Click to edit verbatim
(use sparingly).
If someone has published a new family-level placement for a genus, recording this is a two step process.
Navigate to the Edit taxon name
form for the genus. First, change the Parent
at the top of the Edit taxon name
form to the new family-level taxon
. If the family name has not been used at this hierarchical level before, you many need to create the protonym
for it first. Second, you must record the source
of this change. Scroll to the bottom of the Edit taxon name
screen and find the Classification
box. Search for the new family-level taxon and Set to Parent
. In the Radial annotator
that now appears, choose Citation
and enter the source
and page number
where the revised placement was published. If you are moving a subfamily, tribe or subtribe to a new family, the process is the same, but you would work from the Edit taxon name
screen for the appropriate family-level taxon.
To move a species to a different genus or subgenus, use the New Combination task Scenario . If you are moving a subfamily, tribe or subtribe to a different family level taxon, but the categorical level of the taxon you are moving does not change, follow the same procedure.
However, if you are changing the categorical level of a family-group name
, the process is more complicated, and you will need to refer to Scenario: Changing rank of a family-level taxon .
To designate a name as a _nomen nudum_
, _nomen dubium_
or as unavailable
, navigate to the Status field
in the Edit Taxon Name
form. The default for this field is valid. Four common choices are shown: Unavailable
, Nomen Nudum
, Nomen Dubium
, and Fossil
. Click the All
button here brings up a comprehensive list of other possibilities. For unavailable names you should probably look at the entire list and designate the reason the name is not available. Be sure to enter the source
and page number
for the paper that published this information. The most common scenario will be that someone has discovered a junior homonym and provided a replacement name. Here are the steps you would follow. First be sure the source
is the default
in your pinboard
.
First create the replacement name using the New Taxon Name task
, as described above, entering all information on the authors, citation, etc. Then move to the junior homonym (Browse Nomenclature
, click the green Edit
button at top right corner). In the Relationships
field, enter the senior homonym
. You will be given a list of choices, choose Homonym of
. Now designate the replacement name. In the Relationships
field, enter the replacement name
. HINT: Replaced By
does not appear in the short list of choices, so either search for it (easiest) or find it in the table of All choices
. Enter the citation
and page number
where the replacement name
was published. Often when you enter a person's name string in a search field, such as for authors of a source or taxon, multiple entries will pop up that appear to be the same person, such as A. Dal Molin
and Ana Dal Molin
. The Uniquify People task
provides tools to resolve and merge these.
Find one instance of the person in the Select Person
field, and Load another instance (probably with different abbreviations of names) in the Match People
field. The task will show you information about each person, such as representative publications. If you are sure that they are the same people, you can merge them by clicking the Merge People
button. Diacritical marks (e.g. umlauts, tildas) on author names pose special problems, as the search engines may not find them. For example, if the author name is Ferrière and you enter Ferriere (without the diacritical mark), the search engine will not find it. The best way to resolve this is to treat Ferriere as an alternate spelling
of the name Fèrriere. To accomplish this:
Go to the People data card
, and pull up the name. In the Radial annotator
at the top of the screen, choose Alternate Values
Then click the Alternate Spelling
tab. Select whether it is the first or last name, enter the alternate spelling, and click Create
. Once this is done, the search engine will find the person using either spelling of the name. First, you need to create
the misspelled name using the New Taxon Name task
. Do not give it an author. Scroll down to the Relationship
field Search for the correctly spelled name Set the correctly spelled name as the Parent
, and Choose the Misspelling Of
button. Enter the citation
(source) for the misspelled name
and the page number
in the Radial Annotator
on the right of the Relationship
field. This is a multi-step process. You may need to raise or lower the rank of a family-level taxon. The process is the same. Here's an example: let’s assume that we wish to raise the categorical level of the taxon Coccophaginae to family level, Coccophagidae. Here are the steps to follow.
Check to see if Coccophagidae has been used at the family level before (use Browse Nomenclature
). If it has, you can skip step 2 below, because the taxon name Coccophagidae already exists in the system.
If the taxon at the family-level (Coccophagidae here) does not exist, navigate to the taxon name Coccophaginae (Browse Nomenclature
) and move to the Edit Taxon Name screen
to create the name Coccophagidae.
The best way to do this is to Clone
the subfamily level name (green button in upper right), as this will retain the author and date, type genus, and other historical information. Select all the boxes
to retain all historical information and type CLONE
in the box. This will active the green Clone
button. Note that you are creating a taxon name
here , not an OTU, which is a separate issue.You are now on the Edit taxon name
page for the cloned name. Change the family ending suffix to “idae”, or Coccophagidae. Now change the parent. In this case, it will now be Chalcidoidea. Then Show all ranks
, and pick Family
. To record who made the change in categorical level: Scroll down to the Classification field
Click Set to Parent
(which will pick up Chalcidoidea from above), if the current classification is correct. Otherwise, type in the correct parent. Below the field will be two choices, Incertae Sedis
and Classified As
. Pick Source Classified As
. Enter the source
and page number
for the publication in which the change was made (in this case, elevation of Coccophaginae to Coccophagidae). Now you need to make the appropriate changes to the nominate subfamily taxon, the subfamily Coccophaginae in this example. Navigate
to the Edit Taxon Name
form for Coccophaginae.Change the parent
here to the new family-level name, in this case, Coccophagidae. Next, scroll down to the Relationships field. Enter the new family-level name
(Coccophagidae), and show all possible choices
(blue box to right). Choose Family Group Name, Original Form Of
from the menu of choices (it is below Usage
which is below Unavailable or Invalid, linked to
). Enter the source
and page number
, as always. At this point, a Manage Synonymy
screen will appear. This provides a dashboard for assigning the classification of all taxa subordinate to the family name (children, in other words).
Below the Manage Synonymy
screen you will find the Classification
screen.
Type in new Parent
(Coccophagidae in this example), and Choose Source Classified As
. Enter the citation
and page number
for the appropriate publication. Example: to elevate a subgenus to genus level:
First Navigate
to the name of the subgenus and click on the Edit taxon name
tool. Change the parent
as appropriate (family, subfamily, tribe etc.) and Change the rank
to genus. Next, how to record the citation? Note well, classification relationships should be used only above the genus level.
For making any changes in rank at the genus level and below use the New Combination task
: (explained in the New Combination Scenario
). There is still a 2-part process required at the moment.
Create the combination (using the New Combination
task), e.g. Camptoptera (Eofoersteria), and add the citation
for same there. Update the classification
by changing the parent
for the "now" subgenus. You will be required to manually select the rank
, (e.g. subgenus) One should be aware that UCD@NHM did not use subgeneric names, they were treated as synonyms of the parent genus. However, if species names were originally described in a subgenus, the original combination was recorded and will show in UCD@TW as a combination, as in the following example:
INSERT Screenshot
If you are working with a genus in which a subgeneric classification has been used, you have the following options:
You can create all of the subgeneric names, or find them and treat them as valid children of the appropriate genus. Nominate subgeneric names can be created by cloning the genus name and changing rank (see examples for subfamilies above, section 4.14). Whether or not you want to take the time to do this is up to you and your colleagues, but the tools are there in UCD@TW and in TaxonWorks generally.
You can continue to treat the subgenera as junior synonyms of the parent genus. However, if you curate a paper in which a species is originally described in a subgenus, you should be sure to enter both the Genus
and Subgenus
names in the Original Combination
and Rank
section of Edit Taxon Name
.
If you want to record historic subgeneric placement, use the New Combination task
.
These are used in many genera of chalcidoids as informal grouping of species without nomenclatural rank or status. UCD@TW provides the tools to treat these formally (as superspecies which is what the ICZN recommends) but it will not display them as such in Browse Nomenclature
. However, the consensus in the UCD project seems to be that it is preferable to leave species groups as informal groupings without nomenclatural baggage. How then to indicate or record assignment to species groups? There are several options, each of which has strong and weak points. It is a "policy decision". You will have to decide which option works best for your group.
One.
Add the species group designation
to the OTU name
field using the edit OTU
function. The OTU can remain linked to the original taxonomic name. It will display as follows, every time the OTU name is displayed: INSERT screenshot
Two.
You will need to use a data attribute with the Predicate name species group
and add the predicate as a default option to the OTU display.
First, create a new Predicate
using the Manage Controlled Vocabulary task
. Provide a definition
and choose a color
. Next, go to Project
(upper right corner of any screen) Choose Edit Preferences
under Edit
(upper left corner of screen) Select OTU
, scroll down toSpecies Group
and select it. Now the Predicate
is created and will be available for any OTU
and can be designated where needed.
Second, Browse
to a particular OTU and choose Data Attributes
in the Radial annotator
. Type species group
in the Select a Predicate
box, the name
of the species group in the Value
box, and click the green Create
button. If you want to associate this placement with a literature citation, enter it using the citations
button to the right of the species group name
at bottom of the screen. Once you have completed Step One above, the Predicate
will be available for any OTU
, you can designate them using Step Two.
Three.
Create a Tag
for each species group in Manage Controlled Vocabulary
, Apply the tag to the OTU using the Radial annotator
. This will allow you to pull up all OTUs assigned to a particular species group in the Radial annotator
. Note well, however, the downside is that the tags will appear in the list for everyone in the project. Four.
Create a matrix of OTUs for each species group. Again, using the UCD@NHM Project as an example, they did not formally recognize taxonomic levels between genera and subfamilies. Names of tribes and subtribes were treated as junior synonyms of their respective families. However, tribal and subtribal classifications are currently used in many families of chalcidoids. If you wish to incorporate these into classifications in UCD@TW, steps to follow are describe below. First, you must determine if the tribal or subtribal form of the name is in UCD@TW, treated as a synonym of the subfamily. See the entire scenario next.
One.
To determine if the tribal or subtribal form of the name is in UCD@TW and treated as a synonym of the subfamily, go to Browse Nomenclature
, search
for the name, for example, Coccophagini
. Be sure that you do not have the redirect to valid name box checked! If you get a result showing the tribe (or subtribe) name in a black box to the right of the subfamily name (see below), the tribal form is in TW treated as a synonym of the subfamily. In most cases, if the tribe or subtribe name has been used in the literature, it will show up as a synonym of the nominate subfamily. If it does not, you will need to create it, so skip to section Five below.
Navigate to the name with the tribal name at right (not to the valid form of the subfamily name, which may come up without the tribe name in the black box). It will be shown as an invalid synonym of the subfamily. Click the green Edit
icon to move to the Edit Taxon Name
form. Show all ranks
in the Basic Information
form and pick tribe
.Then change the suffix from -inae
to -ini
and pick the appropriate parent
. Two.
Scroll down to Status
, Show All
, and select Valid
. Provide the citation
and page number
using the Radial annotator
to the right. Three.
If you wish to provide a citation for this usage of the name, scroll down to Classification
, choose Set to Parent
(in this case it would be Coccophagini
) Choose Source Classified As
. Four.
One more (obsure) task remains. Using the Navigate Radial icon
to the right of the tribal name at the top of the page, choose Show
Then choose Edit
in the menu bar at the top of the next screen. This takes you to an older version of the Edit Taxon Name
form. If a name appears in the Verbatim Name
field at the bottom of the screen (like Coccophaginae ),
deleteit and click the green
Update Taxon Name` button. This removes an artifact created when tribal or subtribal names were imported as synonyms from TW@NHM. Continue from this point only if the tribal or subtribal form of the name did not show up as synonym when you searched for it in step One above. Most likely, in this case it has not been used at this hierachical level before. If it does not show up, create it using the following process.
Five.
Navigate to the taxon name at the subfamily level, for example, Coccophaginae (via Browse Nomenclature
) and move to the Edit Taxon Name
screen. Create the name at the tribal or subtribal level, for example, Coccophagini. The best way to do this is to Clone
the subfamily level name (see green button in upper right), as this will retain the author and date, type genus, and other historical information. Select all the boxes
to retain all historical information and type CLONE
in the box. This will active the green Clone
button. Note that you are creating a taxon name here, not an OTU, which is a separate issue. Six.
Navigate to the tribal (or subtribal) name in Browse Nomenclature
and move to the Edit Taxon Name
screen. Pick
the rank (tribe) and change the ending to -ini
.Change the parent
. In this case, the parent of Coccophagini would be Coccophaginae. Seven.
Under Classification, set to parent (Coccophaginae) and choose Source Classified As
. Use the Radial annotator
to the right to enter a citation for the publication and page number of the paper in which the tribe was recognized or moved. Eight.
The problem with this approach is that all of the children of Coccophaginae will have been transferred to Coccophagini. If some of these genera belong to another tribe, you will need to create any such tribe, using the steps above, and transfer the genera, one by one. First navigate to the appropriate taxon name Click the green Edit Taxon Name
button. Change the parent to the higher level taxon in which the taxon has been classified as Incertae Sedis . Navigate down to the Classification
field Click Set to Parent
, and choose Incertae Sedis
. Then record the source and page number in which the classification was made using the Radial annotator
to the right. For some name:
A - start (origin) B - current -> current classification change the parent here -> everything looks more or less right C - second move preserve "b"
A - Protonym B - Combination C - Parent (Combination)
From a practical standpoint, when a name changes, use New Combination
task. Why?
It lets you create the new combination just by typing in the string Having that combination, even if its just a B, pre-adapts you for C's. This gives you the historical record. In the New Combination
task, after the combination has been created, there is an option to easily move the name to the correct parent Considerations vs. line endings.
In the New combination task
you will find/pick the species in its original latin form If that name has gendered data with it and the new genus has gendered data with it Then conjugation of the species name will automatically be rendered correctly in the new combination, and in reference to the new Parent (after you do 3) above) To pre-adapt your steps above being easy, follow best practices and add the gendered information at the time of entry of a Protonym. Never just change parent, always go the Combination
route. (i.e. 2) above).
Example use case of name ending corrected by subsequent publication:
Species published with incorrect ending Name is always the original form, latinized, never changed Author "corrects" the ending in a subsequent publication Key information: in this case there is no second Protonym , the gender ending correction happens automagically Key trick: to add a citation with this "fixed" data you must create a new Combination
, and cite it. You must compose the combination with the same protonym that was "misspelled" Key bits of making new combinations Think about making your new combination by finding Protonyms
in the original combination Remember if you type in a gendered ending, and no suggestions are found, you can always click to search directly by the original combination, or to track down the protonym in the taxon name autocomplete. For all of the above to work, the Gender and form
section of the Edit Taxon Name
form on the original protonym must be filled in. A name is published. A type series is used (i.e. there is no holotype) The type series is found to represent two different species. The author says "we're stating this is two different species, and synonymizing the original name under two other names, but not selecting a holotype. If a future worker selects a holotype, our actions here may need to be changed again" (alternatively, author may synonymize the species in partim ). Recommendation: Do nothing (do not post the two synonymies in TW) but add a citation and note, there are no governed consequences to manage. If you did have specimen catalog numbers then you could create 2 OTUs, each with the same species name, pre-adapting the data to receive new names for the new names if they come out. Recommendation 2: Use a Nomen Dubium
status and attach a citation to this. Start at the Edit Taxon Name
form for the suppressed name (senior homonym). Under the Relationship
section type in the suppressed name And using the Show all
button, select suppressed under
. Cite this. Next, go to the Edit Taxon Name
form for the junior homonym. Under the Status
section, use the Show all
button to find official list of specific names in zoology
and select valid
. NB: use the Advanced
button if for some reason the Show all
button is grayed out. Cite this. One method:
Create name using correct ending, Save
. Designate as Not Latin
under status. Change the name ending to the form wanted, Save
. Second method:
Create name. Using navigation radial, go to Show
. Click on Edit
Scroll down to bottom of form to Verbatim
field and type in name as it was originally published. Click Update Taxon Name
Third method:
Create the name. Click on Edit
to get to Edit taxon name
form. Click onClone
. Select Add invalid relationship
. Type clone
and then click the Clone
button. Edit
the Relationship
field and select Family Group Name Form
.If the taxon is a fossil, you need to select Fossil
in the Status
field of the New (Edit) Taxon name
task. The name will now appear with a little cross symbol to the left. There are special rules in ICZN and TW for fossil taxa. From Article 1 of the ICZN Code "1.2.1. The scientific names of extant or extinct animals include names based on domesticated animals, names based on fossils that are substitutions (replacements, impressions, moulds and casts) for the actual remains of animals, names based on the fossilized work of organisms (ichnotaxa), and names established for collective groups (see, in particular, Articles 10.3, 13.3.2, 23.7, 42.2.1, 66.1, 67.14), as well as names proposed before 1931 based on the work of extant animals."
Note well that for simplicity in TW, the flag fossil = extinct
is set to true
by default. If the taxon name is based on a fossil remnant or cast or animal evidence trace, the organismal group may not be extinct. In this case, unselect the flag.
Authorship of a name can asserted in 4(!) different ways. That seems confusing at first, but determining what gets shown is pretty straightforwrd.
The authorship label is determined by the FIRST option in the following list that is true. All other values are referenced only in validation reports.
If the verbatim name
field is filled out, then it is used. If People are assigned as TaxonName authors, then their family names are used. If People are assigned to a Source as authors, and that Source is the original source for the taxon name, then their family group names are used. If the author
field of a Source is filled out, then that field is used. The preferred mechanism is to link the TaxonName to a Source, and assign authors (People) to that source (third option in the list above). This is the most granular way of creating the data, and therefor it will ultimately give you the most flexibility in reporting and validating the data.
Please follow the instruction in the Nomenclature Basics.
Specimen deposition could be assigned to Specimen. If you create the type specimen for the Taxon Name, there is a field for the type repository. To create the type specimen follow one of the links provided in the Edit Taxon Name task, either Quick or Comprehensive in the Type section. Quick type specimen task allow to copy the entire verbatim-label information. The Comprehensive collection object allow to provide more detailed information about the specimen.
For ICN names, the basionym have to be creaed as a separate protonym and linked to current name with basionym TaxonNameRelationship For ICZN names, the original combination of protonym is an equivalent of basionym in botany.
You can symply delete the Synonym Taxon Name Relationship. But when the name has been historically treated as a synonym, and subsequently was restored, the best practice would be to preserve both treatments in the database. Keep the synonym Taxon Name Relationship with its original citation in the database. Add the nomenclatural Status Valid to the name. This status will overwrite the Taxon Name relationship. Please remember to add the citation to the status, to know where and when the name was reinstated.
The word form is "noun in apposition"; etymology "arbitrary combination of letters"
Edit TaxonName task has a special section for this, Classification . Select the family-group name, and the relationship Classified as . This could be used for original placement of the taxon, or for the subsequent classification. Once the Taxon Name Relationship is created, assigne the citation using the radial annotator.
ICZN does not provide a procedure to "validate" a nomen nudum . Once unavailable, the taxon name keeps this status. The taxon could be described in a subsequent publication by the same or a different author(s), with the same or a different spelling. Both names in TaxonWorks should be regarded as separate protonyms. Nomen nudum should be marked with one or several of the appropriate nomenclatural statuses: nomen nudum or, preferrably, a more specific one, for example nomen nudum: no description . Once the valid name is described and the second protonym is entered to the TaxonWorks database, the nomen nudum could be linked to the available name (valid or invalid) with a TaxonName Relationship "unavailable or invalid".
The name which is not spelled correctly, the original source, where the misspelling was introduced, is still required. The role is not require, because the author string is always generated from the correctly spelled protonym. Protonym of misspelled name is linked to the correctly spelled name with the Misspelling TaxonNameRelationship.
The incertae sedis relationship always correspond to the current placement of the taxon. For example, a species assigned to the family, instead of proper genus as a parent. Normally, this will be marked as an invalid placement, the incertae sedis relationship helps to override the error. For historical placements, a different relationship should be used: source classified as .
Another protonym with the original spelling should be created in the database. Clone button could be used to replicate all information from the current family-group name. This new taxon name should be linked to the original name using special Taxon Name Relationship Incorrect original spelling or Family group name original form . TW could be restrictive in the ending of the original name before you assigne the relationship, so it is recommended to save the Taxon Name with the proper ending, add the ralationship and return back to modify the Name to the original form. And save Taxon Name again. Assigning the relationship removes the restriction on the family-group name form and ending.
Individual protonyms should be created for original and each subsequent form of the family group name. Each protonym should be linked to the current form with the "Family-group name form" or "Family-group name original form" relationships
The type genus shoild be attached to any available family-group protonym.
If there are several coordinate names with the same type genus (for example, a family with nomynopypical subfamily), the same type could be automatically assigned from one to another through the Soft Validation fixes.
When a new subgenus or subspecies created and the parent taxon does not contain any other sub- taxa, you can see the soft validation message like this: "The parent species of this subspecies does not contain nominotypical subspecies ". TaxonWorks can detect and created the nominotypical subgenus and subspecies automatically when running Soft validation fixes, but now it could only be done programmatically. Before the fix is implemented to the interface, it is advisable to created the missing subgenus or subspecies manually.
The type species should be attached to each available protonym. If the type species is attached to either genus or subgenus, it could be automatically re-assigned to the other through Soft Validation Fixes.
According to the ICZN Art. 43, a name established for a taxon at either rank in the genu-group is deemed to have been simultaneously established by the same author for a nominal taxon at the other rank in the group; both nominal taxa have the same type species, whether it was fixed originally or subsequently. Changes in the rank also do not affect the type genus designation.
The genus name have to be entered into the classification before the use. It may have to Root assigned as the parent, or, preferrably, the basic classification (class, order, family) could be provided as well.
See the description above for the nominotypical subgenus.
The type material could be attached to the coordinate taxon of any rank (species, subspecies, superspecies). The Soft Validation Fix will help to re-attache the same specimen to different ranks. Multiple specimens should not be created.
When selecting Original genus for a species, sometimes two options are available: a valid genus name and coordinate subgenus with the same name("Aus " and "Aus (Aus )"). In cases like this the preference should always be given to the lower coordinate taxon name ("Aus (Aus )"). If the genus name is selected instead, you will get a soft validation waring "Original Combination: Relationship should move from genus to subgenus ". This is not a critical error. TaxonWorks can detect and automatically move the relationship from a genus to coordinate subgenus. But at the present implementation, it could only be done programmatically.
In the future, we expect an interface to to merge two records. But it is not available at the moment A taxon name could only be deleted if it does not have any associated record. All of those have to be deleted or reassigned before a TaxonName could be deleted. Suggestion, select one of two duplicate which has lower number of associated data (citations, relationships, otus, etc.) First, rename a TaxonName so you can isolate it from the name, which stays in the database. for example, if you have species name 'aus', change the name to 'ausdelete', so you can use the filter functionality to quickly navigate to the name. Delete associated OTU. In the Browse Nomenclature
, check if the name has an OTU, if present you can see it in the summany at the top right. If you follow the link, you will get to the OTU page. before deleting OTU. You can check if it has any data using OTU Radial
, for example distribution, if it does, you can reassing the OTU to another TaxonName in the Edit mode, just select the other of two duplicates. If the OTU does not have related date, it could be safly deleted. On the duplicate TaxonName page go to Edit mode. In this interface, look at any Statuses
, Relationships
, Original
or Subsequent combinations
, Gender
or Part of Speech
, Type species
, etc. If anything is present, it should be deleted, all of those will prevent TaxonName from being deleted. Once everething is cleared, try to use Delete button. The duplicate name may get deleted. If the TaxonName is still not deletable, it means that still there are some related records, which need some resolution. One of the common problem could be that a genus name, for example, is used as a Original genus or a genus name in a subsequent combination. To see if this is the case, use the Radial Navigator
button and Related
sector. It can redirect you to the interface which shows all TaxonName relationships (original and subsequent combinations, where this name is used). You can change all of them one by one, selecting the appropriate taxon, but there is also a helper task: Merge Taxon Names
which could help to move all relationships from one TaxonName to another. Select from Taxon Name
and To Taxon Name
. and Proceed. You can use the Radial Navigator
button and Related
sector to verify that everything is moved. You can try to delete TaxonName again. If TaxonName could not be deleted, check what else is present in Related
, see if there are still some relationship left in the list, which need to be resolved manually. Potential problem may also come from the Collection Object
where the name is used for the type specimen, holotype, for example, if present, reassigne to another name, once the Relatead
is cleare, the TaxonName could be safely delete. The things which could be deleted together with a TaxonName (they do not block deletion): authors, citations, data attributes, notes, tags, depictions, and other attributes, those if present will be deleted automatically together with TaxonName. ',369);function f(g,y){const t=i("RouteLink");return c(),n("div",null,[h,u,m,e("p",null,[o("TW provides a suite of common tasks help you to manage your nomenclatural and related data. This section assumes you have some familiarity with the "),s(t,{to:"/guide/Manual/conventions.html"},{default:r(()=>[o("TW user interface conventions")]),_:1}),o(" and introduces new user interface features where needed. Next, please familiarize yourself with the kinds of tasks TW offers related to Nomenclature.")]),p])}const w=a(d,[["render",f],["__file","nomenclature.html.vue"]]),v=JSON.parse('{"path":"/guide/Manual/nomenclature.html","title":"Nomenclature","lang":"en-US","frontmatter":{"sidebarPosition":400},"headers":[{"level":2,"title":"Nomenclature Quick Start","slug":"nomenclature-quick-start","link":"#nomenclature-quick-start","children":[{"level":3,"title":"Nomenclature, not biology!","slug":"nomenclature-not-biology","link":"#nomenclature-not-biology","children":[]},{"level":3,"title":"Finding Nomenclature Tasks","slug":"finding-nomenclature-tasks","link":"#finding-nomenclature-tasks","children":[]},{"level":3,"title":"Navigation helpers","slug":"navigation-helpers","link":"#navigation-helpers","children":[{"level":4,"title":"Hotkeys","slug":"hotkeys","link":"#hotkeys","children":[]}]}]},{"level":2,"title":"Understanding the data model","slug":"understanding-the-data-model","link":"#understanding-the-data-model","children":[]},{"level":2,"title":"Curating data","slug":"curating-data","link":"#curating-data","children":[{"level":3,"title":"Basic information","slug":"basic-information","link":"#basic-information","children":[]},{"level":3,"title":"About Root","slug":"about-root","link":"#about-root","children":[]},{"level":3,"title":"Conceptual approach","slug":"conceptual-approach","link":"#conceptual-approach","children":[]},{"level":3,"title":"Authorship","slug":"authorship","link":"#authorship","children":[{"level":4,"title":"ICZN","slug":"iczn","link":"#iczn","children":[{"level":5,"title":"Parentheses around author/year","slug":"parentheses-around-author-year","link":"#parentheses-around-author-year","children":[]},{"level":5,"title":"Year of publication (availability) versus stated year","slug":"year-of-publication-availability-versus-stated-year","link":"#year-of-publication-availability-versus-stated-year","children":[]}]}]},{"level":3,"title":"Nomenclatural Status","slug":"nomenclatural-status","link":"#nomenclatural-status","children":[{"level":4,"title":"Example 1: Nomen nudum","slug":"example-1-nomen-nudum","link":"#example-1-nomen-nudum","children":[]}]},{"level":3,"title":"Relationship","slug":"relationship","link":"#relationship","children":[{"level":4,"title":"Example 1: Synonymy","slug":"example-1-synonymy","link":"#example-1-synonymy","children":[]},{"level":4,"title":"Example 2: Homonomy","slug":"example-2-homonomy","link":"#example-2-homonomy","children":[]},{"level":4,"title":"Example 3: Misapplication","slug":"example-3-misapplication","link":"#example-3-misapplication","children":[]},{"level":4,"title":"Misspelling","slug":"misspelling","link":"#misspelling","children":[]}]},{"level":3,"title":"Original combinations","slug":"original-combinations","link":"#original-combinations","children":[]},{"level":3,"title":"Citing the original combination","slug":"citing-the-original-combination","link":"#citing-the-original-combination","children":[{"level":4,"title":"Method 1 (original combination different from the current combination)","slug":"method-1-original-combination-different-from-the-current-combination","link":"#method-1-original-combination-different-from-the-current-combination","children":[{"level":5,"title":"Entering misspelled names","slug":"entering-misspelled-names","link":"#entering-misspelled-names","children":[]}]},{"level":4,"title":"Method 2 (when the original combination is the same as the current combination)","slug":"method-2-when-the-original-combination-is-the-same-as-the-current-combination","link":"#method-2-when-the-original-combination-is-the-same-as-the-current-combination","children":[]}]},{"level":3,"title":"Type metadata","slug":"type-metadata","link":"#type-metadata","children":[{"level":4,"title":"Genus and Family group names","slug":"genus-and-family-group-names","link":"#genus-and-family-group-names","children":[]},{"level":4,"title":"Species group names","slug":"species-group-names","link":"#species-group-names","children":[]}]},{"level":3,"title":"Family group names","slug":"family-group-names","link":"#family-group-names","children":[]},{"level":3,"title":"Citations","slug":"citations","link":"#citations","children":[{"level":4,"title":"Incertae sedis","slug":"incertae-sedis","link":"#incertae-sedis","children":[]},{"level":4,"title":"Misidentifications","slug":"misidentifications","link":"#misidentifications","children":[]}]}]},{"level":2,"title":"Nomenclature Senarios (aka How-To)","slug":"nomenclature-senarios-aka-how-to","link":"#nomenclature-senarios-aka-how-to","children":[{"level":3,"title":"Add new taxon name","slug":"add-new-taxon-name","link":"#add-new-taxon-name","children":[]},{"level":3,"title":"Add / amend type information for a new taxon","slug":"add-amend-type-information-for-a-new-taxon","link":"#add-amend-type-information-for-a-new-taxon","children":[]},{"level":3,"title":"New synonymy or removal from synonymy (stat. rev.)","slug":"new-synonymy-or-removal-from-synonymy-stat-rev","link":"#new-synonymy-or-removal-from-synonymy-stat-rev","children":[{"level":4,"title":"Example of Synonymization of subgenera","slug":"example-of-synonymization-of-subgenera","link":"#example-of-synonymization-of-subgenera","children":[]},{"level":4,"title":"Transfer species to new parent or not","slug":"transfer-species-to-new-parent-or-not","link":"#transfer-species-to-new-parent-or-not","children":[]},{"level":4,"title":"Remove name from synonomy","slug":"remove-name-from-synonomy","link":"#remove-name-from-synonomy","children":[]}]},{"level":3,"title":"New combination","slug":"new-combination","link":"#new-combination","children":[]},{"level":3,"title":"Revised family placement for a genus or genus placement for a species","slug":"revised-family-placement-for-a-genus-or-genus-placement-for-a-species","link":"#revised-family-placement-for-a-genus-or-genus-placement-for-a-species","children":[]},{"level":3,"title":"Designate nomen nudum or numen dubium","slug":"designate-nomen-nudum-or-numen-dubium","link":"#designate-nomen-nudum-or-numen-dubium","children":[]},{"level":3,"title":"Homonyms and replacement names","slug":"homonyms-and-replacement-names","link":"#homonyms-and-replacement-names","children":[]},{"level":3,"title":"Resolving redundant person name strings, and matching author names with and without diacritical marks","slug":"resolving-redundant-person-name-strings-and-matching-author-names-with-and-without-diacritical-marks","link":"#resolving-redundant-person-name-strings-and-matching-author-names-with-and-without-diacritical-marks","children":[]},{"level":3,"title":"Recording subsequent misspelling of a name","slug":"recording-subsequent-misspelling-of-a-name","link":"#recording-subsequent-misspelling-of-a-name","children":[]},{"level":3,"title":"Changing rank of a family-level taxon","slug":"changing-rank-of-a-family-level-taxon","link":"#changing-rank-of-a-family-level-taxon","children":[]},{"level":3,"title":"Changing rank of a genus-level taxon or species-level taxon","slug":"changing-rank-of-a-genus-level-taxon-or-species-level-taxon","link":"#changing-rank-of-a-genus-level-taxon-or-species-level-taxon","children":[]},{"level":3,"title":"Species groups","slug":"species-groups","link":"#species-groups","children":[]},{"level":3,"title":"About tribes and subtribes","slug":"about-tribes-and-subtribes","link":"#about-tribes-and-subtribes","children":[]},{"level":3,"title":"Taxon classified as Incertae Sedis","slug":"taxon-classified-as-incertae-sedis","link":"#taxon-classified-as-incertae-sedis","children":[]},{"level":3,"title":"Species name endings changing due to movement to another genus, or correction by publication","slug":"species-name-endings-changing-due-to-movement-to-another-genus-or-correction-by-publication","link":"#species-name-endings-changing-due-to-movement-to-another-genus-or-correction-by-publication","children":[]},{"level":3,"title":"Species synonymized with two or more other species","slug":"species-synonymized-with-two-or-more-other-species","link":"#species-synonymized-with-two-or-more-other-species","children":[]},{"level":3,"title":"Junior synonym conserved by ICZN decision (i.e. senior synonym suppressed)","slug":"junior-synonym-conserved-by-iczn-decision-i-e-senior-synonym-suppressed","link":"#junior-synonym-conserved-by-iczn-decision-i-e-senior-synonym-suppressed","children":[]},{"level":3,"title":"Entering names with incorrect endings for their taxonomic level","slug":"entering-names-with-incorrect-endings-for-their-taxonomic-level","link":"#entering-names-with-incorrect-endings-for-their-taxonomic-level","children":[]},{"level":3,"title":"What about fossil taxa in TaxonWorks?","slug":"what-about-fossil-taxa-in-taxonworks","link":"#what-about-fossil-taxa-in-taxonworks","children":[]},{"level":3,"title":"Can you describe how the authorship label for a name is determined?","slug":"can-you-describe-how-the-authorship-label-for-a-name-is-determined","link":"#can-you-describe-how-the-authorship-label-for-a-name-is-determined","children":[]},{"level":3,"title":"There are a lot of options for assigning the authorship of a TaxonName, which is the preferred way?","slug":"there-are-a-lot-of-options-for-assigning-the-authorship-of-a-taxonname-which-is-the-preferred-way","link":"#there-are-a-lot-of-options-for-assigning-the-authorship-of-a-taxonname-which-is-the-preferred-way","children":[]},{"level":3,"title":"Do you have any instructions on how to change combinations or enter new synonymies in TW?","slug":"do-you-have-any-instructions-on-how-to-change-combinations-or-enter-new-synonymies-in-tw","link":"#do-you-have-any-instructions-on-how-to-change-combinations-or-enter-new-synonymies-in-tw","children":[]},{"level":3,"title":"How do I find out where types are deposited, do you not yet have this function in TW?","slug":"how-do-i-find-out-where-types-are-deposited-do-you-not-yet-have-this-function-in-tw","link":"#how-do-i-find-out-where-types-are-deposited-do-you-not-yet-have-this-function-in-tw","children":[]},{"level":3,"title":"How do I get to the place in TW where I can add a new basionym? I need to try it out and see what happens.","slug":"how-do-i-get-to-the-place-in-tw-where-i-can-add-a-new-basionym-i-need-to-try-it-out-and-see-what-happens","link":"#how-do-i-get-to-the-place-in-tw-where-i-can-add-a-new-basionym-i-need-to-try-it-out-and-see-what-happens","children":[]},{"level":3,"title":"How would I remove a name from synonymy?","slug":"how-would-i-remove-a-name-from-synonymy","link":"#how-would-i-remove-a-name-from-synonymy","children":[]},{"level":3,"title":"What is the word form for \\"arbitrary combination of letters\\"?","slug":"what-is-the-word-form-for-arbitrary-combination-of-letters","link":"#what-is-the-word-form-for-arbitrary-combination-of-letters","children":[]},{"level":3,"title":"How to record in the database a situation when a taxon, species or genus, is moved from one family to another?","slug":"how-to-record-in-the-database-a-situation-when-a-taxon-species-or-genus-is-moved-from-one-family-to-another","link":"#how-to-record-in-the-database-a-situation-when-a-taxon-species-or-genus-is-moved-from-one-family-to-another","children":[]},{"level":3,"title":"How to record a nomen nudum that was \\"subsequently validated\\"?","slug":"how-to-record-a-nomen-nudum-that-was-subsequently-validated","link":"#how-to-record-a-nomen-nudum-that-was-subsequently-validated","children":[]},{"level":3,"title":"How to enter the author for misspelled name?","slug":"how-to-enter-the-author-for-misspelled-name","link":"#how-to-enter-the-author-for-misspelled-name","children":[]},{"level":3,"title":"How can I record the history of the taxon which had several historical Incertae sedis placements?","slug":"how-can-i-record-the-history-of-the-taxon-which-had-several-historical-incertae-sedis-placements","link":"#how-can-i-record-the-history-of-the-taxon-which-had-several-historical-incertae-sedis-placements","children":[]}]},{"level":2,"title":"FAQ related to family-group names","slug":"faq-related-to-family-group-names","link":"#faq-related-to-family-group-names","children":[{"level":3,"title":"Is it possible to link a note to a family group name to specify what the original spelling is, at what level it was proposed and when?","slug":"is-it-possible-to-link-a-note-to-a-family-group-name-to-specify-what-the-original-spelling-is-at-what-level-it-was-proposed-and-when","link":"#is-it-possible-to-link-a-note-to-a-family-group-name-to-specify-what-the-original-spelling-is-at-what-level-it-was-proposed-and-when","children":[]},{"level":3,"title":"What protonyms do I need to create for each form of the family-group name?","slug":"what-protonyms-do-i-need-to-create-for-each-form-of-the-family-group-name","link":"#what-protonyms-do-i-need-to-create-for-each-form-of-the-family-group-name","children":[]},{"level":3,"title":"To which ranked Protonym do I attach the type genus?","slug":"to-which-ranked-protonym-do-i-attach-the-type-genus","link":"#to-which-ranked-protonym-do-i-attach-the-type-genus","children":[]},{"level":3,"title":"Do I have to re-attach the type genus to each family group protonym?","slug":"do-i-have-to-re-attach-the-type-genus-to-each-family-group-protonym","link":"#do-i-have-to-re-attach-the-type-genus-to-each-family-group-protonym","children":[]}]},{"level":2,"title":"FAQ related to genus-group names","slug":"faq-related-to-genus-group-names","link":"#faq-related-to-genus-group-names","children":[{"level":3,"title":"Do I have to create nominotypical subgenus or subspecies manually?","slug":"do-i-have-to-create-nominotypical-subgenus-or-subspecies-manually","link":"#do-i-have-to-create-nominotypical-subgenus-or-subspecies-manually","children":[]},{"level":3,"title":"To which rank should I attach the type species in cases where nominotypical genera exist, genus, or subgenus? What if I have done the opposite?","slug":"to-which-rank-should-i-attach-the-type-species-in-cases-where-nominotypical-genera-exist-genus-or-subgenus-what-if-i-have-done-the-opposite","link":"#to-which-rank-should-i-attach-the-type-species-in-cases-where-nominotypical-genera-exist-genus-or-subgenus-what-if-i-have-done-the-opposite","children":[]},{"level":3,"title":"Does the attachment of the type species differ if the nominotypical subgenus came with, or after the original description of the genus?","slug":"does-the-attachment-of-the-type-species-differ-if-the-nominotypical-subgenus-came-with-or-after-the-original-description-of-the-genus","link":"#does-the-attachment-of-the-type-species-differ-if-the-nominotypical-subgenus-came-with-or-after-the-original-description-of-the-genus","children":[]}]},{"level":2,"title":"FAQ related to species-group names","slug":"faq-related-to-species-group-names","link":"#faq-related-to-species-group-names","children":[{"level":3,"title":"I have a species which was originally described in genus which obviously lies outside the scope of my group. How can I use this genus in the original combination?","slug":"i-have-a-species-which-was-originally-described-in-genus-which-obviously-lies-outside-the-scope-of-my-group-how-can-i-use-this-genus-in-the-original-combination","link":"#i-have-a-species-which-was-originally-described-in-genus-which-obviously-lies-outside-the-scope-of-my-group-how-can-i-use-this-genus-in-the-original-combination","children":[]},{"level":3,"title":"Do I have to create a nominotypical subspecies?","slug":"do-i-have-to-create-a-nominotypical-subspecies","link":"#do-i-have-to-create-a-nominotypical-subspecies","children":[]},{"level":3,"title":"Which ranked name should I attach the type material to, species, or subspecies?","slug":"which-ranked-name-should-i-attach-the-type-material-to-species-or-subspecies","link":"#which-ranked-name-should-i-attach-the-type-material-to-species-or-subspecies","children":[]},{"level":3,"title":"When creating protonym, what names should I put in Original combination fields?","slug":"when-creating-protonym-what-names-should-i-put-in-original-combination-fields","link":"#when-creating-protonym-what-names-should-i-put-in-original-combination-fields","children":[]},{"level":3,"title":"How do delete a duplicate Taxon Name?","slug":"how-do-delete-a-duplicate-taxon-name","link":"#how-do-delete-a-duplicate-taxon-name","children":[]}]}],"git":{"updatedTime":1713891281000,"contributors":[{"name":"Debbie Paul","email":"dlpaul@illinois.edu","commits":15},{"name":"Dmitry Dmitriev","email":"proceps@users.noreply.github.com","commits":2},{"name":"José Luis Pereira","email":"pepelui@outlook.com","commits":2},{"name":"hhopkins77","email":"cockroachdoc@gmail.com","commits":2},{"name":"Deborah Paul","email":"dlpaul@illinois.edu","commits":1},{"name":"Dmitry Dmitriev","email":"arboridia@gmail.com","commits":1}]},"filePathRelative":"guide/Manual/nomenclature.md"}');export{w as comp,v as data};
diff --git a/assets/other-documents.html-D2b_hTIS.js b/assets/other-documents.html-D2b_hTIS.js
new file mode 100644
index 00000000..f09b2c2d
--- /dev/null
+++ b/assets/other-documents.html-D2b_hTIS.js
@@ -0,0 +1 @@
+import{_ as e,c as r,o,b as a}from"./app-Bwgh_xIT.js";const t={},i=a('The intent is to move this content here, and remove the files from this list at that time.
',4),l=[i];function n(s,c){return o(),r("div",null,l)}const m=e(t,[["render",n],["__file","other-documents.html.vue"]]),p=JSON.parse('{"path":"/guide/other-documents.html","title":"Other documents","lang":"en-US","frontmatter":{"sidebarPosition":500},"headers":[{"level":2,"title":"Archived files from the original repository","slug":"archived-files-from-the-original-repository","link":"#archived-files-from-the-original-repository","children":[]}],"git":{"updatedTime":1680036376000,"contributors":[{"name":"mjy","email":"diapriid@gmail.com","commits":2}]},"filePathRelative":"guide/other-documents.md"}');export{m as comp,p as data};
diff --git a/assets/start-a-project.html-nrFH6MA2.js b/assets/start-a-project.html-nrFH6MA2.js
new file mode 100644
index 00000000..1877acc2
--- /dev/null
+++ b/assets/start-a-project.html-nrFH6MA2.js
@@ -0,0 +1 @@
+import{_ as e,c as o,o as a,b as t}from"./app-Bwgh_xIT.js";const r={},n=t('Before you start a project it is important to understand:
TaxonWorks is open-source software that can be installed by anyone who wishes to. There is no one central TaxonWorks installation. One installation (sometimes referred to as "an instance") of TaxonWorks supports the creation of many projects. Organizations or individuals who collaborate with you by sharing their installation of TaxonWorks are doing this on their own terms. These terms may vary. Is possible to use TaxonWorks locally, for example developers have active instances they work with.
Considerations:
Offline use beyond development and experimenting is not officially supported at the moment, however the core developers are open to discussing making this happen. Offline TaxonWorks runs slower than online, however if you are serious about making it work the developers can work with you to tune your setup. Besides the various means of import and export there are no direct synchronization methods from offline to online projects. Some providers (see below) offer accounts in sandboxes. A sandbox is a temporary installation of TaxonWorks that can be used without fear of damaging "real" data. They are used to test functionality, practice making changes, preview large data imports, and assess whether necessary requirements are met. Each sandbox provider may have their own conditions as to how a sandbox should be used, be sure to understand the terms of use before using a sandbox account.
The Species File Group manages multiple sandboxes. Their terms of use are outlined here .
The following is a list of organizations or individuals with TaxonWorks installations. Starting a project here is a form of collaboration.
If you wish to be added to this list contact us or make a pull request .
The Species File group has a document outlining how they collobarate , its purpose is to get everyone on the same page as to what a TaxonWorks project in the instances they support means.
As more and more projects are created in TaxonWorks the scope of the taxa covered grows. If your projects overlap then we encourage you to find an existing project and join up, rather than work in parallel.
We encourage organizations or individuals with the resources to run their own instance of TaxonWorks. The core development team is mandated to facilitate this happening, and is committed to working with you to navigate the technical challenges to this. When individuals or organizations manage their own instance then this demonstrates to the broader community the growing role and importance of TaxonWorks. New instances help distribute valuable technical resources and underlying responsibility across our community.
From a technical perspective you can get started with install_taxonworks repository .
From a social perspective we encourage you to reach out and discuss with us how to best setup a new production-ready instance.
',21),s=[n];function i(l,h){return a(),o("div",null,s)}const d=e(r,[["render",i],["__file","start-a-project.html.vue"]]),p=JSON.parse('{"path":"/guide/start-a-project.html","title":"Start a project","lang":"en-US","frontmatter":{"sidebarPosition":30},"headers":[{"level":2,"title":"Offline/local use","slug":"offline-local-use","link":"#offline-local-use","children":[]},{"level":2,"title":"Sandboxes","slug":"sandboxes","link":"#sandboxes","children":[]},{"level":2,"title":"Collaborate","slug":"collaborate","link":"#collaborate","children":[]},{"level":2,"title":"Join","slug":"join","link":"#join","children":[]},{"level":2,"title":"Serve","slug":"serve","link":"#serve","children":[]}],"git":{"updatedTime":1678491307000,"contributors":[{"name":"Debbie Paul","email":"dlpaul@illinois.edu","commits":4},{"name":"mjy","email":"diapriid@gmail.com","commits":4}]},"filePathRelative":"guide/start-a-project.md"}');export{d as comp,p as data};
diff --git a/assets/style-BDrIVK5F.css b/assets/style-BDrIVK5F.css
new file mode 100644
index 00000000..209bae8f
--- /dev/null
+++ b/assets/style-BDrIVK5F.css
@@ -0,0 +1 @@
+.vp-back-to-top-button{position:fixed!important;bottom:4rem;inset-inline-end:1rem;z-index:100;width:48px;height:48px;padding:12px;border-width:0;border-radius:50%;background:var(--back-to-top-bg-color);color:var(--back-to-top-color);box-shadow:2px 2px 10px 4px var(--back-to-top-shadow);cursor:pointer}@media (max-width: 959px){.vp-back-to-top-button{transform:scale(.8);transform-origin:100% 100%}}@media print{.vp-back-to-top-button{display:none}}.vp-back-to-top-button:hover{color:var(--back-to-top-color-hover)}.vp-back-to-top-button .back-to-top-icon{overflow:hidden;width:24px;height:24px;margin:0 auto;background:var(--back-to-top-icon-color);-webkit-mask-image:var(--back-to-top-icon);mask-image:var(--back-to-top-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:cover;mask-size:cover}.vp-scroll-progress{position:absolute;right:-2px;bottom:-2px;width:52px;height:52px}.vp-scroll-progress svg{width:100%;height:100%}.vp-scroll-progress circle{opacity:.9;transform:rotate(-90deg);transform-origin:50% 50%}.back-to-top-enter-active,.back-to-top-leave-active{transition:opacity .3s}.back-to-top-enter-from,.back-to-top-leave-to{opacity:0}:root{--back-to-top-z-index: 5;--back-to-top-icon: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2048%2048'%3e%3cpath%20fill='none'%20stroke='currentColor'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='4'%20d='M24.008%2014.1V42M12%2026l12-12l12%2012M12%206h24'%20/%3e%3c/svg%3e");--back-to-top-bg-color: #fff;--back-to-top-color: #3eaf7c;--back-to-top-icon-color: currentColor;--back-to-top-color-hover: #71cda3;--back-to-top-shadow: rgb(0 0 0 / 20%)}div[class*=language-]:hover:before{display:none}div[class*=language-]:hover .vp-copy-code-button{opacity:1}.vp-copy-code-button{position:absolute;top:.5em;right:.5em;z-index:5;width:2.5rem;height:2.5rem;padding:0;border-width:0;border-radius:.5rem;background:transparent;outline:none;opacity:0;cursor:pointer;transition:opacity .4s}@media print{.vp-copy-code-button{display:none}}.vp-copy-code-button:focus,.vp-copy-code-button.copied{opacity:1}.vp-copy-code-button:hover,.vp-copy-code-button.copied{background:var(--copy-code-hover)}.vp-copy-code-button.copied .vp-copy-icon{-webkit-mask-image:var(--code-copied-icon);mask-image:var(--code-copied-icon)}.vp-copy-code-button.copied:after{content:attr(data-copied);position:absolute;top:0;right:calc(100% + .25rem);display:block;height:1.25rem;padding:.625rem;border-radius:.5rem;background:var(--copy-code-hover);color:var(--copy-code-color);font-weight:500;line-height:1.25rem;white-space:nowrap}.vp-copy-icon{width:1.25rem;height:1.25rem;padding:.625rem;background:currentcolor;color:var(--copy-code-color);font-size:1.25rem;-webkit-mask-image:var(--code-copy-icon);mask-image:var(--code-copy-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:1em;mask-size:1em}:root{--code-copy-icon: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20height='20'%20width='20'%20stroke='rgba(128,128,128,1)'%20stroke-width='2'%3e%3cpath%20stroke-linecap='round'%20stroke-linejoin='round'%20d='M9%205H7a2%202%200%200%200-2%202v12a2%202%200%200%200%202%202h10a2%202%200%200%200%202-2V7a2%202%200%200%200-2-2h-2M9%205a2%202%200%200%200%202%202h2a2%202%200%200%200%202-2M9%205a2%202%200%200%201%202-2h2a2%202%200%200%201%202%202'%20/%3e%3c/svg%3e");--code-copied-icon: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20height='20'%20width='20'%20stroke='rgba(128,128,128,1)'%20stroke-width='2'%3e%3cpath%20stroke-linecap='round'%20stroke-linejoin='round'%20d='M9%205H7a2%202%200%200%200-2%202v12a2%202%200%200%200%202%202h10a2%202%200%200%200%202-2V7a2%202%200%200%200-2-2h-2M9%205a2%202%200%200%200%202%202h2a2%202%200%200%200%202-2M9%205a2%202%200%200%201%202-2h2a2%202%200%200%201%202%202m-6%209%202%202%204-4'%20/%3e%3c/svg%3e");--copy-code-color: #9e9e9e;--copy-code-hover: rgb(0 0 0 / 50%)}:root{--medium-zoom-z-index: 100;--medium-zoom-bg-color: #ffffff;--medium-zoom-opacity: 1}.medium-zoom-overlay{background-color:var(--medium-zoom-bg-color)!important;z-index:var(--medium-zoom-z-index)}.medium-zoom-overlay~img{z-index:calc(var(--medium-zoom-z-index) + 1)}.medium-zoom--opened .medium-zoom-overlay{opacity:var(--medium-zoom-opacity)}:root{--nprogress-color: #29d;--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{background:var(--nprogress-color);position:fixed;z-index:var(--nprogress-z-index);top:0;left:0;width:100%;height:2px}.vp-page-meta{max-width:var(--content-width);margin:0 auto;padding:.75rem 2.5rem;display:flex;flex-wrap:wrap;justify-content:space-between;overflow:auto}@media (max-width: 959px){.vp-page-meta{padding:2rem}}@media (max-width: 419px){.vp-page-meta{padding:1.5rem}}@media print{.vp-page-meta{margin:0!important;padding-inline:0!important}}@media (max-width: 719px){.vp-page-meta{display:block}}.vp-page-meta .vp-meta-item{flex-grow:1}.vp-page-meta .vp-meta-item .vp-meta-label{font-weight:500}.vp-page-meta .vp-meta-item .vp-meta-label:not(a){color:var(--c-text-lighter)}.vp-page-meta .vp-meta-item .vp-meta-info{color:var(--c-text-quote);font-weight:400}.vp-page-meta .git-info{text-align:end}.vp-page-meta .edit-link{margin-top:.25rem;margin-bottom:.25rem;margin-inline-end:.5rem;font-size:14px}@media print{.vp-page-meta .edit-link{display:none}}.vp-page-meta .edit-link .icon{position:relative;bottom:-.125em;width:1em;height:1em;margin-inline-end:.25em}.vp-page-meta .last-updated,.vp-page-meta .contributors{margin-top:.25rem;margin-bottom:.25rem;font-size:14px}@media (max-width: 719px){.vp-page-meta .last-updated,.vp-page-meta .contributors{font-size:13px;text-align:start}}.vp-page-nav{display:flex;flex-wrap:wrap;max-width:var(--content-width, 740px);min-height:2rem;margin-inline:auto;margin-top:0;padding-block:.5rem;padding-inline:2rem;border-top:1px solid var(--c-border);transition:border-top var(--t-color);padding-top:1rem;padding-bottom:0}@media (max-width: 959px){.vp-page-nav{padding-inline:1rem}}@media print{.vp-page-nav{display:none}}.vp-page-nav .route-link{display:inline-block;flex-grow:1;margin:.25rem;padding:.25rem .5rem;border:1px solid var(--c-border);border-radius:.25rem}.vp-page-nav .route-link:hover{background:var(--c-bg-light)}.vp-page-nav .route-link .hint{color:var(--c-text-quote);font-size:.875rem;line-height:2}.vp-page-nav .prev{text-align:start}.vp-page-nav .next{text-align:end}:root{--c-brand: #3eaf7c;--c-brand-light: #4abf8a;--c-bg: #ffffff;--c-bg-light: #f3f4f5;--c-bg-lighter: #eeeeee;--c-bg-dark: #ebebec;--c-bg-darker: #e6e6e6;--c-bg-navbar: var(--c-bg);--c-bg-sidebar: var(--c-bg);--c-bg-arrow: #cccccc;--c-text: #2c3e50;--c-text-accent: var(--c-brand);--c-text-light: #3a5169;--c-text-lighter: #4e6e8e;--c-text-lightest: #6a8bad;--c-text-quote: #999999;--c-border: #eaecef;--c-border-dark: #dfe2e5;--c-tip: #42b983;--c-tip-bg: var(--c-bg-light);--c-tip-title: var(--c-text);--c-tip-text: var(--c-text);--c-tip-text-accent: var(--c-text-accent);--c-warning: #ffc310;--c-warning-bg: #fffae3;--c-warning-bg-light: #fff3ba;--c-warning-bg-lighter: #fff0b0;--c-warning-border-dark: #f7dc91;--c-warning-details-bg: #fff5ca;--c-warning-title: #f1b300;--c-warning-text: #746000;--c-warning-text-accent: #edb100;--c-warning-text-light: #c1971c;--c-warning-text-quote: #ccab49;--c-danger: #f11e37;--c-danger-bg: #ffe0e0;--c-danger-bg-light: #ffcfde;--c-danger-bg-lighter: #ffc9c9;--c-danger-border-dark: #f1abab;--c-danger-details-bg: #ffd4d4;--c-danger-title: #ed1e2c;--c-danger-text: #660000;--c-danger-text-accent: #bd1a1a;--c-danger-text-light: #b5474d;--c-danger-text-quote: #c15b5b;--c-details-bg: #eeeeee;--c-badge-tip: var(--c-tip);--c-badge-warning: #ecc808;--c-badge-warning-text: var(--c-bg);--c-badge-danger: #dc2626;--c-badge-danger-text: var(--c-bg);--c-code-group-tab-title: rgba(255, 255, 255, .9);--c-code-group-tab-bg: var(--code-bg-color);--c-code-group-tab-outline: var(var(--c-code-group-tab-title));--c-code-group-tab-active-border: var(--c-brand);--t-color: .3s ease;--t-transform: .3s ease;--code-bg-color: #282c34;--code-hl-bg-color: rgba(0, 0, 0, .66);--code-ln-color: #9e9e9e;--code-ln-wrapper-width: 3.5rem;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-code: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;--navbar-height: 3.6rem;--navbar-padding-v: .7rem;--navbar-padding-h: 1.5rem;--sidebar-width: 20rem;--sidebar-width-mobile: calc(var(--sidebar-width) * .82);--content-width: 740px;--homepage-width: 960px;--external-link-icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");--external-link-icon-color: var(--c-text-quote)}.vp-back-to-top-button{--back-to-top-color: var(--c-brand);--back-to-top-color-hover: var(--c-brand-light);--back-to-top-bg-color: var(--c-bg)}.vp-catalog-wrapper{--catalog-bg-color: var(--c-bg);--catalog-bg-secondary-color: var(--c-bg-dark);--catalog-border-color: var(--c-border);--catalog-active-color: var(--c-brand);--catalog-hover-color: var(--c-brand-light)}.waline-wrapper{--waline-bg-color: var(--c-bg);--waline-bg-color-light: var(--c-bg-light);--waline-text-color: var(--c-color);--waline-border: 1px solid var(--c-border);--waline-border-color: var(--c-border);--waline-theme-color: var(--c-brand);--waline-active-color: var(--c-brand-light)}.DocSearch{--docsearch-primary-color: var(--c-brand);--docsearch-text-color: var(--c-text);--docsearch-highlight-color: var(--c-brand);--docsearch-muted-color: var(--c-text-quote);--docsearch-container-background: rgba(9, 10, 17, .8);--docsearch-modal-background: var(--c-bg-light);--docsearch-searchbox-background: var(--c-bg-lighter);--docsearch-searchbox-focus-background: var(--c-bg);--docsearch-searchbox-shadow: inset 0 0 0 2px var(--c-brand);--docsearch-hit-color: var(--c-text-light);--docsearch-hit-active-color: var(--c-bg);--docsearch-hit-background: var(--c-bg);--docsearch-hit-shadow: 0 1px 3px 0 var(--c-border-dark);--docsearch-footer-background: var(--c-bg)}.medium-zoom-overlay{--medium-zoom-bg-color: var(--c-bg)}.vp-notice-wrapper{--notice-color: var(--c-text);--notice-bg-color: var(--c-bg);--notice-primary-color: var(--c-brand);--notice-primary-text-color: var(--c-bg);--notice-primary-hover-color: var(--c-brand-light);--notice-button-color: var(--c-bg-light);--notice-button-hover-color: var(--c-bg-lighter)}#nprogress{--nprogress-color: var(--c-brand)}body{--photo-swipe-bullet: var(--c-bg);--photo-swipe-bullet-active: var(--c-brand)}body{--pwa-text-color: var(--c-text);--pwa-bg-color: var(--c-bg);--pwa-border-color: var(--c-brand);--pwa-btn-text-color: var(--c-bg);--pwa-btn-bg-color: var(--c-brand);--pwa-btn-hover-bg-color: var(--c-brand-light)}.redirect-modal-mask{--redirect-bg-color: var(--c-bg);--redirect-bg-color-light: var(--c-bg-light);--redirect-bg-color-lighter: var(--c-bg-lighter);--redirect-text-color: var(--c-text);--redirect-primary-color: var(--c-brand);--redirect-primary-hover-color: var(--c-brand-light);--redirect-primary-text-color: var(--c-bg)}.search-box{--search-bg-color: var(--c-bg);--search-accent-color: var(--c-brand);--search-text-color: var(--c-text);--search-border-color: var(--c-border);--search-item-text-color: var(--c-text-lighter);--search-item-focus-bg-color: var(--c-bg-light)}html.dark{--c-brand: #3aa675;--c-brand-light: #349469;--c-bg: #22272e;--c-bg-light: #2b313a;--c-bg-lighter: #262c34;--c-bg-dark: #343b44;--c-bg-darker: #37404c;--c-text: #adbac7;--c-text-light: #96a7b7;--c-text-lighter: #8b9eb0;--c-text-lightest: #8094a8;--c-border: #3e4c5a;--c-border-dark: #34404c;--c-tip: #318a62;--c-warning: #e0ad15;--c-warning-bg: #2d2f2d;--c-warning-bg-light: #423e2a;--c-warning-bg-lighter: #44442f;--c-warning-border-dark: #957c35;--c-warning-details-bg: #39392d;--c-warning-title: #fdca31;--c-warning-text: #d8d96d;--c-warning-text-accent: #ffbf00;--c-warning-text-light: #ddb84b;--c-warning-text-quote: #ccab49;--c-danger: #fc1e38;--c-danger-bg: #39232c;--c-danger-bg-light: #4b2b35;--c-danger-bg-lighter: #553040;--c-danger-border-dark: #a25151;--c-danger-details-bg: #482936;--c-danger-title: #fc2d3b;--c-danger-text: #ea9ca0;--c-danger-text-accent: #fd3636;--c-danger-text-light: #d9777c;--c-danger-text-quote: #d56b6b;--c-details-bg: #323843;--c-badge-warning: var(--c-warning);--c-badge-warning-text: #3c2e05;--c-badge-danger: var(--c-danger);--c-badge-danger-text: #401416;--code-hl-bg-color: #363b46}html.dark .DocSearch{--docsearch-logo-color: var(--c-text);--docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;--docsearch-key-shadow: inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d, 0 2px 2px 0 rgba(3, 4, 9, .3);--docsearch-key-gradient: linear-gradient(-225deg, #444950, #1c1e21);--docsearch-footer-shadow: inset 0 1px 0 0 rgba(73, 76, 106, .5), 0 -4px 8px 0 rgba(0, 0, 0, .2)}html.dark body{--pwa-shadow-color: rgb(0 0 0 / 30%);--pwa-content-color: #ccc;--pwa-content-light-color: #999}html,body{padding:0;margin:0;background-color:var(--c-bg);transition:background-color var(--t-color)}html.dark{color-scheme:dark}html{font-size:16px}body{font-family:var(--font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:1rem;color:var(--c-text)}a{font-weight:500;color:var(--c-text-accent);text-decoration:none;overflow-wrap:break-word}p a code{font-weight:400;color:var(--c-text-accent)}kbd{font-family:var(--font-family-code);color:var(--c-text);background:var(--c-bg-lighter);border:solid .15rem var(--c-border-dark);border-bottom:solid .25rem var(--c-border-dark);border-radius:.15rem;padding:0 .15em}code{font-family:var(--font-family-code);color:var(--c-text-lighter);padding:.25rem .5rem;margin:0;font-size:.85em;background-color:var(--c-bg-light);border-radius:3px;overflow-wrap:break-word;transition:background-color var(--t-color)}blockquote{font-size:1rem;color:var(--c-text-quote);border-left:.2rem solid var(--c-border-dark);margin:1rem 0;padding:.25rem 0 .25rem 1rem;overflow-wrap:break-word}blockquote>p{margin:0}ul,ol{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25;overflow-wrap:break-word}h1:focus-visible,h2:focus-visible,h3:focus-visible,h4:focus-visible,h5:focus-visible,h6:focus-visible{outline:none}h1 .header-anchor,h2 .header-anchor,h3 .header-anchor,h4 .header-anchor,h5 .header-anchor,h6 .header-anchor{color:inherit;text-decoration:none;position:relative}h1 .header-anchor:hover:before,h2 .header-anchor:hover:before,h3 .header-anchor:hover:before,h4 .header-anchor:hover:before,h5 .header-anchor:hover:before,h6 .header-anchor:hover:before{font-size:.8em;content:"¶";position:absolute;left:-.75em;color:var(--c-brand)}h1 .header-anchor:focus-visible,h2 .header-anchor:focus-visible,h3 .header-anchor:focus-visible,h4 .header-anchor:focus-visible,h5 .header-anchor:focus-visible,h6 .header-anchor:focus-visible{outline:none}h1 .header-anchor:focus-visible:before,h2 .header-anchor:focus-visible:before,h3 .header-anchor:focus-visible:before,h4 .header-anchor:focus-visible:before,h5 .header-anchor:focus-visible:before,h6 .header-anchor:focus-visible:before{content:"¶";position:absolute;left:-.75em;color:var(--c-brand);outline:auto}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid var(--c-border);transition:border-color var(--t-color)}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}@media print{a[href^="http://"]:after,a[href^="https://"]:after{content:" (" attr(href) ") "}}p,ul,ol{line-height:1.7;overflow-wrap:break-word}hr{border:0;border-top:1px solid var(--c-border)}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto;transition:border-color var(--t-color)}tr{border-top:1px solid var(--c-border-dark);transition:border-color var(--t-color)}tr:nth-child(2n){background-color:var(--c-bg-light);transition:background-color var(--t-color)}tr:nth-child(2n) code{background-color:var(--c-bg-dark)}th,td{padding:.6em 1em;border:1px solid var(--c-border-dark);transition:border-color var(--t-color)}.arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s}html.dark .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.arrow.down{transform:rotate(180deg)}.arrow.right{transform:rotate(90deg)}.arrow.left{transform:rotate(-90deg)}.badge{display:inline-block;font-size:14px;font-weight:600;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:var(--c-bg);vertical-align:top;transition:color var(--t-color),background-color var(--t-color)}.badge.tip{background-color:var(--c-badge-tip)}.badge.warning{background-color:var(--c-badge-warning);color:var(--c-badge-warning-text)}.badge.danger{background-color:var(--c-badge-danger);color:var(--c-badge-danger-text)}.badge+.badge{margin-left:5px}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:var(--font-family-code);font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#ec5975}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:#3eaf7c}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.375;padding:1.3rem 1.5rem;margin:.85rem 0;border-radius:6px;overflow:auto}.theme-default-content pre code,.theme-default-content pre[class*=language-] code{color:#fff;padding:0;background-color:transparent!important;border-radius:0;overflow-wrap:unset;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.theme-default-content .line-number{font-family:var(--font-family-code)}div[class*=language-]{position:relative;background-color:var(--code-bg-color);border-radius:6px}div[class*=language-]:before{content:attr(data-title);position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:var(--code-ln-color)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent!important;position:relative;z-index:1}div[class*=language-] .highlight-lines{-webkit-user-select:none;-moz-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.375}div[class*=language-] .highlight-lines .highlight-line{background-color:var(--code-hl-bg-color)}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlight-line{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlight-line:before{content:" ";position:absolute;z-index:2;left:0;top:0;display:block;width:var(--code-ln-wrapper-width);height:100%}div[class*=language-].line-numbers-mode pre{margin-left:var(--code-ln-wrapper-width);padding-left:1rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers{position:absolute;top:0;width:var(--code-ln-wrapper-width);text-align:center;color:var(--code-ln-color);padding-top:1.25rem;line-height:1.375;counter-reset:line-number}div[class*=language-].line-numbers-mode .line-numbers .line-number{position:relative;z-index:3;-webkit-user-select:none;-moz-user-select:none;user-select:none;height:1.375em}div[class*=language-].line-numbers-mode .line-numbers .line-number:before{counter-increment:line-number;content:counter(line-number);font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;top:0;left:0;width:var(--code-ln-wrapper-width);height:100%;border-radius:6px 0 0 6px;border-right:1px solid var(--code-hl-bg-color)}@media (max-width: 419px){.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}.code-group__nav{margin-top:.85rem;margin-bottom:calc(-1.7rem - 6px);padding-bottom:calc(1.7rem - 6px);padding-left:10px;padding-top:10px;border-top-left-radius:6px;border-top-right-radius:6px;background-color:var(--c-code-group-tab-bg)}.code-group__nav-tab{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:var(--c-code-group-tab-title);font-weight:600}.code-group__nav-tab:focus{outline:none}.code-group__nav-tab:focus-visible{outline:1px solid var(--c-code-group-tab-outline)}.code-group__nav-tab-active{border-bottom:var(--c-code-group-tab-active-border) 1px solid}@media (max-width: 419px){.code-group__nav{margin-left:-1.5rem;margin-right:-1.5rem;border-radius:0}}.code-group-item{display:none}.code-group-item__active{display:block}.code-group-item>pre{background-color:orange}.custom-container{transition:color var(--t-color),border-color var(--t-color),background-color var(--t-color)}.custom-container .custom-container-title{font-weight:600}.custom-container .custom-container-title:not(:only-child){margin-bottom:-.4rem}.custom-container.tip,.custom-container.warning,.custom-container.danger{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-container.tip{border-color:var(--c-tip);background-color:var(--c-tip-bg);color:var(--c-tip-text)}.custom-container.tip .custom-container-title{color:var(--c-tip-title)}.custom-container.tip a{color:var(--c-tip-text-accent)}.custom-container.tip code{background-color:var(--c-bg-dark)}.custom-container.warning{--external-link-icon-color: var(--c-warning-text-quote);border-color:var(--c-warning);background-color:var(--c-warning-bg);color:var(--c-warning-text)}.custom-container.warning .custom-container-title{color:var(--c-warning-title)}.custom-container.warning a{color:var(--c-warning-text-accent)}.custom-container.warning blockquote{border-left-color:var(--c-warning-border-dark);color:var(--c-warning-text-quote)}.custom-container.warning code{color:var(--c-warning-text-light);background-color:var(--c-warning-bg-light)}.custom-container.warning details{background-color:var(--c-warning-details-bg)}.custom-container.warning details code{background-color:var(--c-warning-bg-lighter)}.custom-container.danger{--external-link-icon-color: var(--c-danger-text-quote);border-color:var(--c-danger);background-color:var(--c-danger-bg);color:var(--c-danger-text)}.custom-container.danger .custom-container-title{color:var(--c-danger-title)}.custom-container.danger a{color:var(--c-danger-text-accent)}.custom-container.danger blockquote{border-left-color:var(--c-danger-border-dark);color:var(--c-danger-text-quote)}.custom-container.danger code{color:var(--c-danger-text-light);background-color:var(--c-danger-bg-light)}.custom-container.danger details{background-color:var(--c-danger-details-bg)}.custom-container.danger details code{background-color:var(--c-danger-bg-lighter)}.custom-container.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:var(--c-details-bg)}.custom-container.details code{background-color:var(--c-bg-darker)}.custom-container.details h4{margin-top:0}.custom-container.details figure:last-child,.custom-container.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-container.details summary{outline:none;cursor:pointer}.vp-external-link-icon:after{content:"";display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:var(--external-link-icon-color);flex-shrink:0;-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}.external-link-icon .external-link:after{content:"";display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:var(--external-link-icon-color);flex-shrink:0;-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}.external-link-icon .theme-default-content a[href*="://"]:not(.no-external-link-icon):after,.external-link-icon .theme-default-content a[target=_blank]:not(.no-external-link-icon):after{content:"";display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:var(--external-link-icon-color);flex-shrink:0;-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}.home{padding:var(--navbar-height) 2rem 0;max-width:var(--homepage-width);margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero h1,.home .hero .description,.home .hero .actions{margin:1.8rem auto}.home .hero .actions{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:var(--c-text-lightest)}.home .hero .action-button{display:inline-block;font-size:1.2rem;padding:.8rem 1.6rem;border-width:2px;border-style:solid;border-radius:4px;transition:background-color var(--t-color);box-sizing:border-box}.home .hero .action-button.primary{color:var(--c-bg);background-color:var(--c-brand);border-color:var(--c-brand)}.home .hero .action-button.primary:hover{background-color:var(--c-brand-light)}.home .hero .action-button.secondary{color:var(--c-brand);background-color:var(--c-bg);border-color:var(--c-brand)}.home .hero .action-button.secondary:hover{color:var(--c-bg);background-color:var(--c-brand-light)}.home .features{border-top:1px solid var(--c-border);transition:border-color var(--t-color);padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:var(--c-text-light)}.home .feature p{color:var(--c-text-lighter)}.home .theme-default-content{padding:0;margin:0}.home .footer{padding:2.5rem;border-top:1px solid var(--c-border);text-align:center;color:var(--c-text-lighter);transition:border-color var(--t-color)}@media (max-width: 719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width: 419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero h1,.home .hero .description,.home .hero .actions{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.page{padding-top:var(--navbar-height);padding-left:var(--sidebar-width)}.navbar{position:fixed;z-index:20;top:0;left:0;right:0;height:var(--navbar-height);box-sizing:border-box;border-bottom:1px solid var(--c-border);background-color:var(--c-bg-navbar);transition:background-color var(--t-color),border-color var(--t-color)}.sidebar{font-size:16px;width:var(--sidebar-width);position:fixed;z-index:10;margin:0;top:var(--navbar-height);left:0;bottom:0;box-sizing:border-box;border-right:1px solid var(--c-border);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--c-brand) var(--c-border);background-color:var(--c-bg-sidebar);transition:transform var(--t-transform),background-color var(--t-color),border-color var(--t-color)}.sidebar::-webkit-scrollbar{width:7px}.sidebar::-webkit-scrollbar-track{background-color:var(--c-border)}.sidebar::-webkit-scrollbar-thumb{background-color:var(--c-brand)}.sidebar-mask{position:fixed;z-index:9;top:0;left:0;width:100vw;height:100vh;display:none}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(1){transform:rotate(45deg) translate3d(5.5px,5.5px,0)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(2){transform:scale3d(0,1,1)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(3){transform:rotate(-45deg) translate3d(6px,-6px,0)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(1),.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(3){transform-origin:center}.theme-container.no-navbar .theme-default-content h1,.theme-container.no-navbar .theme-default-content h2,.theme-container.no-navbar .theme-default-content h3,.theme-container.no-navbar .theme-default-content h4,.theme-container.no-navbar .theme-default-content h5,.theme-container.no-navbar .theme-default-content h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .page{padding-top:0}.theme-container.no-navbar .sidebar{top:0}.theme-container.no-sidebar .sidebar{display:none}@media (max-width: 719px){.theme-container.no-sidebar .sidebar{display:block}}.theme-container.no-sidebar .page{padding-left:0}.theme-default-content a:not(.header-anchor):hover{text-decoration:underline}.theme-default-content img{max-width:100%}.theme-default-content h1,.theme-default-content h2,.theme-default-content h3,.theme-default-content h4,.theme-default-content h5,.theme-default-content h6{margin-top:calc(.5rem - var(--navbar-height));padding-top:calc(1rem + var(--navbar-height));margin-bottom:0}.theme-default-content h1:first-child,.theme-default-content h2:first-child,.theme-default-content h3:first-child,.theme-default-content h4:first-child,.theme-default-content h5:first-child,.theme-default-content h6:first-child{margin-bottom:1rem}.theme-default-content h1:first-child+p,.theme-default-content h1:first-child+pre,.theme-default-content h1:first-child+.custom-container,.theme-default-content h2:first-child+p,.theme-default-content h2:first-child+pre,.theme-default-content h2:first-child+.custom-container,.theme-default-content h3:first-child+p,.theme-default-content h3:first-child+pre,.theme-default-content h3:first-child+.custom-container,.theme-default-content h4:first-child+p,.theme-default-content h4:first-child+pre,.theme-default-content h4:first-child+.custom-container,.theme-default-content h5:first-child+p,.theme-default-content h5:first-child+pre,.theme-default-content h5:first-child+.custom-container,.theme-default-content h6:first-child+p,.theme-default-content h6:first-child+pre,.theme-default-content h6:first-child+.custom-container{margin-top:2rem}@media (max-width: 959px){.sidebar{font-size:15px;width:var(--sidebar-width-mobile)}.page{padding-left:var(--sidebar-width-mobile)}}@media (max-width: 719px){.sidebar{top:0;padding-top:var(--navbar-height);transform:translate(-100%)}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translate(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width: 419px){h1{font-size:1.9rem}}#vp-comment{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){#vp-comment{padding:2rem}}@media (max-width: 419px){#vp-comment{padding:1.5rem}}.navbar{--navbar-line-height: calc( var(--navbar-height) - 2 * var(--navbar-padding-v) );padding:var(--navbar-padding-v) var(--navbar-padding-h);line-height:var(--navbar-line-height)}.navbar .logo{height:var(--navbar-line-height);margin-right:var(--navbar-padding-v);vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:var(--c-text);position:relative}.navbar .navbar-items-wrapper{display:flex;position:absolute;box-sizing:border-box;top:var(--navbar-padding-v);right:var(--navbar-padding-h);height:var(--navbar-line-height);padding-left:var(--navbar-padding-h);white-space:nowrap;font-size:.9rem}.navbar .navbar-items-wrapper .search-box{flex:0 0 auto;vertical-align:top}@media screen and (max-width: 719px){.navbar{padding-left:4rem}.navbar .site-name{display:block;width:calc(100vw - 11rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.navbar .can-hide{display:none}}.navbar-items{display:inline-block}@media print{.navbar-items{display:none}}.navbar-items a{display:inline-block;line-height:1.4rem;color:inherit}.navbar-items a:hover,.navbar-items a.route-link-active{color:var(--c-text)}.navbar-items .navbar-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:var(--navbar-line-height)}.navbar-items .navbar-item:first-child{margin-left:0}.navbar-items .navbar-item>a:hover,.navbar-items .navbar-item>a.route-link-active{margin-bottom:-2px;border-bottom:2px solid var(--c-text-accent)}@media (max-width: 719px){.navbar-items .navbar-item{margin-left:0}.navbar-items .navbar-item>a:hover,.navbar-items .navbar-item>a.route-link-active{margin-bottom:0;border-bottom:none}.navbar-items a:hover,.navbar-items a.route-link-active{color:var(--c-text-accent)}}.toggle-sidebar-button{position:absolute;top:.6rem;left:1rem;display:none;padding:.6rem;cursor:pointer}.toggle-sidebar-button .icon{display:flex;flex-direction:column;justify-content:center;align-items:center;width:1.25rem;height:1.25rem;cursor:inherit}.toggle-sidebar-button .icon span{display:inline-block;width:100%;height:2px;border-radius:2px;background-color:var(--c-text);transition:transform var(--t-transform)}.toggle-sidebar-button .icon span:nth-child(2){margin:6px 0}@media screen and (max-width: 719px){.toggle-sidebar-button{display:block}}.toggle-color-mode-button{display:flex;margin:auto;margin-left:1rem;border:0;background:none;color:var(--c-text);opacity:.8;cursor:pointer}@media print{.toggle-color-mode-button{display:none}}.toggle-color-mode-button:hover{opacity:1}.toggle-color-mode-button .icon{width:1.25rem;height:1.25rem}.DocSearch{transition:background-color var(--t-color)}.navbar-dropdown-wrapper{cursor:pointer}.navbar-dropdown-wrapper .navbar-dropdown-title,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:var(--c-text)}.navbar-dropdown-wrapper .navbar-dropdown-title:hover,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile:hover{border-color:transparent}.navbar-dropdown-wrapper .navbar-dropdown-title .arrow,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.navbar-dropdown-wrapper .navbar-dropdown-title-mobile{display:none;font-weight:600;font-size:inherit}.navbar-dropdown-wrapper .navbar-dropdown-title-mobile:hover{color:var(--c-text-accent)}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item{color:inherit;line-height:1.7rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle{margin:.45rem 0 0;border-top:1px solid var(--c-border);padding:1rem 0 .45rem;font-size:.9rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>span{padding:0 1.5rem 0 1.25rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>a{font-weight:inherit}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>a.route-link-active:after{display:none}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem-wrapper{padding:0;list-style:none}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem-wrapper .navbar-dropdown-subitem{font-size:.9em}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a:hover,.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.route-link-active{color:var(--c-text-accent)}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.route-link-active:after{content:"";width:0;height:0;border-left:5px solid var(--c-text-accent);border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item:first-child .navbar-dropdown-subtitle{margin-top:0;padding-top:0;border-top:0}.navbar-dropdown-wrapper.mobile.open .navbar-dropdown-title,.navbar-dropdown-wrapper.mobile.open .navbar-dropdown-title-mobile{margin-bottom:.5rem}.navbar-dropdown-wrapper.mobile .navbar-dropdown-title,.navbar-dropdown-wrapper.mobile .navbar-dropdown-title-mobile{display:none}.navbar-dropdown-wrapper.mobile .navbar-dropdown-title-mobile{display:block}.navbar-dropdown-wrapper.mobile .navbar-dropdown{transition:height .1s ease-out;overflow:hidden}.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle{border-top:0;margin-top:0;padding-top:0;padding-bottom:0}.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle,.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item>a{font-size:15px;line-height:2rem}.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem{font-size:14px;padding-left:1rem}.navbar-dropdown-wrapper:not(.mobile){height:1.8rem}.navbar-dropdown-wrapper:not(.mobile):hover .navbar-dropdown,.navbar-dropdown-wrapper:not(.mobile).open .navbar-dropdown{display:block!important}.navbar-dropdown-wrapper:not(.mobile).open:blur{display:none}.navbar-dropdown-wrapper:not(.mobile) .navbar-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:var(--c-bg-navbar);padding:.6rem 0;border:1px solid var(--c-border);border-bottom-color:var(--c-border-dark);text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}.page{padding-bottom:2rem;display:block}.page .theme-default-content{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem;padding-top:0}@media (max-width: 959px){.page .theme-default-content{padding:2rem}}@media (max-width: 419px){.page .theme-default-content{padding:1.5rem}}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .navbar-items{display:none;border-bottom:1px solid var(--c-border);transition:border-color var(--t-color);padding:.5rem 0 .75rem}.sidebar .navbar-items a{font-weight:600}.sidebar .navbar-items .navbar-item{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar .sidebar-items{padding:1.5rem 0}@media (max-width: 719px){.sidebar .navbar-items{display:block}.sidebar .navbar-items .navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.route-link-active:after{top:calc(1rem - 2px)}.sidebar .sidebar-items{padding:1rem 0}}.sidebar-item{cursor:default;border-left:.25rem solid transparent;color:var(--c-text)}.sidebar-item:focus-visible{outline-width:1px;outline-offset:-1px}.sidebar-item.active:not(p.sidebar-heading){font-weight:600;color:var(--c-text-accent);border-left-color:var(--c-text-accent)}.sidebar-item.sidebar-heading{transition:color .15s ease;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0}.sidebar-item.sidebar-heading+.sidebar-item-children{transition:height .1s ease-out;overflow:hidden;margin-bottom:.75rem}.sidebar-item.collapsible{cursor:pointer}.sidebar-item.collapsible .arrow{position:relative;top:-.12em;left:.5em}.sidebar-item:not(.sidebar-heading){font-size:1em;font-weight:400;display:inline-block;margin:0;padding:.35rem 1rem .35rem 2rem;line-height:1.4;width:100%;box-sizing:border-box}.sidebar-item:not(.sidebar-heading)+.sidebar-item-children{padding-left:1rem;font-size:.95em}.sidebar-item-children .sidebar-item-children .sidebar-item:not(.sidebar-heading){padding:.25rem 1rem .25rem 1.75rem}.sidebar-item-children .sidebar-item-children .sidebar-item:not(.sidebar-heading).active{font-weight:500;border-left-color:transparent}a.sidebar-heading+.sidebar-item-children .sidebar-item:not(.sidebar-heading).active{border-left-color:transparent}a.sidebar-item{cursor:pointer}a.sidebar-item:hover{color:var(--c-text-accent)}.table-of-contents .badge{vertical-align:middle}.dropdown-enter-from,.dropdown-leave-to{height:0!important}.fade-slide-y-enter-active{transition:all .2s ease}.fade-slide-y-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.fade-slide-y-enter-from,.fade-slide-y-leave-to{transform:translateY(10px);opacity:0}.figure-left{text-align:left}.figure-right{text-align:right}.figure-center{text-align:center}:root{--search-bg-color: #ffffff;--search-accent-color: #3eaf7c;--search-text-color: #2c3e50;--search-border-color: #eaecef;--search-item-text-color: #5d81a5;--search-item-focus-bg-color: #f3f4f5;--search-input-width: 8rem;--search-result-width: 20rem}.search-box{display:inline-block;position:relative;margin-left:1rem}@media print{.search-box{display:none}}.search-box input{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:text;width:var(--search-input-width);height:2rem;color:var(--search-text-color);display:inline-block;border:1px solid var(--search-border-color);border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all ease .3s;background:var(--search-bg-color) url("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='13'%3e%3cg%20stroke-width='2'%20stroke='%23aaa'%20fill='none'%3e%3cpath%20d='M11.29%2011.71l-4-4'/%3e%3ccircle%20cx='5'%20cy='5'%20r='4'/%3e%3c/g%3e%3c/svg%3e") .6rem .5rem no-repeat;background-size:1rem}@media (max-width: 719px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}}.search-box input:focus{cursor:auto;border-color:var(--search-accent-color)}@media (max-width: 719px){.search-box input:focus{cursor:text;left:0;width:10rem}}@media (max-width: 419px){.search-box input:focus{width:8rem}}.search-box .suggestions{background:var(--search-bg-color);width:var(--search-result-width);position:absolute;top:2rem;right:0;border:1px solid var(--search-border-color);border-radius:6px;padding:.4rem;list-style-type:none}@media (max-width: 419px){.search-box .suggestions{width:calc(100vw - 4rem);right:-.5rem}}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:var(--search-item-text-color)}.search-box .suggestion.focus{background-color:var(--search-item-focus-bg-color)}.search-box .suggestion.focus a{color:var(--search-accent-color)}.search-box .suggestion .page-title{font-weight:600}.search-box .suggestion .page-header{font-size:.9em;margin-left:.25em}.sidebar{display:flex;flex-direction:column;justify-content:space-between}.vue-press-information{text-align:center;width:100%;font-size:12px;padding:1.5em;box-sizing:border-box}@media screen and (max-width: 720px){.vue-press-information{position:relative}}
diff --git a/assets/tables.html-BkPAyJ3-.js b/assets/tables.html-BkPAyJ3-.js
new file mode 100644
index 00000000..2770520d
--- /dev/null
+++ b/assets/tables.html-BkPAyJ3-.js
@@ -0,0 +1 @@
+import{_ as i,r as n,c as s,a as e,d as t,e as a,w as o,b as d,o as l}from"./app-Bwgh_xIT.js";const c={},h=d('This file auto-generated 2022-02-08 10:47:05 -0600 via 'rake tw:docs:table_markdown'. Do not hand-edit.
alternate_values , asserted_distributions , attributions , biocuration_classifications , biological_associations , biological_associations_biological_associations_graphs , biological_associations_graphs , biological_relationship_types , biological_relationships , character_states , citation_topics , citations , collecting_events , collection_object_observations , collection_objects , collection_profiles , common_names , confidences , container_items , containers , contents , controlled_vocabulary_terms , data_attributes , dataset_record_fields , dataset_records , depictions , derived_collection_objects , descriptors , documentation , documents , extracts , gene_attributes , geographic_area_types , geographic_areas , geographic_areas_geographic_items , geographic_items , georeferences , identifiers , images , import_datasets , labels , languages , loan_items , loans , namespaces , notes , observation_matrices , observation_matrix_column_items , observation_matrix_columns , observation_matrix_row_items , observation_matrix_rows , observations , organizations , origin_relationships , otu_page_layout_sections , otu_page_layouts , otus , people , preparation_types , project_members , project_sources , protocol_relationships , protocols , ranged_lot_categories , repositories , roles , sequence_relationships , sequences , serial_chronologies , serials , sled_images , sources , tagged_section_keywords , tags , taxon_determinations , taxon_name_classifications , taxon_name_relationships , taxon_names , type_materials
',4),_=e("a",{href:"#tables"},"top",-1),p=e("a",{href:"https://rdoc.taxonworks.org/AlternateValue.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),g=d('Name Type id integer alternate_value_object_attribute character varying alternate_value_object_id integer alternate_value_object_type character varying language _idinteger type character varying value text created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),m=e("a",{href:"#tables"},"top",-1),b=e("a",{href:"https://rdoc.taxonworks.org/AssertedDistribution.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),u=e("a",{href:"https://api.taxonworks.org/#/asserted_distributions",target:"_blank",rel:"noopener noreferrer"},"api",-1),y=d('Name Type id integer geographic_area_id integer is_absent boolean otu _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),f=e("a",{href:"#tables"},"top",-1),v=e("a",{href:"https://rdoc.taxonworks.org/Attribution.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),x=d('Name Type id bigint attribution_object_id bigint attribution_object_type character varying copyright_year integer license character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id bigint
',2),w=e("a",{href:"#tables"},"top",-1),k=e("a",{href:"https://rdoc.taxonworks.org/BiocurationClassification.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),j=d('Name Type id integer biocuration_class _idinteger biological_collection_object _idinteger position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),z=e("a",{href:"#tables"},"top",-1),T=e("a",{href:"https://rdoc.taxonworks.org/BiologicalAssociation.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),D=e("a",{href:"https://api.taxonworks.org/#/biological_associations",target:"_blank",rel:"noopener noreferrer"},"api",-1),N=d('Name Type id integer biological_association_object_id integer biological_association_object_type character varying biological_association_subject_id integer biological_association_subject_type character varying biological_relationship_id integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),q=e("a",{href:"#tables"},"top",-1),C=e("a",{href:"https://rdoc.taxonworks.org/BiologicalAssociationsBiologicalAssociationsGraph.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),O=d('Name Type id integer biological_association_id integer biological_associations_graph_id integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),R=e("a",{href:"#tables"},"top",-1),S=e("a",{href:"https://rdoc.taxonworks.org/BiologicalAssociationsGraph.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),P=d('Name Type id integer name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),A=e("a",{href:"#tables"},"top",-1),I=e("a",{href:"https://rdoc.taxonworks.org/BiologicalRelationshipType.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),L=d('Name Type id integer biological_property_id integer biological_relationship_id integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),B=e("a",{href:"#tables"},"top",-1),G=e("a",{href:"https://rdoc.taxonworks.org/BiologicalRelationship.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),M=d('Name Type id integer definition text inverted_name character varying is_reflexive boolean is_transitive boolean name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Z=e("a",{href:"#tables"},"top",-1),V=e("a",{href:"https://rdoc.taxonworks.org/CharacterState.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),E=d('Name Type id integer description_name character varying descriptor _idinteger key_name character varying label character varying name character varying position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),F=e("a",{href:"#tables"},"top",-1),J=e("a",{href:"https://rdoc.taxonworks.org/CitationTopic.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),K=d('Name Type id integer citation _idinteger pages character varying topic _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),U=e("a",{href:"#tables"},"top",-1),H=e("a",{href:"https://rdoc.taxonworks.org/Citation.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Q=e("a",{href:"https://api.taxonworks.org/#/citations",target:"_blank",rel:"noopener noreferrer"},"api",-1),W=d('Name Type id integer citation_object_id integer citation_object_type character varying is_original boolean pages character varying source _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),X=e("a",{href:"#tables"},"top",-1),Y=e("a",{href:"https://rdoc.taxonworks.org/CollectingEvent.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),$=e("a",{href:"https://api.taxonworks.org/#/collecting_events",target:"_blank",rel:"noopener noreferrer"},"api",-1),tt=d('Name Type id integer cached text cached_level0_geographic_name character varying cached_level1_geographic_name character varying cached_level2_geographic_name character varying document_label text elevation_precision character varying end_date_day integer end_date_month integer end_date_year integer field_notes text formation character varying geographic_area_id integer group character varying lithology character varying max_ma numeric maximum_elevation numeric md5_of_verbatim_label character varying member character varying min_ma numeric minimum_elevation numeric print_label text start_date_day integer start_date_month integer start_date_year integer time_end_hour smallint time_end_minute smallint time_end_second smallint time_start_hour smallint time_start_minute smallint time_start_second smallint verbatim_collectors character varying verbatim_date character varying verbatim_datum character varying verbatim_elevation character varying verbatim_geolocation_uncertainty character varying verbatim_habitat text verbatim_label text verbatim_latitude character varying verbatim_locality character varying verbatim_longitude character varying verbatim_method character varying verbatim_trip_identifier character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),et=e("a",{href:"#tables"},"top",-1),dt=e("a",{href:"https://rdoc.taxonworks.org/CollectionObjectObservation.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),rt=d('Name Type id integer data text created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),at=e("a",{href:"#tables"},"top",-1),ot=e("a",{href:"https://rdoc.taxonworks.org/CollectionObject.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),it=e("a",{href:"https://api.taxonworks.org/#/collection_objects",target:"_blank",rel:"noopener noreferrer"},"api",-1),nt=d('Name Type id integer accessioned_at date buffered_collecting_event text buffered_determinations text buffered_other_labels text collecting_event_id integer deaccession_reason character varying deaccessioned_at date preparation_type_id integer ranged_lot_category_id integer repository _idinteger total integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),st=e("a",{href:"#tables"},"top",-1),lt=e("a",{href:"https://rdoc.taxonworks.org/CollectionProfile.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ct=d('Name Type id integer arrangement_level integer collection_type character varying computerization_level integer condition_of_labels integer conservation_status integer container_condition integer container _idinteger data_quality integer identification_level integer number_of_collection_objects integer number_of_containers integer otu _idinteger processing_state integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),ht=e("a",{href:"#tables"},"top",-1),_t=e("a",{href:"https://rdoc.taxonworks.org/CommonName.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),pt=d('Name Type id integer end_year integer geographic_area_id integer language _idinteger name character varying otu _idinteger start_year integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),gt=e("a",{href:"#tables"},"top",-1),mt=e("a",{href:"https://rdoc.taxonworks.org/Confidence.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),bt=d('Name Type id integer confidence_level_id integer confidence_object_id integer confidence_object_type character varying position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),ut=e("a",{href:"#tables"},"top",-1),yt=e("a",{href:"https://rdoc.taxonworks.org/ContainerItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ft=d('Name Type id integer contained_object_id integer contained_object_type character varying disposition character varying disposition_x integer disposition_y integer disposition_z integer parent_id integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),vt=e("a",{href:"#tables"},"top",-1),xt=e("a",{href:"https://rdoc.taxonworks.org/Container.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),wt=d('Name Type id integer disposition character varying name character varying print_label text size_x integer size_y integer size_z integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),kt=e("a",{href:"#tables"},"top",-1),jt=e("a",{href:"https://rdoc.taxonworks.org/Content.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),zt=e("a",{href:"https://api.taxonworks.org/#/contents",target:"_blank",rel:"noopener noreferrer"},"api",-1),Tt=d('Name Type id integer language _idbigint otu _idinteger revision_id integer text text topic _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Dt=e("a",{href:"#tables"},"top",-1),Nt=e("a",{href:"https://rdoc.taxonworks.org/ControlledVocabularyTerm.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),qt=d('Name Type id integer css_color character varying definition text name character varying position integer type character varying uri character varying uri_relation character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Ct=e("a",{href:"#tables"},"top",-1),Ot=e("a",{href:"https://rdoc.taxonworks.org/DataAttribute.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Rt=e("a",{href:"https://api.taxonworks.org/#/data_attributes",target:"_blank",rel:"noopener noreferrer"},"api",-1),St=d('Name Type id integer attribute_subject_id integer attribute_subject_type character varying controlled_vocabulary_term_id integer import_predicate character varying type character varying value text created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Pt=e("a",{href:"#tables"},"top",-1),At=e("a",{href:"https://rdoc.taxonworks.org/DatasetRecordField.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),It=d('Name Type id bigint dataset_record_id bigint encoded_dataset_record_type integer import_dataset_id integer position integer value character varying project_id integer
',2),Lt=e("a",{href:"#tables"},"top",-1),Bt=e("a",{href:"https://rdoc.taxonworks.org/DatasetRecord.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Gt=d('Name Type id bigint import_dataset_id bigint metadata jsonb status character varying type character varying created_by_id integer updated_by_id integer created_at timestamp(6) without time zone updated_at timestamp(6) without time zone project_id bigint
',2),Mt=e("a",{href:"#tables"},"top",-1),Zt=e("a",{href:"https://rdoc.taxonworks.org/Depiction.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Vt=d('Name Type id integer caption text depiction_object_id integer depiction_object_type character varying figure_label character varying image _idinteger is_metadata_depiction boolean position integer sled_image_id bigint sled_image_x_position integer sled_image_y_position integer svg_clip xml svg_view_box character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Et=e("a",{href:"#tables"},"top",-1),Ft=e("a",{href:"https://rdoc.taxonworks.org/DerivedCollectionObject.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Jt=d('Name Type id integer collection_object_id integer collection_object_observation_id integer position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Kt=e("a",{href:"#tables"},"top",-1),Ut=e("a",{href:"https://rdoc.taxonworks.org/Descriptor.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ht=d('Name Type id integer cached_gene_attribute_sql character varying default_unit character varying description text description_name character varying gene_attribute_logic character varying key_name character varying name character varying position integer short_name character varying type character varying weight integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Qt=e("a",{href:"#tables"},"top",-1),Wt=e("a",{href:"https://rdoc.taxonworks.org/Documentation.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Xt=d('Name Type id integer document _idinteger documentation_object_id integer documentation_object_type character varying position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Yt=e("a",{href:"#tables"},"top",-1),$t=e("a",{href:"https://rdoc.taxonworks.org/Document.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),te=d('Name Type id integer document_file_content_type character varying document_file_file_name character varying document_file_file_size integer document_file_fingerprint character varying document_file_updated_at timestamp without time zone is_public boolean page_map jsonb page_total integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),ee=e("a",{href:"#tables"},"top",-1),de=e("a",{href:"https://rdoc.taxonworks.org/Extract.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),re=d('Name Type id integer day_made integer month_made integer repository _idbigint verbatim_anatomical_origin character varying year_made integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),ae=e("a",{href:"#tables"},"top",-1),oe=e("a",{href:"https://rdoc.taxonworks.org/GeneAttribute.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ie=d('Name Type id integer controlled_vocabulary_term_id integer descriptor _idinteger position integer sequence _idinteger sequence_relationship_type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),ne=e("a",{href:"#tables"},"top",-1),se=e("a",{href:"https://rdoc.taxonworks.org/GeographicAreaType.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),le=d('Name Type id integer name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),ce=e("a",{href:"#tables"},"top",-1),he=e("a",{href:"https://rdoc.taxonworks.org/GeographicArea.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),_e=d('Name Type id integer data_origin character varying geographic_area_type_id integer iso_3166_a2 character varying iso_3166_a3 character varying level0_id integer level1_id integer level2_id integer name character varying parent_id integer tdwgID character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),pe=e("a",{href:"#tables"},"top",-1),ge=e("a",{href:"https://rdoc.taxonworks.org/GeographicAreasGeographicItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),me=d('Name Type id integer data_origin character varying date_valid_from character varying date_valid_to character varying geographic_area_id integer geographic_item_id integer origin_gid integer created_at timestamp without time zone updated_at timestamp without time zone
',2),be=e("a",{href:"#tables"},"top",-1),ue=e("a",{href:"https://rdoc.taxonworks.org/GeographicItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ye=d('Name Type id integer geometry_collection geography(GeometryCollectionZ,4326) line_string geography(LineStringZ,4326) multi_line_string geography(MultiLineStringZ,4326) multi_point geography(MultiPointZ,4326) multi_polygon geography(MultiPolygonZ,4326) point geography(PointZ,4326) polygon geography(PolygonZ,4326) type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),fe=e("a",{href:"#tables"},"top",-1),ve=e("a",{href:"https://rdoc.taxonworks.org/Georeference.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),xe=d('Name Type id integer api_request character varying collecting_event_id integer day_georeferenced integer error_depth numeric error_geographic_item_id integer error_radius numeric geographic_item_id integer is_median_z boolean is_public boolean is_undefined_z boolean month_georeferenced integer position integer type character varying year_georeferenced integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),we=e("a",{href:"#tables"},"top",-1),ke=e("a",{href:"https://rdoc.taxonworks.org/Identifier.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),je=e("a",{href:"https://api.taxonworks.org/#/identifiers",target:"_blank",rel:"noopener noreferrer"},"api",-1),ze=d('Name Type id integer cached text identifier character varying identifier_object_id integer identifier_object_type character varying namespace _idinteger position integer relation character varying type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Te=e("a",{href:"#tables"},"top",-1),De=e("a",{href:"https://rdoc.taxonworks.org/Image.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ne=e("a",{href:"https://api.taxonworks.org/#/images",target:"_blank",rel:"noopener noreferrer"},"api",-1),qe=d('Name Type id integer height integer image_file_content_type character varying image_file_file_name character varying image_file_file_size integer image_file_fingerprint character varying image_file_meta text image_file_updated_at timestamp without time zone pixels_to_centimeter double precision user_file_name character varying width integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Ce=e("a",{href:"#tables"},"top",-1),Oe=e("a",{href:"https://rdoc.taxonworks.org/ImportDataset.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Re=d('Name Type id bigint description character varying metadata jsonb source_content_type character varying source_file_name character varying source_file_size bigint source_updated_at timestamp without time zone status character varying type character varying created_by_id integer updated_by_id integer created_at timestamp(6) without time zone updated_at timestamp(6) without time zone project_id bigint
',2),Se=e("a",{href:"#tables"},"top",-1),Pe=e("a",{href:"https://rdoc.taxonworks.org/Label.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ae=d('Name Type id bigint is_copy_edited boolean is_printed boolean label_object_id bigint label_object_type character varying style character varying text character varying total integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Ie=e("a",{href:"#tables"},"top",-1),Le=e("a",{href:"https://rdoc.taxonworks.org/Language.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Be=d('Name Type id integer alpha_2 character varying alpha_3_bibliographic character varying alpha_3_terminologic character varying english_name character varying french_name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),Ge=e("a",{href:"#tables"},"top",-1),Me=e("a",{href:"https://rdoc.taxonworks.org/LoanItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ze=d('Name Type id integer date_returned date disposition character varying loan _idinteger loan_item_object_id integer loan_item_object_type character varying position integer total integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Ve=e("a",{href:"#tables"},"top",-1),Ee=e("a",{href:"https://rdoc.taxonworks.org/Loan.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Fe=d('Name Type id integer date_closed date date_received date date_requested date date_return_expected date date_sent date is_gift boolean lender_address text recipient_address character varying recipient_country character varying recipient_email character varying recipient_honorific character varying recipient_phone character varying request_method character varying supervisor_email character varying supervisor_phone character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Je=e("a",{href:"#tables"},"top",-1),Ke=e("a",{href:"https://rdoc.taxonworks.org/Namespace.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ue=d('Name Type id integer delimiter character varying institution character varying is_virtual boolean name character varying short_name character varying verbatim_short_name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),He=e("a",{href:"#tables"},"top",-1),Qe=e("a",{href:"https://rdoc.taxonworks.org/Note.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),We=e("a",{href:"https://api.taxonworks.org/#/notes",target:"_blank",rel:"noopener noreferrer"},"api",-1),Xe=d('Name Type id integer note_object_attribute character varying note_object_id integer note_object_type character varying text text created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Ye=e("a",{href:"#tables"},"top",-1),$e=e("a",{href:"https://rdoc.taxonworks.org/ObservationMatrix.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),td=e("a",{href:"https://api.taxonworks.org/#/observation_matrices",target:"_blank",rel:"noopener noreferrer"},"api",-1),ed=d('Name Type id integer name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),dd=e("a",{href:"#tables"},"top",-1),rd=e("a",{href:"https://rdoc.taxonworks.org/ObservationMatrixColumnItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ad=d('Name Type id integer controlled_vocabulary_term_id integer descriptor _idinteger observation_matrix_id integer position integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),od=e("a",{href:"#tables"},"top",-1),id=e("a",{href:"https://rdoc.taxonworks.org/ObservationMatrixColumn.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),nd=d('Name Type id integer cached_observation_matrix_column_item_id integer descriptor _idinteger observation_matrix_id integer position integer reference_count integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),sd=e("a",{href:"#tables"},"top",-1),ld=e("a",{href:"https://rdoc.taxonworks.org/ObservationMatrixRowItem.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),cd=d('Name Type id integer collection_object_id integer controlled_vocabulary_term_id integer observation_matrix_id integer otu _idinteger position integer taxon_name_id bigint type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),hd=e("a",{href:"#tables"},"top",-1),_d=e("a",{href:"https://rdoc.taxonworks.org/ObservationMatrixRow.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),pd=d('Name Type id integer cached_observation_matrix_row_item_id integer collection_object_id integer name character varying observation_matrix_id integer otu _idinteger position integer reference_count integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),gd=e("a",{href:"#tables"},"top",-1),md=e("a",{href:"https://rdoc.taxonworks.org/Observation.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),bd=e("a",{href:"https://api.taxonworks.org/#/observations",target:"_blank",rel:"noopener noreferrer"},"api",-1),ud=d('Name Type id integer cached character varying cached_column_label character varying cached_row_label character varying character_state_id integer collection_object_id integer continuous_unit character varying continuous_value numeric description text descriptor _idinteger frequency character varying otu _idinteger presence boolean sample_max numeric sample_mean numeric sample_median numeric sample_min numeric sample_n integer sample_standard_deviation numeric sample_standard_error numeric sample_units character varying type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),yd=e("a",{href:"#tables"},"top",-1),fd=e("a",{href:"https://rdoc.taxonworks.org/Organization.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),vd=d('Name Type id bigint address character varying alternate_name character varying area_served_id integer department_id integer description text disambiguating_description text duns character varying email character varying global_location_number character varying legal_name character varying name character varying parent_organization_id integer same_as_id integer telephone character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),xd=e("a",{href:"#tables"},"top",-1),wd=e("a",{href:"https://rdoc.taxonworks.org/OriginRelationship.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),kd=d('Name Type id integer new_object_id integer new_object_type character varying old_object_id integer old_object_type character varying position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),jd=e("a",{href:"#tables"},"top",-1),zd=e("a",{href:"https://rdoc.taxonworks.org/OtuPageLayoutSection.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Td=d('Name Type id integer dynamic_content_class character varying otu_page_layout_id integer position integer topic _idinteger type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Dd=e("a",{href:"#tables"},"top",-1),Nd=e("a",{href:"https://rdoc.taxonworks.org/OtuPageLayout.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),qd=d('Name Type id integer name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Cd=e("a",{href:"#tables"},"top",-1),Od=e("a",{href:"https://rdoc.taxonworks.org/Otu.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Rd=e("a",{href:"https://api.taxonworks.org/#/otus",target:"_blank",rel:"noopener noreferrer"},"api",-1),Sd=d('Name Type id integer name character varying taxon_name_id integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Pd=e("a",{href:"#tables"},"top",-1),Ad=e("a",{href:"https://rdoc.taxonworks.org/Person.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Id=e("a",{href:"https://api.taxonworks.org/#/people",target:"_blank",rel:"noopener noreferrer"},"api",-1),Ld=d('Name Type id integer cached text first_name character varying last_name character varying prefix character varying suffix character varying type character varying year_active_end integer year_active_start integer year_born integer year_died integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),Bd=e("a",{href:"#tables"},"top",-1),Gd=e("a",{href:"https://rdoc.taxonworks.org/PreparationType.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Md=d('Name Type id integer definition text name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),Zd=e("a",{href:"#tables"},"top",-1),Vd=e("a",{href:"https://rdoc.taxonworks.org/ProjectMember.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ed=d('Name Type id integer clipboard jsonb is_project_administrator boolean user_id integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Fd=e("a",{href:"#tables"},"top",-1),Jd=e("a",{href:"https://rdoc.taxonworks.org/ProjectSource.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Kd=d('Name Type id integer source _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Ud=e("a",{href:"#tables"},"top",-1),Hd=e("a",{href:"https://rdoc.taxonworks.org/ProtocolRelationship.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Qd=d('Name Type id integer position integer protocol _idinteger protocol_relationship_object_id integer protocol_relationship_object_type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Wd=e("a",{href:"#tables"},"top",-1),Xd=e("a",{href:"https://rdoc.taxonworks.org/Protocol.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Yd=d('Name Type id integer description text name character varying short_name text created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),$d=e("a",{href:"#tables"},"top",-1),tr=e("a",{href:"https://rdoc.taxonworks.org/RangedLotCategory.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),er=d('Name Type id integer maximum_value integer minimum_value integer name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),dr=e("a",{href:"#tables"},"top",-1),rr=e("a",{href:"https://rdoc.taxonworks.org/Repository.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),ar=d('Name Type id integer acronym character varying institutional_LSID character varying is_index_herbariorum boolean name character varying status character varying url character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),or=e("a",{href:"#tables"},"top",-1),ir=e("a",{href:"https://rdoc.taxonworks.org/Role.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),nr=d('Name Type id integer organization _idbigint person _idinteger position integer role_object_id integer role_object_type character varying type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),sr=e("a",{href:"#tables"},"top",-1),lr=e("a",{href:"https://rdoc.taxonworks.org/SequenceRelationship.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),cr=d('Name Type id integer object_sequence _idinteger subject_sequence _idinteger type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),hr=e("a",{href:"#tables"},"top",-1),_r=e("a",{href:"https://rdoc.taxonworks.org/Sequence.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),pr=d('Name Type id integer name character varying sequence text sequence_type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),gr=e("a",{href:"#tables"},"top",-1),mr=e("a",{href:"https://rdoc.taxonworks.org/SerialChronology.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),br=d('Name Type id integer preceding_serial _idinteger succeeding_serial _idinteger type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),ur=e("a",{href:"#tables"},"top",-1),yr=e("a",{href:"https://rdoc.taxonworks.org/Serial.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),fr=d('Name Type id integer first_year_of_issue smallint last_year_of_issue smallint name text place_published character varying primary_language _idinteger publisher text translated_from_serial _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),vr=e("a",{href:"#tables"},"top",-1),xr=e("a",{href:"https://rdoc.taxonworks.org/SledImage.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),wr=d('Name Type id bigint cached_total_collection_objects integer cached_total_columns integer cached_total_rows integer image _idbigint metadata jsonb object_layout jsonb created_by_id integer updated_by_id integer created_at timestamp(6) without time zone updated_at timestamp(6) without time zone project_id bigint
',2),kr=e("a",{href:"#tables"},"top",-1),jr=e("a",{href:"https://rdoc.taxonworks.org/Source.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),zr=e("a",{href:"https://api.taxonworks.org/#/sources",target:"_blank",rel:"noopener noreferrer"},"api",-1),Tr=d('Name Type id integer abstract text address character varying annote character varying author text bibtex_type character varying booktitle character varying cached text cached_author_string text cached_nomenclature_date date chapter character varying copyright text crossref character varying day smallint doi character varying edition character varying editor character varying howpublished character varying institution character varying isbn character varying issn character varying journal character varying key character varying language character varying language _idinteger month character varying note character varying number character varying organization character varying pages character varying publisher character varying school character varying serial _idinteger series character varying stated_year character varying title text translator character varying type character varying url character varying verbatim character varying verbatim_contents text verbatim_keywords text volume character varying year smallint year_suffix character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
',2),Dr=e("a",{href:"#tables"},"top",-1),Nr=e("a",{href:"https://rdoc.taxonworks.org/TaggedSectionKeyword.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),qr=d('Name Type id integer keyword _idinteger otu_page_layout_section_id integer position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Cr=e("a",{href:"#tables"},"top",-1),Or=e("a",{href:"https://rdoc.taxonworks.org/Tag.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Rr=d('Name Type id integer keyword _idinteger position integer tag_object_attribute character varying tag_object_id integer tag_object_type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Sr=e("a",{href:"#tables"},"top",-1),Pr=e("a",{href:"https://rdoc.taxonworks.org/TaxonDetermination.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Ar=d('Name Type id integer biological_collection_object _idinteger day_made integer month_made integer otu _idinteger position integer print_label text year_made integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Ir=e("a",{href:"#tables"},"top",-1),Lr=e("a",{href:"https://rdoc.taxonworks.org/TaxonNameClassification.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Br=e("a",{href:"https://api.taxonworks.org/#/taxon_name_classifications",target:"_blank",rel:"noopener noreferrer"},"api",-1),Gr=d('Name Type id integer taxon_name_id integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Mr=e("a",{href:"#tables"},"top",-1),Zr=e("a",{href:"https://rdoc.taxonworks.org/TaxonNameRelationship.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Vr=e("a",{href:"https://api.taxonworks.org/#/taxon_name_relationships",target:"_blank",rel:"noopener noreferrer"},"api",-1),Er=d('Name Type id integer object_taxon_name_id integer subject_taxon_name_id integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Fr=e("a",{href:"#tables"},"top",-1),Jr=e("a",{href:"https://rdoc.taxonworks.org/TaxonName.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Kr=e("a",{href:"https://api.taxonworks.org/#/taxon_names",target:"_blank",rel:"noopener noreferrer"},"api",-1),Ur=d('Name Type id integer cached character varying cached_author_year character varying cached_classified_as character varying cached_html character varying cached_is_valid boolean cached_misspelling boolean cached_nomenclature_date date cached_original_combination character varying cached_original_combination_html character varying cached_primary_homonym character varying cached_primary_homonym_alternative_spelling character varying cached_secondary_homonym character varying cached_secondary_homonym_alternative_spelling character varying cached_valid_taxon_name_id integer etymology text feminine_name character varying masculine_name character varying name character varying neuter_name character varying parent_id integer rank_class character varying type character varying verbatim_author character varying verbatim_name character varying year_of_publication integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',2),Hr=e("a",{href:"#tables"},"top",-1),Qr=e("a",{href:"https://rdoc.taxonworks.org/TypeMaterial.html",target:"_blank",rel:"noopener noreferrer"},"rdoc",-1),Wr=d('Name Type id integer collection_object_id integer protonym _idinteger type_type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
',1);function Xr(Yr,$r){const r=n("RouteLink");return l(),s("div",null,[h,e("p",null,[_,t(","),a(r,{to:"/develop/Data/models.html#alternate-value"},{default:o(()=>[t("er")]),_:1}),t(","),p]),g,e("p",null,[m,t(","),a(r,{to:"/develop/Data/models.html#asserted-distribution"},{default:o(()=>[t("er")]),_:1}),t(","),b,t(","),u]),y,e("p",null,[f,t(","),a(r,{to:"/develop/Data/models.html#attribution"},{default:o(()=>[t("er")]),_:1}),t(","),v]),x,e("p",null,[w,t(","),a(r,{to:"/develop/Data/models.html#biocuration-classification"},{default:o(()=>[t("er")]),_:1}),t(","),k]),j,e("p",null,[z,t(","),a(r,{to:"/develop/Data/models.html#biological-association"},{default:o(()=>[t("er")]),_:1}),t(","),T,t(","),D]),N,e("p",null,[q,t(","),a(r,{to:"/develop/Data/models.html#biological-associations-biological-associations-graph"},{default:o(()=>[t("er")]),_:1}),t(","),C]),O,e("p",null,[R,t(","),a(r,{to:"/develop/Data/models.html#biological-associations-graph"},{default:o(()=>[t("er")]),_:1}),t(","),S]),P,e("p",null,[A,t(","),a(r,{to:"/develop/Data/models.html#biological-relationship-type"},{default:o(()=>[t("er")]),_:1}),t(","),I]),L,e("p",null,[B,t(","),a(r,{to:"/develop/Data/models.html#biological-relationship"},{default:o(()=>[t("er")]),_:1}),t(","),G]),M,e("p",null,[Z,t(","),a(r,{to:"/develop/Data/models.html#character-state"},{default:o(()=>[t("er")]),_:1}),t(","),V]),E,e("p",null,[F,t(","),a(r,{to:"/develop/Data/models.html#citation-topic"},{default:o(()=>[t("er")]),_:1}),t(","),J]),K,e("p",null,[U,t(","),a(r,{to:"/develop/Data/models.html#citation"},{default:o(()=>[t("er")]),_:1}),t(","),H,t(","),Q]),W,e("p",null,[X,t(","),a(r,{to:"/develop/Data/models.html#collecting-event"},{default:o(()=>[t("er")]),_:1}),t(","),Y,t(","),$]),tt,e("p",null,[et,t(","),a(r,{to:"/develop/Data/models.html#collection-object-observation"},{default:o(()=>[t("er")]),_:1}),t(","),dt]),rt,e("p",null,[at,t(","),a(r,{to:"/develop/Data/models.html#collection-object"},{default:o(()=>[t("er")]),_:1}),t(","),ot,t(","),it]),nt,e("p",null,[st,t(","),a(r,{to:"/develop/Data/models.html#collection-profile"},{default:o(()=>[t("er")]),_:1}),t(","),lt]),ct,e("p",null,[ht,t(","),a(r,{to:"/develop/Data/models.html#common-name"},{default:o(()=>[t("er")]),_:1}),t(","),_t]),pt,e("p",null,[gt,t(","),a(r,{to:"/develop/Data/models.html#confidence"},{default:o(()=>[t("er")]),_:1}),t(","),mt]),bt,e("p",null,[ut,t(","),a(r,{to:"/develop/Data/models.html#container-item"},{default:o(()=>[t("er")]),_:1}),t(","),yt]),ft,e("p",null,[vt,t(","),a(r,{to:"/develop/Data/models.html#container"},{default:o(()=>[t("er")]),_:1}),t(","),xt]),wt,e("p",null,[kt,t(","),a(r,{to:"/develop/Data/models.html#content"},{default:o(()=>[t("er")]),_:1}),t(","),jt,t(","),zt]),Tt,e("p",null,[Dt,t(","),a(r,{to:"/develop/Data/models.html#controlled-vocabulary-term"},{default:o(()=>[t("er")]),_:1}),t(","),Nt]),qt,e("p",null,[Ct,t(","),a(r,{to:"/develop/Data/models.html#data-attribute"},{default:o(()=>[t("er")]),_:1}),t(","),Ot,t(","),Rt]),St,e("p",null,[Pt,t(","),a(r,{to:"/develop/Data/models.html#dataset-record-field"},{default:o(()=>[t("er")]),_:1}),t(","),At]),It,e("p",null,[Lt,t(","),a(r,{to:"/develop/Data/models.html#dataset-record"},{default:o(()=>[t("er")]),_:1}),t(","),Bt]),Gt,e("p",null,[Mt,t(","),a(r,{to:"/develop/Data/models.html#depiction"},{default:o(()=>[t("er")]),_:1}),t(","),Zt]),Vt,e("p",null,[Et,t(","),a(r,{to:"/develop/Data/models.html#derived-collection-object"},{default:o(()=>[t("er")]),_:1}),t(","),Ft]),Jt,e("p",null,[Kt,t(","),a(r,{to:"/develop/Data/models.html#descriptor"},{default:o(()=>[t("er")]),_:1}),t(","),Ut]),Ht,e("p",null,[Qt,t(","),a(r,{to:"/develop/Data/models.html#documentation"},{default:o(()=>[t("er")]),_:1}),t(","),Wt]),Xt,e("p",null,[Yt,t(","),a(r,{to:"/develop/Data/models.html#document"},{default:o(()=>[t("er")]),_:1}),t(","),$t]),te,e("p",null,[ee,t(","),a(r,{to:"/develop/Data/models.html#extract"},{default:o(()=>[t("er")]),_:1}),t(","),de]),re,e("p",null,[ae,t(","),a(r,{to:"/develop/Data/models.html#gene-attribute"},{default:o(()=>[t("er")]),_:1}),t(","),oe]),ie,e("p",null,[ne,t(","),a(r,{to:"/develop/Data/models.html#geographic-area-type"},{default:o(()=>[t("er")]),_:1}),t(","),se]),le,e("p",null,[ce,t(","),a(r,{to:"/develop/Data/models.html#geographic-area"},{default:o(()=>[t("er")]),_:1}),t(","),he]),_e,e("p",null,[pe,t(","),a(r,{to:"/develop/Data/models.html#geographic-areas-geographic-item"},{default:o(()=>[t("er")]),_:1}),t(","),ge]),me,e("p",null,[be,t(","),a(r,{to:"/develop/Data/models.html#geographic-item"},{default:o(()=>[t("er")]),_:1}),t(","),ue]),ye,e("p",null,[fe,t(","),a(r,{to:"/develop/Data/models.html#georeference"},{default:o(()=>[t("er")]),_:1}),t(","),ve]),xe,e("p",null,[we,t(","),a(r,{to:"/develop/Data/models.html#identifier"},{default:o(()=>[t("er")]),_:1}),t(","),ke,t(","),je]),ze,e("p",null,[Te,t(","),a(r,{to:"/develop/Data/models.html#image"},{default:o(()=>[t("er")]),_:1}),t(","),De,t(","),Ne]),qe,e("p",null,[Ce,t(","),a(r,{to:"/develop/Data/models.html#import-dataset"},{default:o(()=>[t("er")]),_:1}),t(","),Oe]),Re,e("p",null,[Se,t(","),a(r,{to:"/develop/Data/models.html#label"},{default:o(()=>[t("er")]),_:1}),t(","),Pe]),Ae,e("p",null,[Ie,t(","),a(r,{to:"/develop/Data/models.html#language"},{default:o(()=>[t("er")]),_:1}),t(","),Le]),Be,e("p",null,[Ge,t(","),a(r,{to:"/develop/Data/models.html#loan-item"},{default:o(()=>[t("er")]),_:1}),t(","),Me]),Ze,e("p",null,[Ve,t(","),a(r,{to:"/develop/Data/models.html#loan"},{default:o(()=>[t("er")]),_:1}),t(","),Ee]),Fe,e("p",null,[Je,t(","),a(r,{to:"/develop/Data/models.html#namespace"},{default:o(()=>[t("er")]),_:1}),t(","),Ke]),Ue,e("p",null,[He,t(","),a(r,{to:"/develop/Data/models.html#note"},{default:o(()=>[t("er")]),_:1}),t(","),Qe,t(","),We]),Xe,e("p",null,[Ye,t(","),a(r,{to:"/develop/Data/models.html#observation-matrix"},{default:o(()=>[t("er")]),_:1}),t(","),$e,t(","),td]),ed,e("p",null,[dd,t(","),a(r,{to:"/develop/Data/models.html#observation-matrix-column-item"},{default:o(()=>[t("er")]),_:1}),t(","),rd]),ad,e("p",null,[od,t(","),a(r,{to:"/develop/Data/models.html#observation-matrix-column"},{default:o(()=>[t("er")]),_:1}),t(","),id]),nd,e("p",null,[sd,t(","),a(r,{to:"/develop/Data/models.html#observation-matrix-row-item"},{default:o(()=>[t("er")]),_:1}),t(","),ld]),cd,e("p",null,[hd,t(","),a(r,{to:"/develop/Data/models.html#observation-matrix-row"},{default:o(()=>[t("er")]),_:1}),t(","),_d]),pd,e("p",null,[gd,t(","),a(r,{to:"/develop/Data/models.html#observation"},{default:o(()=>[t("er")]),_:1}),t(","),md,t(","),bd]),ud,e("p",null,[yd,t(","),a(r,{to:"/develop/Data/models.html#organization"},{default:o(()=>[t("er")]),_:1}),t(","),fd]),vd,e("p",null,[xd,t(","),a(r,{to:"/develop/Data/models.html#origin-relationship"},{default:o(()=>[t("er")]),_:1}),t(","),wd]),kd,e("p",null,[jd,t(","),a(r,{to:"/develop/Data/models.html#otu-page-layout-section"},{default:o(()=>[t("er")]),_:1}),t(","),zd]),Td,e("p",null,[Dd,t(","),a(r,{to:"/develop/Data/models.html#otu-page-layout"},{default:o(()=>[t("er")]),_:1}),t(","),Nd]),qd,e("p",null,[Cd,t(","),a(r,{to:"/develop/Data/models.html#otu"},{default:o(()=>[t("er")]),_:1}),t(","),Od,t(","),Rd]),Sd,e("p",null,[Pd,t(","),a(r,{to:"/develop/Data/models.html#person"},{default:o(()=>[t("er")]),_:1}),t(","),Ad,t(","),Id]),Ld,e("p",null,[Bd,t(","),a(r,{to:"/develop/Data/models.html#preparation-type"},{default:o(()=>[t("er")]),_:1}),t(","),Gd]),Md,e("p",null,[Zd,t(","),a(r,{to:"/develop/Data/models.html#project-member"},{default:o(()=>[t("er")]),_:1}),t(","),Vd]),Ed,e("p",null,[Fd,t(","),a(r,{to:"/develop/Data/models.html#project-source"},{default:o(()=>[t("er")]),_:1}),t(","),Jd]),Kd,e("p",null,[Ud,t(","),a(r,{to:"/develop/Data/models.html#protocol-relationship"},{default:o(()=>[t("er")]),_:1}),t(","),Hd]),Qd,e("p",null,[Wd,t(","),a(r,{to:"/develop/Data/models.html#protocol"},{default:o(()=>[t("er")]),_:1}),t(","),Xd]),Yd,e("p",null,[$d,t(","),a(r,{to:"/develop/Data/models.html#ranged-lot-category"},{default:o(()=>[t("er")]),_:1}),t(","),tr]),er,e("p",null,[dr,t(","),a(r,{to:"/develop/Data/models.html#repository"},{default:o(()=>[t("er")]),_:1}),t(","),rr]),ar,e("p",null,[or,t(","),a(r,{to:"/develop/Data/models.html#role"},{default:o(()=>[t("er")]),_:1}),t(","),ir]),nr,e("p",null,[sr,t(","),a(r,{to:"/develop/Data/models.html#sequence-relationship"},{default:o(()=>[t("er")]),_:1}),t(","),lr]),cr,e("p",null,[hr,t(","),a(r,{to:"/develop/Data/models.html#sequence"},{default:o(()=>[t("er")]),_:1}),t(","),_r]),pr,e("p",null,[gr,t(","),a(r,{to:"/develop/Data/models.html#serial-chronology"},{default:o(()=>[t("er")]),_:1}),t(","),mr]),br,e("p",null,[ur,t(","),a(r,{to:"/develop/Data/models.html#serial"},{default:o(()=>[t("er")]),_:1}),t(","),yr]),fr,e("p",null,[vr,t(","),a(r,{to:"/develop/Data/models.html#sled-image"},{default:o(()=>[t("er")]),_:1}),t(","),xr]),wr,e("p",null,[kr,t(","),a(r,{to:"/develop/Data/models.html#source"},{default:o(()=>[t("er")]),_:1}),t(","),jr,t(","),zr]),Tr,e("p",null,[Dr,t(","),a(r,{to:"/develop/Data/models.html#tagged-section-keyword"},{default:o(()=>[t("er")]),_:1}),t(","),Nr]),qr,e("p",null,[Cr,t(","),a(r,{to:"/develop/Data/models.html#tag"},{default:o(()=>[t("er")]),_:1}),t(","),Or]),Rr,e("p",null,[Sr,t(","),a(r,{to:"/develop/Data/models.html#taxon-determination"},{default:o(()=>[t("er")]),_:1}),t(","),Pr]),Ar,e("p",null,[Ir,t(","),a(r,{to:"/develop/Data/models.html#taxon-name-classification"},{default:o(()=>[t("er")]),_:1}),t(","),Lr,t(","),Br]),Gr,e("p",null,[Mr,t(","),a(r,{to:"/develop/Data/models.html#taxon-name-relationship"},{default:o(()=>[t("er")]),_:1}),t(","),Zr,t(","),Vr]),Er,e("p",null,[Fr,t(","),a(r,{to:"/develop/Data/models.html#taxon-name"},{default:o(()=>[t("er")]),_:1}),t(","),Jr,t(","),Kr]),Ur,e("p",null,[Hr,t(","),a(r,{to:"/develop/Data/models.html#type-material"},{default:o(()=>[t("er")]),_:1}),t(","),Qr]),Wr])}const ea=i(c,[["render",Xr],["__file","tables.html.vue"]]),da=JSON.parse('{"path":"/develop/Data/tables.html","title":"Tables","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"alternate_values","slug":"alternate-values","link":"#alternate-values","children":[]},{"level":2,"title":"asserted_distributions","slug":"asserted-distributions","link":"#asserted-distributions","children":[]},{"level":2,"title":"attributions","slug":"attributions","link":"#attributions","children":[]},{"level":2,"title":"biocuration_classifications","slug":"biocuration-classifications","link":"#biocuration-classifications","children":[]},{"level":2,"title":"biological_associations","slug":"biological-associations","link":"#biological-associations","children":[]},{"level":2,"title":"biological_associations_biological_associations_graphs","slug":"biological-associations-biological-associations-graphs","link":"#biological-associations-biological-associations-graphs","children":[]},{"level":2,"title":"biological_associations_graphs","slug":"biological-associations-graphs","link":"#biological-associations-graphs","children":[]},{"level":2,"title":"biological_relationship_types","slug":"biological-relationship-types","link":"#biological-relationship-types","children":[]},{"level":2,"title":"biological_relationships","slug":"biological-relationships","link":"#biological-relationships","children":[]},{"level":2,"title":"character_states","slug":"character-states","link":"#character-states","children":[]},{"level":2,"title":"citation_topics","slug":"citation-topics","link":"#citation-topics","children":[]},{"level":2,"title":"citations","slug":"citations","link":"#citations","children":[]},{"level":2,"title":"collecting_events","slug":"collecting-events","link":"#collecting-events","children":[]},{"level":2,"title":"collection_object_observations","slug":"collection-object-observations","link":"#collection-object-observations","children":[]},{"level":2,"title":"collection_objects","slug":"collection-objects","link":"#collection-objects","children":[]},{"level":2,"title":"collection_profiles","slug":"collection-profiles","link":"#collection-profiles","children":[]},{"level":2,"title":"common_names","slug":"common-names","link":"#common-names","children":[]},{"level":2,"title":"confidences","slug":"confidences","link":"#confidences","children":[]},{"level":2,"title":"container_items","slug":"container-items","link":"#container-items","children":[]},{"level":2,"title":"containers","slug":"containers","link":"#containers","children":[]},{"level":2,"title":"contents","slug":"contents","link":"#contents","children":[]},{"level":2,"title":"controlled_vocabulary_terms","slug":"controlled-vocabulary-terms","link":"#controlled-vocabulary-terms","children":[]},{"level":2,"title":"data_attributes","slug":"data-attributes","link":"#data-attributes","children":[]},{"level":2,"title":"dataset_record_fields","slug":"dataset-record-fields","link":"#dataset-record-fields","children":[]},{"level":2,"title":"dataset_records","slug":"dataset-records","link":"#dataset-records","children":[]},{"level":2,"title":"depictions","slug":"depictions","link":"#depictions","children":[]},{"level":2,"title":"derived_collection_objects","slug":"derived-collection-objects","link":"#derived-collection-objects","children":[]},{"level":2,"title":"descriptors","slug":"descriptors","link":"#descriptors","children":[]},{"level":2,"title":"documentation","slug":"documentation","link":"#documentation","children":[]},{"level":2,"title":"documents","slug":"documents","link":"#documents","children":[]},{"level":2,"title":"extracts","slug":"extracts","link":"#extracts","children":[]},{"level":2,"title":"gene_attributes","slug":"gene-attributes","link":"#gene-attributes","children":[]},{"level":2,"title":"geographic_area_types","slug":"geographic-area-types","link":"#geographic-area-types","children":[]},{"level":2,"title":"geographic_areas","slug":"geographic-areas","link":"#geographic-areas","children":[]},{"level":2,"title":"geographic_areas_geographic_items","slug":"geographic-areas-geographic-items","link":"#geographic-areas-geographic-items","children":[]},{"level":2,"title":"geographic_items","slug":"geographic-items","link":"#geographic-items","children":[]},{"level":2,"title":"georeferences","slug":"georeferences","link":"#georeferences","children":[]},{"level":2,"title":"identifiers","slug":"identifiers","link":"#identifiers","children":[]},{"level":2,"title":"images","slug":"images","link":"#images","children":[]},{"level":2,"title":"import_datasets","slug":"import-datasets","link":"#import-datasets","children":[]},{"level":2,"title":"labels","slug":"labels","link":"#labels","children":[]},{"level":2,"title":"languages","slug":"languages","link":"#languages","children":[]},{"level":2,"title":"loan_items","slug":"loan-items","link":"#loan-items","children":[]},{"level":2,"title":"loans","slug":"loans","link":"#loans","children":[]},{"level":2,"title":"namespaces","slug":"namespaces","link":"#namespaces","children":[]},{"level":2,"title":"notes","slug":"notes","link":"#notes","children":[]},{"level":2,"title":"observation_matrices","slug":"observation-matrices","link":"#observation-matrices","children":[]},{"level":2,"title":"observation_matrix_column_items","slug":"observation-matrix-column-items","link":"#observation-matrix-column-items","children":[]},{"level":2,"title":"observation_matrix_columns","slug":"observation-matrix-columns","link":"#observation-matrix-columns","children":[]},{"level":2,"title":"observation_matrix_row_items","slug":"observation-matrix-row-items","link":"#observation-matrix-row-items","children":[]},{"level":2,"title":"observation_matrix_rows","slug":"observation-matrix-rows","link":"#observation-matrix-rows","children":[]},{"level":2,"title":"observations","slug":"observations","link":"#observations","children":[]},{"level":2,"title":"organizations","slug":"organizations","link":"#organizations","children":[]},{"level":2,"title":"origin_relationships","slug":"origin-relationships","link":"#origin-relationships","children":[]},{"level":2,"title":"otu_page_layout_sections","slug":"otu-page-layout-sections","link":"#otu-page-layout-sections","children":[]},{"level":2,"title":"otu_page_layouts","slug":"otu-page-layouts","link":"#otu-page-layouts","children":[]},{"level":2,"title":"otus","slug":"otus","link":"#otus","children":[]},{"level":2,"title":"people","slug":"people","link":"#people","children":[]},{"level":2,"title":"preparation_types","slug":"preparation-types","link":"#preparation-types","children":[]},{"level":2,"title":"project_members","slug":"project-members","link":"#project-members","children":[]},{"level":2,"title":"project_sources","slug":"project-sources","link":"#project-sources","children":[]},{"level":2,"title":"protocol_relationships","slug":"protocol-relationships","link":"#protocol-relationships","children":[]},{"level":2,"title":"protocols","slug":"protocols","link":"#protocols","children":[]},{"level":2,"title":"ranged_lot_categories","slug":"ranged-lot-categories","link":"#ranged-lot-categories","children":[]},{"level":2,"title":"repositories","slug":"repositories","link":"#repositories","children":[]},{"level":2,"title":"roles","slug":"roles","link":"#roles","children":[]},{"level":2,"title":"sequence_relationships","slug":"sequence-relationships","link":"#sequence-relationships","children":[]},{"level":2,"title":"sequences","slug":"sequences","link":"#sequences","children":[]},{"level":2,"title":"serial_chronologies","slug":"serial-chronologies","link":"#serial-chronologies","children":[]},{"level":2,"title":"serials","slug":"serials","link":"#serials","children":[]},{"level":2,"title":"sled_images","slug":"sled-images","link":"#sled-images","children":[]},{"level":2,"title":"sources","slug":"sources","link":"#sources","children":[]},{"level":2,"title":"tagged_section_keywords","slug":"tagged-section-keywords","link":"#tagged-section-keywords","children":[]},{"level":2,"title":"tags","slug":"tags","link":"#tags","children":[]},{"level":2,"title":"taxon_determinations","slug":"taxon-determinations","link":"#taxon-determinations","children":[]},{"level":2,"title":"taxon_name_classifications","slug":"taxon-name-classifications","link":"#taxon-name-classifications","children":[]},{"level":2,"title":"taxon_name_relationships","slug":"taxon-name-relationships","link":"#taxon-name-relationships","children":[]},{"level":2,"title":"taxon_names","slug":"taxon-names","link":"#taxon-names","children":[]},{"level":2,"title":"type_materials","slug":"type-materials","link":"#type-materials","children":[]}],"git":{"updatedTime":1644347967000,"contributors":[{"name":"mjy","email":"diapriid@gmail.com","commits":5}]},"filePathRelative":"develop/Data/tables.md"}');export{ea as comp,da as data};
diff --git a/assets/videos.html-DCMbaAFr.js b/assets/videos.html-DCMbaAFr.js
new file mode 100644
index 00000000..21d6d06f
--- /dev/null
+++ b/assets/videos.html-DCMbaAFr.js
@@ -0,0 +1 @@
+import{_ as e,c as a,o,b as t}from"./app-Bwgh_xIT.js";const r={},i=t('Of all sorts, links are indexed here. We encourage everyone to request and/or make videos to share.
TaxonWorks Youtube channel is here .
Please submit a gitHub issue (aka "ticket") if you've made one to share or need one on a particular topic.
',5),s=[i];function n(d,l){return o(),a("div",null,s)}const m=e(r,[["render",n],["__file","videos.html.vue"]]),u=JSON.parse('{"path":"/guide/videos.html","title":"Videos","lang":"en-US","frontmatter":{"sidebarPosition":70},"headers":[{"level":2,"title":"Request or make a video","slug":"request-or-make-a-video","link":"#request-or-make-a-video","children":[]}],"git":{"updatedTime":1660331499000,"contributors":[{"name":"mjy","email":"diapriid@gmail.com","commits":3},{"name":"Debbie Paul","email":"dlpaul@illinois.edu","commits":1}]},"filePathRelative":"guide/videos.md"}');export{m as comp,u as data};
diff --git a/data/alternate_values_model_er.dot b/data/alternate_values_model_er.dot
new file mode 100644
index 00000000..df5783f9
--- /dev/null
+++ b/data/alternate_values_model_er.dot
@@ -0,0 +1,152 @@
+digraph AlternateValue {
+ graph [bb="0,0,636.56,382",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="72.942,187",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.0262];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="314.72,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="314.72,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="314.72,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="512.06,283",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="512.06,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Language [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#language",
+ label=Language,
+ pos="314.72,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="314.72,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="606.56,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ AlternateValue -> PinboardItem [pos="e,269.11,362.93 83.371,209.13 98.803,242.5 132.73,305.18 181.88,337 204.64,351.73 233.84,358.65 258.98,361.82"];
+ AlternateValue -> Role [pos="e,287.65,308.65 92.59,209.38 112.4,231.61 145.78,264.91 181.88,283 212.08,298.13 250.2,304.78 277.68,307.7"];
+ AlternateValue -> VerifierRole [pos="e,273.08,247.15 120.93,204.16 139.76,210.76 161.73,218.11 181.88,224 208.51,231.78 238.54,239.17 263.21,244.89"];
+ AlternateValue -> Creator [dir=back,
+ pos="s,128.58,202.11 138.71,204.43 216.38,221.69 348.48,239.22 447.56,191 474.23,178.02 493.01,147.81 502.92,128.18",
+ style=dashed];
+ AlternateValue -> Language [dir=back,
+ pos="s,145.88,180.1 155.9,179.14 198.18,175.08 247.47,170.36 279.56,167.28",
+ style=dashed];
+ AlternateValue -> Project [dir=back,
+ pos="s,111.04,167.21 120.23,162.69 138.98,153.61 161.07,143.85 181.88,137 217.39,125.32 260.01,117.69 286.99,113.61",
+ style=dashed];
+ AlternateValue -> Updater [dir=back,
+ pos="s,88.737,164.83 94.812,156.7 114.09,131.61 145.24,97.781 181.88,83 329.72,23.369 384.23,51.823 540.56,83 552.66,85.414 565.33,90.126 \
+576.24,94.947",
+ style=dashed];
+ "Objects with Alternate values" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with alternate value",
+ label="Objects with Alternate values",
+ pos="314.72,18",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=3.6899];
+ AlternateValue -> "Objects with Alternate values" [dir=back,
+ pos="s,85.126,164.96 90.064,156.14 108.16,124.6 140.49,76.58 181.88,50 195.46,41.283 211.21,34.94 227,30.324",
+ style=dashed];
+ Role -> Verifier [pos="e,483.24,286.84 342.06,306.36 375.76,301.7 434.36,293.6 472.93,288.27",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,483.37,279.17 356.67,261.66 390.99,266.4 439.62,273.13 473.08,277.75",
+ style=dotted];
+ Creator -> Updater [pos="e,576.39,110 540.56,110 548.59,110 557.52,110 566.13,110",
+ style=invis];
+ Project -> Creator [pos="e,483.37,110 342.47,110 376.28,110 434.69,110 473.1,110",
+ style=invis];
+}
diff --git a/data/asserted_distributions_model_er.dot b/data/asserted_distributions_model_er.dot
new file mode 100644
index 00000000..29eb0d78
--- /dev/null
+++ b/data/asserted_distributions_model_er.dot
@@ -0,0 +1,446 @@
+digraph AssertedDistribution {
+ graph [bb="0,0,848.79,809",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="59.145,736",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="59.145,362",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,524",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="59.145,470",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="59.145,308",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="59.145,416",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ AssertedDistribution [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#asserted-distribution",
+ label=AssertedDistribution,
+ pos="249.04,420",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.632];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="439.79,736",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="439.79,420",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ TaxonName [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#taxon-name",
+ label=TaxonName,
+ pos="439.79,365",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1667];
+ }
+ subgraph supporting {
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="249.04,791",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="249.04,362",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ GeographicArea [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-area",
+ label=GeographicArea,
+ pos="439.79,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4722];
+ GeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-item",
+ label=GeographicItem,
+ pos="616.29,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4583];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="249.04,308",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ RelatedOriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-origin-relationship",
+ label=RelatedOriginRelationship,
+ pos="616.29,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2361];
+ OriginLot [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-lot",
+ label=OriginLot,
+ pos="790.79,191",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.98611];
+ OriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-relationship",
+ label=OriginRelationship,
+ pos="439.79,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ OriginSpecimen [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-specimen",
+ label=OriginSpecimen,
+ pos="790.79,245",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4722];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="439.79,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="439.79,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="616.29,730",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="790.79,730",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="439.79,791",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="439.79,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="616.29,45",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="616.29,567",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="439.79,567",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="790.79,567",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ DwcOccurrence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#dwc-occurrence",
+ label=DwcOccurrence,
+ pos="439.79,513",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="616.29,670",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,412.78,736 98.184,736 171.32,736 330.65,736 402.44,736",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,202.81,777.76 92.445,745.45 120.02,753.53 160.28,765.31 192.94,774.87",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,194.32,362 110,362 132.74,362 159.93,362 184.15,362",
+ style=dotted];
+ Tag -> Keyword [pos="e,215.52,308 86.271,308 117.02,308 168.51,308 205.14,308",
+ style=dotted];
+ AssertedDistribution -> Citation [pos="e,70.514,718.56 234.78,442.31 200.98,499.15 111.75,649.21 75.641,709.94"];
+ AssertedDistribution -> Confidence [pos="e,98.168,373.74 190.08,402.11 163.68,393.96 132.82,384.43 107.8,376.71"];
+ AssertedDistribution -> DataAttribute [pos="e,93.33,509.29 213.07,442.06 187.26,458.01 151.08,479.71 118.29,497 113.31,499.63 108.02,502.27 102.74,504.82"];
+ AssertedDistribution -> Identifier [pos="e,95.929,460.48 184.62,436.88 158.74,443.76 129.4,451.57 105.71,457.87"];
+ AssertedDistribution -> Tag [pos="e,83.925,315.63 180.74,403.87 171.34,399.91 162.2,395.03 154.29,389 131.35,371.52 140.19,353.77 118.29,335 110.97,328.72 101.94,\
+323.6 93.201,319.57"];
+ AssertedDistribution -> Note [pos="e,87.466,416.58 154.49,418.01 134.36,417.58 114.21,417.15 97.729,416.8"];
+ AssertedDistribution -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,255.13,442.14 e,412.55,725.74 257.65,451.96 272.53,508.59 310.25,627.66 379.79,703 386.4,710.16 394.92,716.14 403.42,720.96",
+ style=dotted];
+ AssertedDistribution -> Otu [dir=back,
+ pos="s,343.59,420 353.69,420 375.63,420 396.88,420 412.67,420",
+ style=dashed];
+ AssertedDistribution -> TaxonName [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,310.02,402.52 e,397.77,376.95 319.91,399.64 342.53,393.05 367.17,385.87 388.12,379.77",
+ style=dotted];
+ AssertedDistribution -> GeographicArea [dir=back,
+ pos="s,319.85,404.5 329.04,399.73 334.36,396.65 339.35,393.09 343.79,389 373.96,361.19 352.21,334.37 379.79,304 384.65,298.65 390.61,\
+294.02 396.86,290.06",
+ style=dashed];
+ AssertedDistribution -> GeographicItem [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,317.25,403.74 e,563.75,284.25 326.4,399.56 332.55,396.5 338.44,393 343.79,389 366.3,372.16 356.87,353.27 379.79,337 394.16,326.8 \
+489.15,302.44 554.01,286.61",
+ style=dotted];
+ AssertedDistribution -> RelatedOriginRelationship [pos="e,580.8,199.92 323.08,404.89 330.88,400.8 338.05,395.6 343.79,389 402.47,321.5 311.12,248.31 379.79,191 433.48,146.19 519.65,172.76 \
+571.53,195.7"];
+ AssertedDistribution -> OriginRelationship [pos="e,389.53,236.03 322.2,404.76 330.26,400.69 337.73,395.53 343.79,389 388.67,340.65 337.63,295.74 379.79,245 380.4,244.26 381.04,243.54 \
+381.7,242.84"];
+ AssertedDistribution -> PinboardItem [pos="e,394.2,144.11 323.24,405.03 331.02,400.91 338.14,395.67 343.79,389 410.97,309.73 319.91,242.91 379.79,158 381.7,155.29 383.92,152.78 \
+386.36,150.47"];
+ AssertedDistribution -> Role [pos="e,412.6,23.668 324.02,405.06 331.56,400.93 338.42,395.68 343.79,389 440.2,269.26 290.1,169.85 379.79,45 385.55,36.988 394.27,31.298 \
+403.25,27.278"];
+ AssertedDistribution -> SubsequentCitation [pos="e,555.03,718.17 255.6,442.14 268.72,489.78 306.2,602.51 379.79,662 405.3,682.62 485.49,703.07 545.25,716.07"];
+ AssertedDistribution -> VerifierRole [pos="e,397.99,83.976 323.44,405.2 331.18,401.05 338.24,395.76 343.79,389 426.21,288.62 303,203.75 379.79,99 382.49,95.323 385.8,92.134 \
+389.48,89.371"];
+ AssertedDistribution -> Creator [dir=back,
+ pos="s,319.77,435.53 329.8,437.86 390.91,452.14 469.69,472.01 499.79,486 535.55,502.62 572.01,530.37 594.15,548.68",
+ style=dashed];
+ AssertedDistribution -> Project [dir=back,
+ pos="s,269.86,442.2 276.78,449.59 301.6,475.79 340.52,513.83 379.79,540 389.82,546.68 401.77,552.5 412.29,557",
+ style=dashed];
+ AssertedDistribution -> Updater [dir=back,
+ pos="s,258.57,442.02 262.65,451.39 281.25,492.88 320.39,564.2 379.79,594 509.06,658.86 690.74,604.05 760.73,578.44",
+ style=dashed];
+ AssertedDistribution -> DwcOccurrence [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,292.87,441.1 e,402.17,494.96 302.03,445.61 330.58,459.68 365.68,476.98 393.16,490.52"];
+ AssertedDistribution -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,257.08,442.09 e,568.69,672.15 260.5,451.64 277.61,498.09 316.17,583.87 379.79,627 432.89,663 507.58,671.22 558.52,672.07"];
+ Source -> SubsequentCitation [pos="e,554.96,732.07 466.91,735.1 487.58,734.39 517.43,733.36 544.95,732.42",
+ style=invis];
+ Source -> OriginCitation [pos="e,568.6,687.66 466.91,726.12 491.21,716.93 528.22,702.93 559.2,691.22",
+ style=invis];
+ CitationTopic -> Topic [pos="e,412.56,791 295.25,791 328.03,791 371.79,791 402.34,791",
+ style=dotted];
+ GeographicArea -> GeographicItem [pos="e,563.57,272 493.15,272 512.12,272 533.74,272 553.46,272",
+ style=dotted];
+ RelatedOriginRelationship -> OriginLot [pos="e,755.25,196.41 696.98,205.53 713.46,202.95 730.26,200.32 744.96,198.02",
+ style=dotted];
+ RelatedOriginRelationship -> OriginSpecimen [pos="e,737.55,236.82 696.98,230.47 707.2,232.07 717.54,233.69 727.43,235.24",
+ style=dotted];
+ OriginRelationship -> RelatedOriginRelationship [pos="e,535.54,218 499.87,218 508.11,218 516.73,218 525.39,218",
+ style=invis];
+ Role -> Verifier [pos="e,587.54,40.707 466.91,22.042 496.17,26.569 543.85,33.946 577.24,39.113",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,732.68,730 677.62,730 692.15,730 707.75,730 722.57,730",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,587.69,49.271 481.7,65.67 510.77,61.172 549.51,55.178 577.78,50.804",
+ style=dotted];
+ Creator -> Updater [pos="e,760.7,567 645.01,567 673.5,567 718.13,567 750.31,567",
+ style=invis];
+ Project -> Creator [pos="e,587.67,567 467.29,567 496.63,567 544.16,567 577.42,567",
+ style=invis];
+}
diff --git a/data/attributions_model_er.dot b/data/attributions_model_er.dot
new file mode 100644
index 00000000..fc7334fd
--- /dev/null
+++ b/data/attributions_model_er.dot
@@ -0,0 +1,304 @@
+digraph Attribution {
+ graph [bb="0,0,712.21,696.28",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph core {
+ }
+ subgraph supporting {
+ CopyrightHolderRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#copyright-holder-role",
+ label=CopyrightHolderRole,
+ pos="295.63,542",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8611];
+ AttributionCopyrightHolder [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#attribution-copyright-holder",
+ label=AttributionCopyrightHolder,
+ pos="531.71,542",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.3472];
+ CreatorRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator-role",
+ label=CreatorRole,
+ pos="295.63,488",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ AttributionCreator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#attribution-creator",
+ label=AttributionCreator,
+ pos="531.71,488",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.625];
+ EditorRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#editor-role",
+ label=EditorRole,
+ pos="295.63,434",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0556];
+ AttributionEditor [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#attribution-editor",
+ label=AttributionEditor,
+ pos="531.71,434",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5278];
+ OwnerRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#owner-role",
+ label=OwnerRole,
+ pos="295.63,380",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0972];
+ AttributionOwner [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#attribution-owner",
+ label=AttributionOwner,
+ pos="531.71,380",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5694];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="295.63,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="295.63,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="295.63,326",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="295.63,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="295.63,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="531.71,245",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="531.71,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="295.63,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="682.21,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Attribution [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#attribution",
+ label=Attribution,
+ pos="85.889,326",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.6158];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="85.889,89",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="85.889,179",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="85.889,268",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ Attribution -> Confidence [pos="e,60.486,104.73 39.317,311.46 27.644,305.49 16.519,297.25 9.7202,286 -4.6474,262.23 -1.2698,186.51 9.7202,161 18.487,140.65 36.148,\
+123.37 52.258,110.84"];
+ Attribution -> Tag [pos="e,65.575,191.43 39.317,311.46 27.644,305.49 16.519,297.25 9.7202,286 -9.924,253.5 28.236,217.99 57.299,197.15"];
+ Attribution -> Note [pos="e,85.889,286.12 85.889,303.88 85.889,301.38 85.889,298.89 85.889,296.39"];
+ Attribution -> CopyrightHolderRole [pos="e,228.36,536.57 91.356,348.26 100.56,388.14 125.53,471.61 180.06,515 191.12,523.81 204.58,529.82 218.33,533.92"];
+ Attribution -> CreatorRole [pos="e,254.09,485.63 95.908,348 109.5,378.32 138.2,432.42 180.06,461 198.77,473.78 222.76,480.55 243.95,484.12"];
+ Attribution -> EditorRole [pos="e,257.45,429.87 106.52,348.25 124.02,366.71 151.25,392.24 180.06,407 200.94,417.7 226.14,424.23 247.58,428.19"];
+ Attribution -> OwnerRole [pos="e,256.06,371.42 133.68,340.06 148.47,344.37 164.91,349.02 180.06,353 201.62,358.66 225.6,364.4 246.04,369.12"];
+ Attribution -> PinboardItem [pos="e,250.01,326 144.21,326 174.07,326 210.41,326 239.89,326"];
+ Attribution -> Role [pos="e,268.6,277.74 133.68,311.94 148.47,307.63 164.91,302.98 180.06,299 206.28,292.11 236.1,285.11 258.74,279.97"];
+ Attribution -> VerifierRole [pos="e,253.93,220.56 124.18,308.96 131.16,304.91 138.13,300.22 144.06,295 164.61,276.91 157.29,260.21 180.06,245 198.82,232.46 222.72,\
+225.72 243.83,222.1"];
+ Attribution -> Creator [dir=back,
+ pos="s,126.36,309.69 134.7,303.9 138.12,301.21 141.31,298.24 144.06,295 175.7,257.7 142.65,222.52 180.06,191 259.67,123.91 309.02,172.93 \
+411.21,153 442.73,146.85 478.64,138.56 502.8,132.8",
+ style=dashed];
+ Attribution -> Project [dir=back,
+ pos="s,127.01,309.81 135.4,303.77 138.6,301.12 141.54,298.21 144.06,295 182.93,245.48 135.89,202.86 180.06,158 203.1,134.6 241.72,127.92 \
+267.67,126.22",
+ style=dashed];
+ Attribution -> Updater [dir=back,
+ pos="s,90.403,348.07 92.107,358.09 104.22,428.15 136.56,591.05 180.06,623 337.49,738.61 486.03,714.62 616.21,569 673.65,504.74 680.35,\
+219.41 681.11,144.22",
+ style=dashed];
+ "Objects with Attributions" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with attribution",
+ label="Objects with Attributions",
+ pos="295.63,596",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=3.2104];
+ Attribution -> "Objects with Attributions" [dir=back,
+ pos="s,88.656,348.34 89.813,358.42 96.329,410.81 116.87,513.8 180.06,569 188.83,576.66 199.38,582.25 210.47,586.31",
+ style=dashed];
+ Confidence -> ConfidenceLevel [pos="e,240.92,28.217 114.78,73.935 132.96,64.595 157.43,52.911 180.06,45 196.19,39.359 214.02,34.522 230.7,30.566",
+ style=dotted];
+ Tag -> Keyword [pos="e,262.1,75.468 100.43,163.54 117.27,145.32 147.75,115.43 180.06,99 202.49,87.592 229.85,80.912 252.21,77.051",
+ style=dotted];
+ CopyrightHolderRole -> AttributionCopyrightHolder [pos="e,447.18,542 362.77,542 385.82,542 412.15,542 437,542",
+ style=dotted];
+ CreatorRole -> AttributionCreator [pos="e,473.18,488 337.14,488 371.76,488 422.29,488 463.04,488",
+ style=dotted];
+ EditorRole -> AttributionEditor [pos="e,476.37,434 333.72,434 369.29,434 423.72,434 466.36,434",
+ style=dotted];
+ OwnerRole -> AttributionOwner [pos="e,474.92,380 335.29,380 370.43,380 423.04,380 464.82,380",
+ style=dotted];
+ Role -> Verifier [pos="e,502.96,248.2 323.03,268.96 364.49,264.17 445.06,254.88 492.74,249.38",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,503.14,241.82 337.14,222.67 381.02,227.73 450.46,235.74 493.15,240.67",
+ style=dotted];
+ Creator -> Updater [pos="e,652,126 560.29,126 583.22,126 616.13,126 641.83,126",
+ style=invis];
+ Project -> Creator [pos="e,503.09,126 323.48,126 365.13,126 445.42,126 492.91,126",
+ style=invis];
+}
diff --git a/data/biocuration_classifications_model_er.dot b/data/biocuration_classifications_model_er.dot
new file mode 100644
index 00000000..ebd491c7
--- /dev/null
+++ b/data/biocuration_classifications_model_er.dot
@@ -0,0 +1,153 @@
+digraph BiocurationClassification {
+ graph [bb="0,0,614.68,378.58",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ BiocurationClassification [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#biocuration-classification",
+ label=BiocurationClassification,
+ pos="112.34,171.58",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.1205];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="343.18,360.58",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="343.18,306.58",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="343.18,252.58",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="490.18,279.58",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ BiocurationClass [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biocuration-class",
+ label=BiocurationClass,
+ pos="343.18,198.58",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5278];
+ BiologicalCollectionObject [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biological-collection-object",
+ label=BiologicalCollectionObject,
+ pos="343.18,144.58",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2917];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="490.18,52.584",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="343.18,52.584",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="584.68,52.584",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ BiocurationClassification -> PinboardItem [pos="e,297.58,350.33 127.83,193.77 151.57,228.45 202.02,295.46 260.68,333.58 269.02,339.01 278.55,343.44 288.09,347.02"];
+ BiocurationClassification -> Role [pos="e,316.01,300.17 138.32,193.73 166.4,217.66 214.17,255.59 260.68,279.58 274.99,286.97 291.74,292.93 306.32,297.35"];
+ BiocurationClassification -> VerifierRole [pos="e,301.46,239.38 167.77,192 195.5,202.28 229.81,214.82 260.68,225.58 270.7,229.08 281.46,232.72 291.76,236.16"];
+ BiocurationClassification -> BiocurationClass [dir=back,
+ pos="s,216.71,183.78 226.84,184.98 248.2,187.5 269.6,190.02 288.06,192.2",
+ style=dashed];
+ BiocurationClassification -> BiologicalCollectionObject [dir=back,
+ pos="s,216.71,159.39 226.72,158.21 238.13,156.86 249.55,155.51 260.53,154.22",
+ style=dashed];
+ BiocurationClassification -> Creator [dir=back,
+ pos="s,165.31,150.73 174.74,147.13 200.96,137.2 232.07,126.08 260.68,117.58 332.81,96.15 354.11,102.84 425.68,79.584 437.64,75.697 450.47,\
+70.456 461.45,65.626",
+ style=dashed];
+ BiocurationClassification -> Project [dir=back,
+ pos="s,147.31,149.42 155.92,143.99 184.82,125.88 224.26,102.34 260.68,84.584 278.57,75.855 299.5,67.681 315.66,61.778",
+ style=dashed];
+ BiocurationClassification -> Updater [dir=back,
+ pos="s,127.21,149.42 133.05,140.88 157.87,105.37 204.19,48.831 260.68,25.584 366.71,-18.055 406.22,3.1578 518.68,25.584 530.78,27.998 \
+543.45,32.71 554.36,37.531",
+ style=dashed];
+ Role -> Verifier [pos="e,461.63,284.71 370.43,301.69 393.1,297.47 426.12,291.33 451.58,286.58",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,461.53,274.44 384.95,260.18 405.88,264.07 431.19,268.79 451.63,272.59",
+ style=dotted];
+ Creator -> Updater [pos="e,554.51,52.584 518.68,52.584 526.7,52.584 535.64,52.584 544.25,52.584",
+ style=invis];
+ Project -> Creator [pos="e,461.27,52.584 370.77,52.584 393.23,52.584 425.68,52.584 450.94,52.584",
+ style=invis];
+}
diff --git a/data/biological_associations_biological_associations_graphs_model_er.dot b/data/biological_associations_biological_associations_graphs_model_er.dot
new file mode 100644
index 00000000..56ca88af
--- /dev/null
+++ b/data/biological_associations_biological_associations_graphs_model_er.dot
@@ -0,0 +1,152 @@
+digraph BiologicalAssociationsBiologicalAssociationsGraph {
+ graph [bb="0,0,832.5,375.44",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ BiologicalAssociation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#biological-association",
+ label=BiologicalAssociation,
+ pos="555.5,356.94",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.9028];
+ }
+ subgraph supporting {
+ BiologicalAssociationsBiologicalAssociationsGraph [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#biological-associations-biological-associations-graph",
+ label=BiologicalAssociationsBiologicalAssociationsGraph,
+ pos="215.75,166.94",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=5.9931];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="555.5,301.94",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="555.5,247.94",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="555.5,193.94",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="708,220.94",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ BiologicalAssociationsGraph [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biological-associations-graph",
+ label=BiologicalAssociationsGraph,
+ pos="555.5,139.94",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.4444];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="708,47.937",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="555.5,47.937",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="802.5,47.937",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ BiologicalAssociationsBiologicalAssociationsGraph -> BiologicalAssociation [dir=back,
+ pos="s,245.38,189.04 253.48,195.1 300.81,230.32 386.65,290.63 467.5,328.94 475.1,332.54 483.28,335.85 491.48,338.83",
+ style=dashed];
+ BiologicalAssociationsBiologicalAssociationsGraph -> PinboardItem [pos="e,509.94,289.1 263.75,188.95 313.69,211.93 395.25,248.25 467.5,274.94 477.95,278.8 489.24,282.58 500.11,286.03"];
+ BiologicalAssociationsBiologicalAssociationsGraph -> Role [pos="e,528.48,241.7 307.26,188.64 376.58,205.27 468.54,227.32 518.49,239.3"];
+ BiologicalAssociationsBiologicalAssociationsGraph -> VerifierRole [pos="e,513.94,190.69 395.02,181.19 435.03,184.39 474.32,187.53 503.9,189.89"];
+ BiologicalAssociationsBiologicalAssociationsGraph -> BiologicalAssociationsGraph [dir=back,
+ pos="s,395.02,152.69 405.28,151.87 426.81,150.15 447.9,148.46 467.14,146.92",
+ style=dashed];
+ BiologicalAssociationsBiologicalAssociationsGraph -> Creator [dir=back,
+ pos="s,314.64,145.86 324.73,143.69 450.84,116.54 642.53,75.245 643.5,74.937 655.49,71.134 668.33,65.908 679.3,61.067",
+ style=dashed];
+ BiologicalAssociationsBiologicalAssociationsGraph -> Project [dir=back,
+ pos="s,279.49,144.83 289.33,141.37 364.13,115.01 476.8,75.314 527.77,57.355",
+ style=dashed];
+ BiologicalAssociationsBiologicalAssociationsGraph -> Updater [dir=back,
+ pos="s,243.51,144.8 251.65,138.43 297.75,102.81 383.03,43.738 467.5,20.937 582.93,-10.218 619.26,-2.4453 736.5,20.937 748.61,23.351 761.28,\
+28.063 772.18,32.884",
+ style=dashed];
+ Role -> Verifier [pos="e,679.31,225.91 582.72,243.23 606.69,238.93 642.42,232.52 669.42,227.68",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,679.1,215.93 597.23,201.24 619.63,205.26 647.23,210.21 669.15,214.15",
+ style=dotted];
+ Creator -> Updater [pos="e,772.34,47.937 736.51,47.937 744.53,47.937 753.46,47.937 762.08,47.937",
+ style=invis];
+ Project -> Creator [pos="e,679.44,47.937 583.06,47.937 606.98,47.937 642.39,47.937 669.24,47.937",
+ style=invis];
+}
diff --git a/data/biological_associations_graphs_model_er.dot b/data/biological_associations_graphs_model_er.dot
new file mode 100644
index 00000000..1257b041
--- /dev/null
+++ b/data/biological_associations_graphs_model_er.dot
@@ -0,0 +1,251 @@
+digraph BiologicalAssociationsGraph {
+ graph [bb="0,0,1031.6,513.5",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="38.997,299",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ }
+ subgraph core {
+ BiologicalAssociation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#biological-association",
+ label=BiologicalAssociation,
+ pos="811.12,271",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.9028];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="556.12,495",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ BiologicalAssociationsGraph [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#biological-associations-graph",
+ label=BiologicalAssociationsGraph,
+ pos="241.81,299",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.5504];
+ BiologicalAssociationsBiologicalAssociationsGraph [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biological-associations-biological-associations-graph",
+ label=BiologicalAssociationsBiologicalAssociationsGraph,
+ pos="556.12,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=4.1806];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="241.81,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="556.12,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="556.12,180",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="811.12,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="973.62,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="556.12,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="556.12,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="811.12,152",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="811.12,326",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="556.12,326",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="973.62,326",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="811.12,487",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,528.91,488.45 67.091,311.62 127.16,339.32 276.44,406.57 405.62,452 443.85,465.44 488.62,477.9 519.13,485.91",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,227.94,36.011 52.256,281.85 86.124,234.45 181.15,101.48 221.88,44.482",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,750.83,436.04 583.24,487.05 620.13,475.82 688.8,454.92 740.97,439.05",
+ style=invis];
+ Source -> OriginCitation [pos="e,763.16,488.48 583.24,494.17 623.01,492.92 699.72,490.49 752.87,488.81",
+ style=invis];
+ BiologicalAssociationsGraph -> Citation [pos="e,78.24,299 114.06,299 105.11,299 96.459,299 88.424,299"];
+ BiologicalAssociationsGraph -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,267.24,321.35 e,529.01,494.11 274.61,328.19 300.7,352.47 338.31,388.23 369.62,421 386.38,438.53 384.75,449.66 405.62,462 440.57,\
+482.65 487.03,490.41 518.83,493.31",
+ style=dotted];
+ BiologicalAssociationsGraph -> BiologicalAssociationsBiologicalAssociationsGraph [pos="e,405.57,284.93 369.39,288.06 377.96,287.32 386.65,286.56 395.35,285.81"];
+ BiologicalAssociationsGraph -> PinboardItem [pos="e,510.44,72.048 253.84,276.93 276.17,234.76 331.01,143.03 405.62,99 434.07,82.214 470.46,75.39 500.22,72.798"];
+ BiologicalAssociationsGraph -> Role [pos="e,529.12,183.31 277.37,276.84 309.45,257.18 359.12,229.02 405.62,212 443.08,198.29 488.08,189.65 518.86,184.85"];
+ BiologicalAssociationsGraph -> SubsequentCitation [pos="e,750.02,417.76 280.57,321.03 312.71,338.68 360.69,362.5 405.62,375 519.81,406.76 658.12,415.36 739.85,417.51"];
+ BiologicalAssociationsGraph -> VerifierRole [pos="e,514.55,127.35 260.42,276.79 287.75,244.01 343.72,183.27 405.62,153 436.35,137.97 474.32,131.24 504.31,128.26"];
+ BiologicalAssociationsGraph -> Creator [dir=back,
+ pos="s,294.53,320.88 304.03,324.47 334.07,335.63 371.14,347.43 405.62,353 537.69,374.33 573.93,370.02 706.62,353 732.78,349.64 761.76,\
+341.7 782.39,335.3",
+ style=dashed];
+ BiologicalAssociationsGraph -> Project [dir=back,
+ pos="s,369.39,309.94 379.47,310.81 435.65,315.67 495.26,320.82 528.58,323.71",
+ style=dashed];
+ BiologicalAssociationsGraph -> Updater [dir=back,
+ pos="s,294.91,277.06 304.39,273.49 334.37,262.39 371.28,250.65 405.62,245 509.56,227.9 781.2,205.47 879.62,243 913.59,255.95 943.03,287.65 \
+959.25,307.91",
+ style=dashed];
+ BiologicalAssociationsGraph -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,268.25,321.07 e,763.28,478.22 276.22,327.57 307.59,352.87 356.87,388.83 405.62,409 413.67,412.33 643.96,455.81 753.4,476.37"];
+ BiologicalAssociationsBiologicalAssociationsGraph -> BiologicalAssociation [pos="e,742.56,271.27 706.85,271.41 715.56,271.37 724.11,271.34 732.33,271.31",
+ style=dotted];
+ CitationTopic -> Topic [pos="e,528.88,18 287.89,18 350.23,18 461.53,18 518.83,18",
+ style=dotted];
+ Role -> Verifier [pos="e,782.61,155.04 583.24,177.11 628.25,172.13 720.55,161.91 772.48,156.17",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,915.52,418 872.34,418 883.06,418 894.29,418 905.19,418",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,782.47,149.16 597.77,130.18 645.95,135.13 725.59,143.31 772.43,148.13",
+ style=dotted];
+ Creator -> Updater [pos="e,943.5,326 839.71,326 865.5,326 904.26,326 933.29,326",
+ style=invis];
+ Project -> Creator [pos="e,782.35,326 583.72,326 628.82,326 720.45,326 772.24,326",
+ style=invis];
+}
diff --git a/data/biological_associations_model_er.dot b/data/biological_associations_model_er.dot
new file mode 100644
index 00000000..001124b7
--- /dev/null
+++ b/data/biological_associations_model_er.dot
@@ -0,0 +1,356 @@
+digraph BiologicalAssociation {
+ graph [bb="0,0,1023.8,622",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="59.145,549",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="59.145,260",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,422",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="59.145,368",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="59.145,206",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="59.145,314",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ BiologicalAssociation [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#biological-association",
+ label=BiologicalAssociation,
+ pos="254.67,318",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.7883];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="552.4,549",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ BiologicalAssociationsBiologicalAssociationsGraph [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biological-associations-biological-associations-graph",
+ label=BiologicalAssociationsBiologicalAssociationsGraph,
+ pos="552.4,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=4.1806];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="254.67,604",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="254.67,260",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="254.67,206",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="552.4,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="552.4,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="810.76,541",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="965.76,541",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="552.4,604",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="552.4,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="810.76,395",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ BiologicalRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biological-relationship",
+ label=BiologicalRelationship,
+ pos="552.4,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.9583];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="810.76,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="552.4,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="965.76,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="810.76,472",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,525.19,549 98.284,549 190.55,549 424.86,549 515.16,549",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,208.32,591.11 92.973,558.33 121.83,566.53 164.42,578.63 198.5,588.32",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,199.93,260 109.98,260 134.3,260 163.84,260 189.8,260",
+ style=dotted];
+ Tag -> Keyword [pos="e,220.88,206 86.244,206 118.12,206 172.49,206 210.6,206",
+ style=dotted];
+ BiologicalAssociation -> Citation [pos="e,74.375,532.01 234.97,340.32 198.66,383.66 118.87,478.9 80.948,524.17"];
+ BiologicalAssociation -> Confidence [pos="e,98.379,271.46 193.04,299.83 165.71,291.64 133.89,282.1 108.24,274.42"];
+ BiologicalAssociation -> DataAttribute [pos="e,93.276,407.19 216.77,340.08 189.8,355.95 152.18,377.53 118.29,395 113.28,397.58 107.98,400.2 102.7,402.73"];
+ BiologicalAssociation -> Identifier [pos="e,96.091,358.71 187.76,335.03 160.8,341.99 130.26,349.88 105.82,356.2"];
+ BiologicalAssociation -> Tag [pos="e,83.925,213.63 181.57,302.01 171.87,298.05 162.46,293.12 154.29,287 131.2,269.71 140.19,251.77 118.29,233 110.97,226.72 101.94,\
+221.6 93.201,217.57"];
+ BiologicalAssociation -> Note [pos="e,87.461,314.56 154.41,315.95 134.17,315.53 114.07,315.11 97.671,314.78"];
+ BiologicalAssociation -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,264.2,340.31 e,525.26,549.44 268.21,349.78 287.54,394.39 329,474.72 391.05,516 428.36,540.82 480.55,547.59 515.13,549.12",
+ style=dotted];
+ BiologicalAssociation -> BiologicalAssociationsBiologicalAssociationsGraph [pos="e,409.54,236.12 325.56,301.7 335.89,297.75 346.06,292.91 355.05,287 375.58,273.48 369.64,257.1 391.05,245 394,243.33 397.02,241.76 \
+400.11,240.28"];
+ BiologicalAssociation -> PinboardItem [pos="e,506.72,160.17 331.15,302.73 339.9,298.67 348.15,293.52 355.05,287 388.16,255.7 355.89,219.99 391.05,191 420.17,167 462.6,160.7 \
+496.5,160.16"];
+ BiologicalAssociation -> Role [pos="e,525.18,359.92 341.6,331.37 399.27,340.34 472.27,351.69 515.2,358.37"];
+ BiologicalAssociation -> SubsequentCitation [pos="e,749.69,528.48 266.93,340.06 286.66,376.16 331.12,447.1 391.05,480 517.83,549.6 571.02,498.61 713.76,522 722.22,523.39 731.08,524.97 \
+739.86,526.61"];
+ BiologicalAssociation -> VerifierRole [pos="e,510.63,414.85 289.02,340.01 315.59,356.53 354.3,378.39 391.05,391 426.59,403.2 468.51,410.01 500.58,413.74"];
+ BiologicalAssociation -> BiologicalRelationship [dir=back,
+ pos="s,334.2,303.15 343.08,297.75 347.48,294.65 351.53,291.09 355.05,287 424.46,206.17 317.47,127.06 391.05,50 414.08,25.875 449.75,17.154 \
+481.61,14.78",
+ style=dashed];
+ BiologicalAssociation -> Creator [dir=back,
+ pos="s,334.04,303.01 342.96,297.65 347.4,294.58 351.48,291.05 355.05,287 415.86,217.88 320.51,142.18 391.05,83 445.99,36.907 642.72,73.2 \
+713.76,83 737.25,86.241 763.09,93.746 782.04,100.02",
+ style=dashed];
+ BiologicalAssociation -> Project [dir=back,
+ pos="s,333.16,302.91 342.04,297.81 346.79,294.7 351.19,291.12 355.05,287 401.88,236.93 340.93,183.78 391.05,137 427.37,103.09 489.54,\
+103.05 524.85,106.33",
+ style=dashed];
+ BiologicalAssociation -> Updater [dir=back,
+ pos="s,348.69,329.96 358.89,330.85 453.98,338.74 597.51,340.57 713.76,299 816.23,262.36 911.42,168.04 948.45,128.2",
+ style=dashed];
+ BiologicalAssociation -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,271.24,340.09 e,763.1,478.86 277.54,348.26 301.53,378.76 343.07,424.21 391.05,445 511.51,497.2 669.89,489.28 753.09,480.02"];
+ "Objects with Biological associations" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with biological association",
+ label="Objects with Biological associations",
+ pos="552.4,272",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=4.4821];
+ BiologicalAssociation -> "Objects with Biological associations" [dir=back,
+ pos="s,341.6,304.63 351.49,303.1 385.3,297.84 423.27,291.93 456.96,286.69",
+ style=dashed];
+ Source -> SubsequentCitation [pos="e,749.68,542.87 579.87,548.17 617.25,547.01 686.82,544.84 739.68,543.19",
+ style=invis];
+ Source -> OriginCitation [pos="e,763.13,486 579.87,541.05 620.58,528.82 699.48,505.12 753.37,488.94",
+ style=invis];
+ CitationTopic -> Topic [pos="e,525.1,604 300.91,604 359.61,604 460.9,604 514.94,604",
+ style=dotted];
+ Role -> Verifier [pos="e,781.88,391.63 579.87,367.2 625.56,372.73 719.39,384.07 771.95,390.43",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,907.4,541 871.79,541 880.12,541 888.73,541 897.18,541",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,781.97,397.49 594.02,414.36 642.85,409.97 724.15,402.68 771.77,398.41",
+ style=dotted];
+ Creator -> Updater [pos="e,935.69,110 839.46,110 863.49,110 898.53,110 925.45,110",
+ style=invis];
+ Project -> Creator [pos="e,782.01,110 580.35,110 626.17,110 719.38,110 771.79,110",
+ style=invis];
+}
diff --git a/data/biological_relationship_types_model_er.dot b/data/biological_relationship_types_model_er.dot
new file mode 100644
index 00000000..139ad9d8
--- /dev/null
+++ b/data/biological_relationship_types_model_er.dot
@@ -0,0 +1,153 @@
+digraph BiologicalRelationshipType {
+ graph [bb="0,0,611.78,375.49",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ BiologicalRelationshipType [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#biological-relationship-type",
+ label=BiologicalRelationshipType,
+ pos="122.89,168.49",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.4136];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="352.28,357.49",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="352.28,303.49",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="352.28,249.49",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="487.28,276.49",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ BiologicalProperty [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biological-property",
+ label=BiologicalProperty,
+ pos="352.28,195.49",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6528];
+ BiologicalRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biological-relationship",
+ label=BiologicalRelationship,
+ pos="352.28,141.49",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.9583];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="487.28,49.488",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="352.28,49.488",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="581.78,49.488",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ BiologicalRelationshipType -> PinboardItem [pos="e,306.5,343.36 140.25,190.54 166.61,224.73 221.67,290.73 281.78,330.49 286.62,333.69 291.9,336.6 297.31,339.22"];
+ BiologicalRelationshipType -> Role [pos="e,325.24,294.98 152.02,190.68 182.67,214.13 233.75,251.16 281.78,276.49 292.5,282.14 304.67,287.27 315.79,291.5"];
+ BiologicalRelationshipType -> VerifierRole [pos="e,310.63,235.01 181.86,189.14 218.66,202.25 265.82,219.04 301.03,231.59"];
+ BiologicalRelationshipType -> BiologicalProperty [dir=back,
+ pos="s,232.59,181.4 242.77,182.6 260.04,184.65 277.16,186.69 292.52,188.51",
+ style=dashed];
+ BiologicalRelationshipType -> BiologicalRelationship [dir=back,
+ pos="s,232.59,155.58 242.76,154.37 256.04,152.8 269.23,151.23 281.6,149.76",
+ style=dashed];
+ BiologicalRelationshipType -> Creator [dir=back,
+ pos="s,181.34,147.82 191,144.44 218.94,134.71 251.79,123.65 281.78,114.49 343.85,95.532 361.44,97.682 422.78,76.488 434.67,72.381 447.49,\
+67.101 458.47,62.301",
+ style=dashed];
+ BiologicalRelationshipType -> Project [dir=back,
+ pos="s,162.08,146.43 170.98,141.38 202.12,123.74 244.02,100.55 281.78,81.488 295.77,74.423 311.63,67.073 324.66,61.201",
+ style=dashed];
+ BiologicalRelationshipType -> Updater [dir=back,
+ pos="s,139.15,146.28 145.2,138.18 172.24,102.65 222.56,45.672 281.78,22.488 378.62,-15.425 413.79,2.1478 515.78,22.488 527.88,24.902 \
+540.55,29.614 551.46,34.435",
+ style=dashed];
+ Role -> Verifier [pos="e,458.68,282.09 379.56,298.15 399.29,294.15 426.6,288.6 448.65,284.13",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,458.53,270.85 393.91,257.74 411.24,261.25 431.35,265.34 448.38,268.79",
+ style=dotted];
+ Creator -> Updater [pos="e,551.61,49.488 515.78,49.488 523.81,49.488 532.74,49.488 541.35,49.488",
+ style=invis];
+ Project -> Creator [pos="e,458.36,49.488 379.88,49.488 399.42,49.488 426.26,49.488 448.09,49.488",
+ style=invis];
+}
diff --git a/data/biological_relationships_model_er.dot b/data/biological_relationships_model_er.dot
new file mode 100644
index 00000000..710b25a8
--- /dev/null
+++ b/data/biological_relationships_model_er.dot
@@ -0,0 +1,365 @@
+digraph BiologicalRelationship {
+ graph [bb="0,0,953.67,692.51",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="59.145,619.51",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,419.51",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="59.145,310.51",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="59.145,365.51",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ BiologicalAssociation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#biological-association",
+ label=BiologicalAssociation,
+ pos="501.17,395.51",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.9028];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="501.17,619.51",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ BiologicalRelationship [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#biological-relationship",
+ label=BiologicalRelationship,
+ pos="257.48,367.51",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.8665];
+ BiologicalRelationshipType [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biological-relationship-type",
+ label=BiologicalRelationshipType,
+ pos="501.17,340.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.3472];
+ BiologicalProperty [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biological-property",
+ label=BiologicalProperty,
+ pos="721.67,340.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6528];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="257.48,674.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="257.48,309.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ ObjectBiologicalRelationshipType [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#object-biological-relationship-type",
+ label=ObjectBiologicalRelationshipType,
+ pos="501.17,286.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.8472];
+ ObjectBiologicalProperty [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#object-biological-property",
+ label=ObjectBiologicalProperty,
+ pos="721.67,286.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.1528];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="501.17,232.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="501.17,178.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubjectBiologicalRelationshipType [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subject-biological-relationship-type",
+ label=SubjectBiologicalRelationshipType,
+ pos="501.17,70.512",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.9028];
+ SubjectBiologicalProperty [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subject-biological-property",
+ label=SubjectBiologicalProperty,
+ pos="721.67,70.512",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2222];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="721.67,542.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="895.67,542.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="501.17,674.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="501.17,124.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="721.67,151.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="721.67,450.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="501.17,450.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="895.67,450.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="721.67,611.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,474.16,619.51 98.425,619.51 182.46,619.51 382.09,619.51 464.08,619.51",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,211.36,661.87 93.007,628.72 122.52,636.98 166.43,649.29 201.32,659.06",
+ style=dotted];
+ Tag -> Keyword [pos="e,223.75,309.68 86.217,310.38 118.63,310.21 174.43,309.93 213.28,309.73",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,669.26,560.63 528.53,610.22 560.82,598.85 616.55,579.21 659.7,564",
+ style=invis];
+ Source -> OriginCitation [pos="e,673.95,613.22 528.53,618.55 561.84,617.33 620.09,615.19 663.75,613.6",
+ style=invis];
+ BiologicalRelationship -> Citation [pos="e,73.332,602.59 239.25,389.63 202.74,436.49 117.8,545.51 79.493,594.68"];
+ BiologicalRelationship -> DataAttribute [pos="e,104.21,407.84 190.56,384.97 165.69,391.56 137.7,398.97 114.05,405.23"];
+ BiologicalRelationship -> Tag [pos="e,84.22,317.5 193.84,349.33 160.77,339.73 121.49,328.32 94.099,320.37"];
+ BiologicalRelationship -> Note [pos="e,87.445,365.79 154.07,366.47 133.86,366.26 113.89,366.06 97.588,365.89"];
+ BiologicalRelationship -> BiologicalAssociation [pos="e,432.33,387.65 357.48,378.98 379.11,381.49 401.69,384.1 422.35,386.5"];
+ BiologicalRelationship -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,266.47,389.75 e,474.04,616.28 270.21,399.24 289.38,446.83 331.93,536.44 396.67,586.51 416.16,601.58 442.71,609.87 464.04,614.36",
+ style=dotted];
+ BiologicalRelationship -> BiologicalRelationshipType [pos="e,416.58,349.85 358.88,356.3 374.63,354.54 390.85,352.72 406.44,350.98"];
+ BiologicalRelationship -> ObjectBiologicalRelationshipType [pos="e,420.48,304.57 325.16,350.18 337.2,346.24 349.48,341.67 360.67,336.51 377.92,328.57 379.28,321.11 396.67,313.51 401.29,311.5 406.09,\
+309.6 410.98,307.83"];
+ BiologicalRelationship -> PinboardItem [pos="e,455.5,235.63 335.34,352.09 344.52,348.05 353.25,342.95 360.67,336.51 389.23,311.77 367.64,283.68 396.67,259.51 410.39,248.09 428.4,\
+241.44 445.55,237.59"];
+ BiologicalRelationship -> Role [pos="e,474.12,178.36 337.94,352.5 346.37,348.38 354.21,343.15 360.67,336.51 402.8,293.26 353.7,247.93 396.67,205.51 414.36,188.06 441.83,\
+181.47 464.03,179.16"];
+ BiologicalRelationship -> SubjectBiologicalRelationshipType [pos="e,406.58,88.681 339.72,352.71 347.62,348.54 354.85,343.24 360.67,336.51 430.93,255.25 324.83,177.38 396.67,97.512 397.33,96.787 \
+398,96.081 398.68,95.392"];
+ BiologicalRelationship -> SubsequentCitation [pos="e,660.49,545.41 274.32,389.69 297.42,420.13 343.43,473.97 396.67,499.51 477.58,538.32 582.16,545.59 650.29,545.48"];
+ BiologicalRelationship -> VerifierRole [pos="e,459.6,125.13 338.94,352.71 347.09,348.55 354.59,343.26 360.67,336.51 416.8,274.33 339.34,212.58 396.67,151.51 410.25,137.05 430.51,\
+129.96 449.52,126.6"];
+ BiologicalRelationship -> Creator [dir=back,
+ pos="s,277.27,389.65 284.33,397.25 309.79,424.08 351.36,461.68 396.67,477.51 501.11,514 635.55,478.79 692.83,460.28",
+ style=dashed];
+ BiologicalRelationship -> Project [dir=back,
+ pos="s,306.59,388.23 316.12,392.16 340.7,402.23 369.86,413.58 396.67,422.51 422.46,431.1 452.5,439 473.55,444.2",
+ style=dashed];
+ BiologicalRelationship -> Updater [dir=back,
+ pos="s,339.9,352.86 348.76,347.4 353.16,344.27 357.18,340.66 360.67,336.51 445.12,236.1 298.41,130.44 396.67,43.512 464.08,-16.121 731.3,\
+-12.593 801.67,43.512 864.16,93.328 888,359.28 893.41,432.08",
+ style=dashed];
+ BiologicalRelationship -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,270.07,389.57 e,674.13,602.47 275.04,398.29 297.4,436.79 340.96,501.86 396.67,536.51 419.28,550.57 577.51,583.31 664.19,600.51"];
+ BiologicalRelationshipType -> BiologicalProperty [pos="e,661.94,340.51 585.72,340.51 607.56,340.51 630.86,340.51 651.84,340.51",
+ style=dotted];
+ CitationTopic -> Topic [pos="e,473.88,674.51 303.66,674.51 349.88,674.51 420.83,674.51 463.64,674.51",
+ style=dotted];
+ ObjectBiologicalRelationshipType -> ObjectBiologicalProperty [pos="e,644.17,286.51 603.75,286.51 613.84,286.51 624.02,286.51 633.94,286.51",
+ style=dotted];
+ Role -> Verifier [pos="e,692.85,154.95 528.53,175.26 566.99,170.5 638.7,161.64 682.8,156.19",
+ style=invis];
+ SubjectBiologicalRelationshipType -> SubjectBiologicalProperty [pos="e,641.67,70.512 605.99,70.512 614.52,70.512 623.09,70.512 631.51,70.512",
+ style=dotted];
+ SubsequentCitation -> SubsequentSource [pos="e,837.44,542.51 782.83,542.51 797.24,542.51 812.71,542.51 827.41,542.51",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,693.11,148.11 542.76,129.53 582.98,134.5 644.08,142.05 683.18,146.88",
+ style=dotted];
+ Creator -> Updater [pos="e,865.67,450.51 750.31,450.51 778.72,450.51 823.22,450.51 855.31,450.51",
+ style=invis];
+ Project -> Creator [pos="e,692.97,450.51 528.97,450.51 567.58,450.51 639.05,450.51 682.97,450.51",
+ style=invis];
+}
diff --git a/data/character_states_model_er.dot b/data/character_states_model_er.dot
new file mode 100644
index 00000000..b354389f
--- /dev/null
+++ b/data/character_states_model_er.dot
@@ -0,0 +1,417 @@
+digraph CharacterState {
+ graph [bb="0,0,761.39,668.88",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="63.694,623.88",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="63.694,541.88",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="63.694,275.88",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="63.694,437.88",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="63.694,221.88",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="63.694,383.88",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="63.694,167.88",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="63.694,329.88",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Observation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#observation",
+ label=Observation,
+ pos="400.89,209.88",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="400.89,541.88",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Descriptor [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#descriptor",
+ label=Descriptor,
+ pos="400.89,45.883",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ }
+ subgraph supporting {
+ CharacterState [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#character-state",
+ label=CharacterState,
+ pos="238.89,333.88",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.9871];
+ AlternateValueLanguage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-language",
+ label=AlternateValueLanguage,
+ pos="238.89,650.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0972];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="238.89,596.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="238.89,275.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Documentation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#documentation",
+ label=Documentation,
+ pos="400.89,356.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4028];
+ Document [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#document",
+ label=Document,
+ pos="548.39,356.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="238.89,221.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="238.89,167.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="400.89,448.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="400.89,264.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="548.39,517.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="703.39,517.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="400.89,596.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="400.89,154.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="548.39,209.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="548.39,100.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="400.89,100.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="703.39,100.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="548.39,448.88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ AlternateValue -> AlternateValueLanguage [pos="e,163.23,639.24 119.97,632.5 130.61,634.16 141.99,635.93 153.31,637.7",
+ style=dotted];
+ Citation -> Source [pos="e,373.76,541.88 102.82,541.88 167.86,541.88 299.43,541.88 363.37,541.88",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,192.62,582.51 96.461,551.97 120.57,559.63 154.31,570.34 182.79,579.39",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,184.28,275.88 114.79,275.88 133.34,275.88 154.62,275.88 174.21,275.88",
+ style=dotted];
+ Depiction -> Image [pos="e,211.74,221.88 109.3,221.88 137.96,221.88 174.73,221.88 201.61,221.88",
+ style=dotted];
+ Tag -> Keyword [pos="e,205.11,167.88 90.999,167.88 118.58,167.88 162.36,167.88 194.96,167.88",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,487.18,527.81 427.9,537.59 441.7,535.32 459.4,532.4 476.92,529.51",
+ style=invis];
+ Source -> OriginCitation [pos="e,519.12,466.95 427.9,525.26 450.86,510.58 484.59,489.02 510.36,472.55",
+ style=invis];
+ CharacterState -> AlternateValue [pos="e,88.29,607.02 230.95,355.92 216.51,399.57 180.11,498.82 127.39,568.88 118.65,580.5 107.12,591.46 96.334,600.5"];
+ CharacterState -> Citation [pos="e,78.575,525.21 219.32,356.18 186.63,395.45 119.04,476.62 85.09,517.39"];
+ CharacterState -> Confidence [pos="e,101.42,288.18 189.05,317.53 164.6,309.34 135.15,299.48 111.05,291.41"];
+ CharacterState -> DataAttribute [pos="e,100.77,423.82 209.84,355.8 188.1,372.2 156.81,394.52 127.39,410.88 121.88,413.94 115.96,416.9 110.03,419.66"];
+ CharacterState -> Depiction [pos="e,99.906,232.88 187.49,317.71 178.94,313.66 170.53,308.76 163.39,302.88 141.12,284.55 149.55,267.35 127.39,248.88 122.01,244.4 115.77,\
+240.54 109.35,237.27"];
+ CharacterState -> Identifier [pos="e,99.743,373.76 184.8,349.21 160.73,356.16 132.58,364.28 109.58,370.92"];
+ CharacterState -> Tag [pos="e,89.582,173.38 184.95,318.61 176.96,314.5 169.4,309.35 163.39,302.88 128.93,265.83 161.62,232.15 127.39,194.88 119.86,186.68 109.41,\
+180.86 99.195,176.78"];
+ CharacterState -> Note [pos="e,91.756,330.51 167.32,332.25 144.87,331.73 120.94,331.18 101.83,330.74"];
+ CharacterState -> Observation [pos="e,362.57,227.94 291.08,318 299.46,313.94 307.6,308.95 314.39,302.88 339,280.87 327.14,261.34 350.39,237.88 351.63,236.63 352.94,\
+235.41 354.3,234.24"];
+ CharacterState -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,250.1,356.11 e,373.65,527.31 254.69,365.48 273.26,402.8 307.89,465.32 350.39,508.88 354.84,513.44 360.02,517.72 365.32,521.59",
+ style=dotted];
+ CharacterState -> Descriptor [dir=back,
+ pos="s,294.52,319.02 303.08,313.63 307.32,310.54 311.17,306.98 314.39,302.88 378.06,221.88 291.71,158.57 350.39,73.883 353.88,68.851 \
+358.58,64.614 363.7,61.082",
+ style=dashed];
+ CharacterState -> Documentation [pos="e,350.25,349.75 310.53,344.04 320.47,345.47 330.61,346.92 340.32,348.32"];
+ CharacterState -> PinboardItem [pos="e,371.13,430.78 268.1,355.94 290.19,373 321.85,396.98 350.39,416.88 354.33,419.63 358.48,422.44 362.64,425.21"];
+ CharacterState -> Role [pos="e,373.77,276.69 283.3,316.03 293.51,311.77 304.35,307.2 314.39,302.88 330.95,295.76 349.22,287.67 364.6,280.79"];
+ CharacterState -> SubsequentCitation [pos="e,487.37,515.76 250.73,356.1 267.47,387.95 302.74,446.03 350.39,475.88 388.28,499.63 437.47,510.13 477.21,514.69"];
+ CharacterState -> VerifierRole [pos="e,360.81,172.96 293.37,318.57 301.2,314.48 308.57,309.33 314.39,302.88 351.69,261.54 315.65,226.4 350.39,182.88 351.22,181.84 352.1,\
+180.83 353.03,179.85"];
+ CharacterState -> Creator [dir=back,
+ pos="s,295.07,318.95 303.74,313.34 307.74,310.32 311.36,306.85 314.39,302.88 391.76,201.33 254.62,102.31 350.39,17.883 384.06,-11.803 \
+409.32,2.2186 451.39,17.883 486.08,30.799 516.58,62.507 533.45,82.781",
+ style=dashed];
+ CharacterState -> Project [dir=back,
+ pos="s,294.25,318.8 302.87,313.46 307.15,310.4 311.08,306.9 314.39,302.88 364.91,241.62 303.15,191.71 350.39,127.88 356.15,120.09 364.86,\
+114.29 373.38,110.1",
+ style=dashed];
+ CharacterState -> Updater [dir=back,
+ pos="s,310.56,331.29 320.65,330.44 401.24,323.23 524.9,301.51 609.39,236.88 651.42,204.73 681.27,148.03 694.59,119.04",
+ style=dashed];
+ CharacterState -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,279.09,352.85 e,500.72,435.02 288.22,357.1 307.38,365.94 329.74,375.83 350.39,383.88 397.1,402.1 451.26,419.72 490.95,432.01"];
+ CitationTopic -> Topic [pos="e,373.83,596.88 285.31,596.88 310.15,596.88 340.49,596.88 363.71,596.88",
+ style=dotted];
+ Documentation -> Document [pos="e,511.26,356.88 451.55,356.88 467.63,356.88 485.38,356.88 501.19,356.88",
+ style=dotted];
+ Role -> Verifier [pos="e,519.87,220.28 427.9,255.05 450.88,246.36 484.64,233.6 510.42,223.86",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,645.03,517.88 609.42,517.88 617.75,517.88 626.36,517.88 634.82,517.88",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,519.5,199.34 442.42,170.2 463.61,178.22 489.38,187.96 510.09,195.78",
+ style=dotted];
+ Creator -> Updater [pos="e,673.33,100.88 577.1,100.88 601.12,100.88 636.16,100.88 663.08,100.88",
+ style=invis];
+ Project -> Creator [pos="e,519.88,100.88 428.58,100.88 451.36,100.88 484.39,100.88 509.84,100.88",
+ style=invis];
+}
diff --git a/data/citation_topics_model_er.dot b/data/citation_topics_model_er.dot
new file mode 100644
index 00000000..248496f2
--- /dev/null
+++ b/data/citation_topics_model_er.dot
@@ -0,0 +1,167 @@
+digraph CitationTopic {
+ graph [bb="0,0,567.44,367.64",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="38.997,163.14",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="332.94,349.14",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ CitationTopic [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="182.71,163.14",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.9089];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="332.94,294.14",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="332.94,240.14",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="332.94,186.14",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="442.94,213.14",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="442.94,94.141",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="332.94,94.141",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="332.94,40.141",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="537.44,94.141",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ CitationTopic -> Citation [dir=back,
+ pos="s,113.84,163.14 103.84,163.14 95.012,163.14 86.328,163.14 78.347,163.14",
+ style=dashed];
+ CitationTopic -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,194.29,185.17 e,305.61,335.18 198.92,194.19 216.7,228.26 248.68,283.13 287.44,321.14 290.44,324.09 293.81,326.88 297.31,329.48",
+ style=dotted];
+ CitationTopic -> PinboardItem [pos="e,299.71,275.87 203,185.41 222.86,207.61 255.36,241.93 287.44,267.14 288.63,268.08 289.87,269.02 291.13,269.94"];
+ CitationTopic -> Role [pos="e,305.62,226.47 220.73,182.37 243.95,194.43 273.7,209.89 296.59,221.78"];
+ CitationTopic -> VerifierRole [pos="e,291.38,179.85 251.75,173.7 261.7,175.24 271.79,176.81 281.31,178.29"];
+ CitationTopic -> Creator [dir=back,
+ pos="s,249.88,152.1 259.91,150.18 296.22,143.13 340.02,133.33 378.44,121.14 390.43,117.34 403.26,112.11 414.23,107.27",
+ style=dashed];
+ CitationTopic -> Project [dir=back,
+ pos="s,223.43,144.65 232.81,140.29 256.95,129.05 285.1,115.94 305.22,106.58",
+ style=dashed];
+ CitationTopic -> Topic [dir=back,
+ pos="s,205.23,140.79 212.52,133.51 232.6,113.62 260.51,87.444 287.44,67.141 293.06,62.897 299.39,58.733 305.47,54.994",
+ style=dashed];
+ CitationTopic -> Updater [dir=back,
+ pos="s,191.36,140.92 195.18,131.32 210.15,95.158 240.15,37.935 287.44,13.141 366.35,-28.233 470.38,41.228 514.82,76.06",
+ style=dashed];
+ Role -> Verifier [pos="e,414.14,220.09 360.08,233.6 373.37,230.28 389.76,226.19 404.37,222.53",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,414.3,206.23 374.46,196.27 384.32,198.74 394.82,201.36 404.53,203.79",
+ style=dotted];
+ Creator -> Updater [pos="e,507.27,94.141 471.44,94.141 479.46,94.141 488.4,94.141 497.01,94.141",
+ style=invis];
+ Project -> Creator [pos="e,414.42,94.141 360.63,94.141 373.8,94.141 389.91,94.141 404.31,94.141",
+ style=invis];
+}
diff --git a/data/citations_model_er.dot b/data/citations_model_er.dot
new file mode 100644
index 00000000..44982948
--- /dev/null
+++ b/data/citations_model_er.dot
@@ -0,0 +1,229 @@
+digraph Citation {
+ graph [bb="0,0,564.81,491.5",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="69.467,233",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.2836];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="69.467,81",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="69.467,175",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="255.24,473",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="255.24,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ Document [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#document",
+ label=Document,
+ pos="431.81,473",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="255.24,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="255.24,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="255.24,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="431.81,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="255.24,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="431.81,283",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="431.81,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="255.24,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="534.81,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Citation -> Tag [pos="e,52.267,94.881 32.746,218.57 21.937,212.4 11.378,204.02 5.2577,193 -2.5089,179.01 -0.23997,172.03 5.2577,157 13.12,135.51 30.038,\
+115.91 44.535,102"];
+ Citation -> Note [pos="e,69.467,193.12 69.467,210.88 69.467,208.38 69.467,205.89 69.467,203.39"];
+ Citation -> Source [dir=back,
+ pos="s,72.476,255.25 73.786,265.39 80.305,311.94 99.089,397.39 151.68,445 172.61,463.95 205.16,470.25 227.96,472.25",
+ style=dashed];
+ Citation -> CitationTopic [pos="e,209.17,414.34 75.626,255.03 84.837,289.39 107.43,355.46 151.68,391 165.11,401.79 182.43,408.3 199,412.22"];
+ Citation -> PinboardItem [pos="e,209.74,358.75 81.992,255.2 95.502,279.01 120.11,316.2 151.68,337 165.94,346.4 183.33,352.53 199.71,356.53"];
+ Citation -> Role [pos="e,227.83,305.28 96.1,251.5 111.58,261.96 132.04,274.59 151.68,283 172.87,292.07 197.86,298.73 217.87,303.16"];
+ Citation -> VerifierRole [pos="e,213.72,250.93 115.9,238.69 142.47,242.01 176.09,246.22 203.53,249.65"];
+ Citation -> Creator [dir=back,
+ pos="s,116.01,229.4 126.16,228.45 184.76,222.84 279.32,211.44 358.81,191 373.81,187.14 390,181.24 403.22,175.93",
+ style=dashed];
+ Citation -> Project [dir=back,
+ pos="s,102.87,217.11 112.17,212.79 124.73,207.03 138.64,200.98 151.68,196 176.94,186.35 206.49,177.36 227.37,171.39",
+ style=dashed];
+ Citation -> Updater [dir=back,
+ pos="s,99.817,215.84 107.89,209.5 110.66,207.12 113.3,204.61 115.68,202 137.89,177.56 123.23,153.77 151.68,137 212.39,101.22 399.7,123.22 \
+468.81,137 480.92,139.41 493.59,144.13 504.49,148.95",
+ style=dashed];
+ "Objects with Citations" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with citation",
+ label="Objects with Citations",
+ pos="255.24,72",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=2.8769];
+ Citation -> "Objects with Citations" [dir=back,
+ pos="s,100.91,216.01 108.8,209.46 111.3,207.12 113.63,204.63 115.68,202 144.16,165.37 118.06,135.99 151.68,104 161.14,94.999 173.09,88.528 \
+185.47,83.876",
+ style=dashed];
+ Tag -> Keyword [pos="e,221.51,25.205 91.803,70.416 107.97,62.677 130.87,52.299 151.68,45 171.03,38.212 192.96,32.22 211.55,27.616",
+ style=dotted];
+ Source -> Document [pos="e,394.79,473 282.38,473 309.33,473 351.91,473 384.56,473",
+ style=dotted];
+ CitationTopic -> Topic [pos="e,404.6,418 301.65,418 330.55,418 367.47,418 394.43,418",
+ style=dotted];
+ Role -> Verifier [pos="e,403.05,287.29 282.38,305.96 311.65,301.43 359.34,294.05 392.75,288.89",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,403.2,278.73 297.17,262.33 326.25,266.83 365,272.82 393.29,277.2",
+ style=dotted];
+ Creator -> Updater [pos="e,504.48,164 460.41,164 470.87,164 483,164 494.35,164",
+ style=invis];
+ Project -> Creator [pos="e,403.18,164 282.76,164 312.11,164 359.65,164 392.92,164",
+ style=invis];
+}
diff --git a/data/collecting_events_model_er.dot b/data/collecting_events_model_er.dot
new file mode 100644
index 00000000..52a8aee3
--- /dev/null
+++ b/data/collecting_events_model_er.dot
@@ -0,0 +1,591 @@
+digraph CollectingEvent {
+ graph [bb="0,0,858.62,1147",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="59.145,1074",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="59.145,736",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,682",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="59.145,520",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="59.145,628",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="59.145,466",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="59.145,574",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ CollectingEvent [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#collecting-event",
+ label=CollectingEvent,
+ pos="231.45,603",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.1434];
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="427.12,873",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="626.12,873",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="427.12,1074",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="231.45,1129",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ CollectorRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#collector-role",
+ label=CollectorRole,
+ pos="427.12,818",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ Collector [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#collector",
+ label=Collector,
+ pos="626.12,818",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="231.45,736",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Documentation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#documentation",
+ label=Documentation,
+ pos="427.12,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4028];
+ Document [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#document",
+ label=Document,
+ pos="626.12,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ DwcOccurrence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#dwc-occurrence",
+ label=DwcOccurrence,
+ pos="626.12,928",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ Georeference [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#georeference",
+ label=Georeference,
+ pos="427.12,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2361];
+ ErrorGeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#error-geographic-item",
+ label=ErrorGeographicItem,
+ pos="626.12,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8611];
+ GeoLocateGeoreference [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geo-locate-georeference",
+ label=GeoLocateGeoreference,
+ pos="427.12,526",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0694];
+ GeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-item",
+ label=GeographicItem,
+ pos="626.12,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4583];
+ GpxGeoreference [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#gpx-georeference",
+ label=GpxGeoreference,
+ pos="427.12,472",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5694];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="231.45,520",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="231.45,466",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ Label [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#label",
+ label=Label,
+ pos="427.12,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="626.12,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="427.12,580",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="626.12,1074",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="800.62,1074",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="427.12,1129",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="427.12,326",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="626.12,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="427.12,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="626.12,672",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ GeographicArea [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-area",
+ label=GeographicArea,
+ pos="427.12,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4722];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="427.12,672",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="800.62,672",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ AccessionProviderRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#accession-provider-role",
+ label=AccessionProviderRole,
+ pos="626.12,545",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2];
+ DeaccessionRecipientRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#deaccession-recipient-role",
+ label=DeaccessionRecipientRole,
+ pos="626.12,599",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2361];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="626.12,1020",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ VerbatimDataGeoreference [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verbatim-data-georeference",
+ label=VerbatimDataGeoreference,
+ pos="427.12,726",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2917];
+ }
+ Citation -> Source [pos="e,399.81,1074 98.274,1074 169.15,1074 320.27,1074 389.77,1074",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,185.18,1114.4 91.779,1084.2 115.27,1091.8 147.9,1102.3 175.61,1111.3",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,176.81,736 109.86,736 127.59,736 147.81,736 166.56,736",
+ style=dotted];
+ Depiction -> Image [pos="e,204.03,520 104.89,520 132.61,520 167.76,520 193.82,520",
+ style=dotted];
+ Tag -> Keyword [pos="e,197.77,466 86.382,466 113.29,466 155.6,466 187.42,466",
+ style=dotted];
+ CollectingEvent -> Citation [pos="e,62.423,1055.7 210.86,625.02 193.64,645.45 169.08,677.39 154.29,709 98.958,827.22 72.697,982.8 63.796,1045.8"];
+ CollectingEvent -> Confidence [pos="e,93.746,722.64 211.11,625.1 190.02,648.22 154.43,684.49 118.29,709 113.45,712.28 108.15,715.35 102.78,718.16"];
+ CollectingEvent -> DataAttribute [pos="e,92.579,666.95 189.09,622.19 162.66,634.45 128.5,650.29 101.98,662.6"];
+ CollectingEvent -> Depiction [pos="e,89.502,533.44 191.4,583.16 169.9,572.33 142.7,558.76 118.29,547 112.02,543.98 105.35,540.83 98.848,537.79"];
+ CollectingEvent -> Identifier [pos="e,100.07,622.14 155.68,613.98 140.28,616.24 124.42,618.57 110.15,620.66"];
+ CollectingEvent -> Tag [pos="e,83.925,473.63 196.56,581.87 182.57,572.23 166.76,560.06 154.29,547 134.37,526.14 140.19,511.77 118.29,493 110.97,486.72 101.94,\
+481.6 93.201,477.57"];
+ CollectingEvent -> Note [pos="e,86.382,578.47 159.66,590.95 137.89,587.24 114.82,583.31 96.384,580.17"];
+ CollectingEvent -> CollectionObject [pos="e,372.54,862.96 252,625.04 269.19,645.49 293.72,677.44 308.62,709 335.3,765.55 302.03,799.22 344.62,845 349.8,850.57 356.14,855.04 \
+362.98,858.61"];
+ CollectingEvent -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,253.85,625.34 e,399.8,1070.5 260.62,633.14 277.53,653.1 297.79,680.73 308.62,709 335.14,778.31 299.88,981.79 344.62,1041 355.44,\
+1055.3 373.51,1063.5 389.9,1068.1",
+ style=dotted];
+ CollectingEvent -> CollectorRole [pos="e,380.76,807.05 250.37,625.33 266.68,646.23 290.85,678.7 308.62,709 327.72,741.59 317.07,760.14 344.62,786 352.26,793.17 361.7,798.81 \
+371.41,803.2"];
+ CollectingEvent -> Documentation [pos="e,376.5,279.05 271.43,582.96 285.34,573.85 299.75,561.78 308.62,547 365.92,451.5 273.08,384.36 344.62,299 350.59,291.87 358.5,286.61 \
+367.04,282.73"];
+ CollectingEvent -> Georeference [pos="e,382.29,223.11 271.63,583.07 285.57,573.98 299.94,561.89 308.62,547 376.68,430.22 259.12,349.7 344.62,245 351.76,236.25 361.82,\
+230.31 372.44,226.29"];
+ CollectingEvent -> GeoLocateGeoreference [pos="e,369.3,544.02 273.32,583.61 294.41,573.9 320.66,562.28 344.62,553 349.44,551.13 354.46,549.27 359.53,547.45"];
+ CollectingEvent -> GpxGeoreference [pos="e,370.42,485.38 265.62,581.79 279.64,572.05 295.67,559.82 308.62,547 327.56,528.23 322.97,514.57 344.62,499 349.7,495.34 355.31,\
+492.16 361.13,489.39"];
+ CollectingEvent -> Label [pos="e,399.87,420.67 269.19,582.51 283.13,573.2 298.16,561.11 308.62,547 337.25,508.38 310.29,478.66 344.62,445 356.75,433.1 374.24,426.44 \
+389.91,422.72"];
+ CollectingEvent -> PinboardItem [pos="e,590.07,91.853 271.95,583.26 285.93,574.19 300.25,562.06 308.62,547 358.84,456.59 268.71,153.24 344.62,83 408.52,23.86 519.15,60.002 \
+580.64,87.525"];
+ CollectingEvent -> Role [pos="e,399.66,583.14 308.72,593.94 336.49,590.64 366.64,587.06 389.43,584.36"];
+ CollectingEvent -> SubsequentCitation [pos="e,564.92,1059.2 253.74,625.39 271.57,645.57 296.07,676.92 308.62,709 332.43,769.89 301.53,951.82 344.62,1001 348.18,1005.1 473.24,\
+1036.5 555.15,1056.8"];
+ CollectingEvent -> VerifierRole [pos="e,385.56,333.31 270.7,583.01 284.69,573.85 299.34,561.72 308.62,547 354.22,474.67 290.02,423.82 344.62,358 352.73,348.21 364.25,\
+341.41 376.07,336.68"];
+ CollectingEvent -> Version [pos="e,400.06,128.05 271.77,583.15 285.72,574.08 300.07,561.97 308.62,547 387.47,408.9 276.21,334.57 344.62,191 355.23,168.71 374.63,\
+149.05 391.84,134.67"];
+ CollectingEvent -> Creator [dir=back,
+ pos="s,248.21,625.14 254.22,633.54 284.95,676.44 338.05,749.71 344.62,753 410.18,785.84 439.68,775.08 509.62,753 548.62,740.69 585.89,\
+709.97 607.09,690.1",
+ style=dashed];
+ CollectingEvent -> GeographicArea [dir=back,
+ pos="s,271.99,583.28 280.5,577.38 291.54,569.17 301.98,559.02 308.62,547 362.15,450.06 278.98,139.18 344.62,50 351.82,40.206 362.49,33.408 \
+373.74,28.691",
+ style=dashed];
+ CollectingEvent -> Project [dir=back,
+ pos="s,281.32,620.41 290.77,623.78 326.85,636.63 371.46,652.52 399.35,662.46",
+ style=dashed];
+ CollectingEvent -> Updater [dir=back,
+ pos="s,252.89,625.19 259.54,633.05 276.21,653.16 296.62,680.99 308.62,709 342.63,788.41 286.05,836.5 344.62,900 407.41,968.08 453.82,\
+942.67 545.62,955 616.53,964.53 648.66,996.96 706.62,955 794.38,891.46 800.78,742.39 800.21,690.33",
+ style=dashed];
+ CollectingEvent -> AccessionProviderRole [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,270.41,582.82 e,609.99,526.93 278.62,577.11 289.9,568.81 300.92,558.7 308.62,547 347.72,487.55 288.93,435.3 344.62,391 402.01,\
+345.35 444.96,356.4 509.62,391 535.05,404.61 528.63,421.69 545.62,445 564.45,470.83 587.28,499.28 603.63,519.2"];
+ CollectingEvent -> DeaccessionRecipientRole [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,308.77,606.09 e,545.31,605.25 318.93,606.39 327.61,606.64 336.28,606.85 344.62,607 417.94,608.31 436.33,609.54 509.62,607 517.92,\
+606.71 526.55,606.31 535.19,605.84"];
+ CollectingEvent -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,253.25,625.04 e,578.48,1017.3 259.98,632.86 276.83,652.9 297.27,680.72 308.62,709 351.38,815.64 265.59,881.6 344.62,965 374.55,\
+996.59 495.11,1010.7 568.08,1016.5"];
+ CollectingEvent -> VerbatimDataGeoreference [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,253.27,625.27 e,363.19,707.93 260.41,632.41 281.78,653.44 312.87,681.08 344.62,699 347.63,700.7 350.76,702.31 353.97,703.84"];
+ CollectionObject -> Otu [pos="e,598.96,873 481.69,873 515.73,873 558.88,873 588.92,873",
+ style=dotted];
+ CollectionObject -> DwcOccurrence [pos="e,573.93,913.71 481.69,887.96 507.15,895.06 537.7,903.6 564.06,910.95",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,564.81,1074 454.28,1074 479.81,1074 519.79,1074 554.65,1074",
+ style=invis];
+ Source -> OriginCitation [pos="e,578.42,1032.8 454.28,1066.8 483.29,1058.9 530.97,1045.8 568.6,1035.5",
+ style=invis];
+ CitationTopic -> Topic [pos="e,400.03,1129 277.86,1129 312.01,1129 358.18,1129 389.88,1129",
+ style=dotted];
+ CollectorRole -> Collector [pos="e,592.42,818 473.31,818 506.11,818 550.2,818 582.41,818",
+ style=dotted];
+ Documentation -> Document [pos="e,589.1,272 477.83,272 508.82,272 548.44,272 578.78,272",
+ style=dotted];
+ Georeference -> ErrorGeographicItem [pos="e,559.43,182.01 471.84,206.02 494.65,199.76 523.22,191.93 549.49,184.73",
+ style=dotted];
+ Georeference -> GeographicItem [pos="e,573.49,218 471.84,218 498.71,218 533.55,218 563.23,218",
+ style=dotted];
+ Role -> Verifier [pos="e,611.48,436.25 454.33,575.13 471.16,571.12 492.91,564.22 509.62,553 532.22,537.82 578.57,479.38 605.17,444.56",
+ style=invis];
+ Role -> AccessionProviderRole [pos="e,553.83,557.67 454.28,575.35 477.23,571.27 511.87,565.12 543.96,559.42",
+ style=invis];
+ Role -> DeaccessionRecipientRole [pos="e,545.58,591.33 454.28,582.52 475.25,584.55 505.96,587.51 535.59,590.37",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,742.51,1074 687.45,1074 701.97,1074 717.58,1074 732.4,1074",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,597.51,402.62 468.68,340.96 481.86,346.08 496.47,352.02 509.62,358 536.56,370.25 566.16,385.66 588.65,397.8",
+ style=dotted];
+ Version -> PinboardItem [pos="e,580.57,110 456.34,110 486,110 533.4,110 570.43,110",
+ style=invis];
+ Creator -> Updater [pos="e,770.53,672 654.83,672 683.32,672 727.95,672 760.13,672",
+ style=invis];
+ Project -> Creator [pos="e,597.38,672 454.68,672 488.76,672 548.1,672 587,672",
+ style=invis];
+}
diff --git a/data/collection_object_observations_model_er.dot b/data/collection_object_observations_model_er.dot
new file mode 100644
index 00000000..7a12a3e4
--- /dev/null
+++ b/data/collection_object_observations_model_er.dot
@@ -0,0 +1,214 @@
+digraph CollectionObjectObservation {
+ graph [bb="0,0,810.21,333.76",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="45.496,209.26",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="45.496,97.256",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="45.496,153.26",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="659.71,315.26",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ }
+ subgraph supporting {
+ CollectionObjectObservation [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#collection-object-observation",
+ label=CollectionObjectObservation,
+ pos="254.1,153.26",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.5309];
+ DerivedCollectionObject [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#derived-collection-object",
+ label=DerivedCollectionObject,
+ pos="493.21,315.26",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.1111];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="254.1,211.26",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="254.1,95.256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="493.21,261.26",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="493.21,207.26",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="493.21,153.26",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="659.71,180.26",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="659.71,61.256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="493.21,61.256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="780.21,61.256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Depiction -> Image [pos="e,226.88,211 91.072,209.69 128.59,210.05 181.59,210.56 216.62,210.9",
+ style=dotted];
+ Tag -> Keyword [pos="e,220.35,95.573 72.663,97.003 107.3,96.668 168.81,96.072 210.27,95.671",
+ style=dotted];
+ CollectionObjectObservation -> Depiction [pos="e,81.228,197.97 175.88,171.46 159.68,175.5 142.74,179.88 126.99,184.26 115.21,187.53 102.53,191.33 90.812,194.97"];
+ CollectionObjectObservation -> Tag [pos="e,69.985,104.96 175.88,135.05 159.68,131.02 142.74,126.63 126.99,122.26 111.3,117.89 94.033,112.6 79.53,108.01"];
+ CollectionObjectObservation -> Note [pos="e,73.506,153.26 126.57,153.26 110.96,153.26 96.098,153.26 83.511,153.26"];
+ CollectionObjectObservation -> DerivedCollectionObject [pos="e,428.29,297.11 355.93,167.93 365.15,172.15 373.8,177.5 381.21,184.26 417.36,217.21 382.84,253.46 417.21,288.26 418.14,289.2 419.11,\
+290.11 420.11,290.98"];
+ CollectionObjectObservation -> PinboardItem [pos="e,447.53,250.12 350.19,168.8 361.16,172.82 371.78,177.88 381.21,184.26 403.91,199.58 395.35,217.77 417.21,234.26 423.51,239 430.71,\
+242.97 438.11,246.28"];
+ CollectionObjectObservation -> Role [pos="e,466.09,201.31 333.73,171.16 375.09,180.58 423.79,191.67 456.18,199.05"];
+ CollectionObjectObservation -> VerifierRole [pos="e,451.49,153.26 381.3,153.26 402.56,153.26 423.49,153.26 441.35,153.26"];
+ CollectionObjectObservation -> Creator [dir=back,
+ pos="s,344.61,136.93 354.78,134.98 416.79,123.03 498.01,106.32 569.21,88.256 590.14,82.947 613.48,75.867 631.07,70.289",
+ style=dashed];
+ CollectionObjectObservation -> Project [dir=back,
+ pos="s,343.69,136.72 353.36,133.63 362.98,130.37 372.42,126.61 381.21,122.26 399.63,113.14 399.6,103.83 417.21,93.256 432.51,84.075 450.91,\
+76.179 465.67,70.528",
+ style=dashed];
+ CollectionObjectObservation -> Updater [dir=back,
+ pos="s,354.92,138.44 364.11,133.95 370.22,130.63 376,126.76 381.21,122.26 413.21,94.655 382.13,57.81 417.21,34.256 521.86,-35.999 683.94,\
+19.999 749.85,47.86",
+ style=dashed];
+ DerivedCollectionObject -> CollectionObject [pos="e,604.92,315.26 569.24,315.26 577.8,315.26 586.46,315.26 594.85,315.26",
+ style=dotted];
+ Role -> Verifier [pos="e,631.12,184.78 520.28,202.98 547.47,198.52 590.34,191.48 621.17,186.42",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,631.13,175.73 534.88,159.93 561.22,164.25 595.28,169.84 621.01,174.07",
+ style=dotted];
+ Creator -> Updater [pos="e,749.95,61.256 688.5,61.256 703.79,61.256 723.03,61.256 739.85,61.256",
+ style=invis];
+ Project -> Creator [pos="e,631.11,61.256 521.01,61.256 548.13,61.256 590.3,61.256 620.84,61.256",
+ style=invis];
+}
diff --git a/data/collection_objects_model_er.dot b/data/collection_objects_model_er.dot
new file mode 100644
index 00000000..6333ddc5
--- /dev/null
+++ b/data/collection_objects_model_er.dot
@@ -0,0 +1,910 @@
+digraph CollectionObject {
+ graph [bb="0,0,944.65,1820",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="85.142,1747",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="85.142,821",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="85.142,983",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="85.142,767",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="85.142,929",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="85.142,700",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="85.142,875",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ ProtocolRelationship [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#protocol-relationship",
+ label=ProtocolRelationship,
+ pos="85.142,619",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=2.3651];
+ }
+ subgraph core {
+ CollectionObject [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="286.97,879",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.2411];
+ BiologicalAssociation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#biological-association",
+ label=BiologicalAssociation,
+ pos="489.15,1361",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.9028];
+ Observation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#observation",
+ label=Observation,
+ pos="489.15,1267",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Descriptor [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#descriptor",
+ label=Descriptor,
+ pos="699.65,1267",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ CollectingEvent [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collecting-event",
+ label=CollectingEvent,
+ pos="489.15,1081",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="699.65,879",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Sequence [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#sequence",
+ label=Sequence,
+ pos="884.65,770",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.94444];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="489.15,1747",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ TaxonName [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#taxon-name",
+ label=TaxonName,
+ pos="884.65,879",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1667];
+ }
+ subgraph supporting {
+ BiocurationClassification [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biocuration-classification",
+ label=BiocurationClassification,
+ pos="699.65,1026",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.1389];
+ BiocurationClass [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biocuration-class",
+ label=BiocurationClass,
+ pos="884.65,1026",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5278];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="286.97,1802",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ DerivedCollectionObject [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#derived-collection-object",
+ label=DerivedCollectionObject,
+ pos="489.15,934",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.1111];
+ CollectionObjectObservation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#collection-object-observation",
+ label=CollectionObjectObservation,
+ pos="699.65,934",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.4306];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="286.97,821",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ TaxonDetermination [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-determination",
+ label=TaxonDetermination,
+ pos="489.15,824",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8056];
+ Determiner [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#determiner",
+ label=Determiner,
+ pos="699.65,824",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0972];
+ OriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-relationship",
+ label=OriginRelationship,
+ pos="489.15,770",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ Extract [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#extract",
+ label=Extract,
+ pos="699.65,770",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.77778];
+ Georeference [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#georeference",
+ label=Georeference,
+ pos="699.65,1081",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2361];
+ GeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-item",
+ label=GeographicItem,
+ pos="884.65,1081",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4583];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="286.97,767",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="286.97,659",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ LoanItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan-item",
+ label=LoanItem,
+ pos="489.15,662",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ Loan [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan",
+ label=Loan,
+ pos="699.65,662",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ ObservationMatrixRow [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-row",
+ label=ObservationMatrixRow,
+ pos="699.65,1174",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0278];
+ ObservationMatrix [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix",
+ label=ObservationMatrix,
+ pos="884.65,1174",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ ObservationMatrixRowItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-row-item",
+ label=ObservationMatrixRowItem,
+ pos="489.15,1174",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.375];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="699.65,532",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Protocol [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#protocol",
+ label=Protocol,
+ pos="286.97,605",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.86111];
+ RelatedBiologicalAssociation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-biological-association",
+ label=RelatedBiologicalAssociation,
+ pos="699.65,1342",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.4722];
+ RelatedOriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-origin-relationship",
+ label=RelatedOriginRelationship,
+ pos="699.65,716",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2361];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="489.15,386",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SqedDepiction [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#sqed-depiction",
+ label=SqedDepiction,
+ pos="286.97,713",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3472];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="699.65,1723",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="884.65,1723",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="489.15,1802",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ TypeMaterial [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#type-material",
+ label=TypeMaterial,
+ pos="489.15,294",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="489.15,478",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="699.65,478",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="489.15,532",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="699.65,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ PreparationType [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#preparation-type",
+ label=PreparationType,
+ pos="489.15,1026",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4861];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="489.15,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ RangedLotCategory [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#ranged-lot-category",
+ label=RangedLotCategory,
+ pos="489.15,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.75];
+ Repository [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#repository",
+ label=Repository,
+ pos="489.15,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0556];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="884.65,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ AccessionProvider [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#accession-provider",
+ label=AccessionProvider,
+ pos="699.65,424",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6528];
+ AccessionProviderRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#accession-provider-role",
+ label=AccessionProviderRole,
+ pos="699.65,370",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2];
+ Container [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#container",
+ label=Container,
+ pos="489.15,1508",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ ContainerItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#container-item",
+ label=ContainerItem,
+ pos="699.65,1508",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ DeaccessionRecipient [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#deaccession-recipient",
+ label=DeaccessionRecipient,
+ pos="489.15,1654",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8889];
+ DeaccessionRecipientRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#deaccession-recipient-role",
+ label=DeaccessionRecipientRole,
+ pos="699.65,316",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2361];
+ DwcOccurrence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#dwc-occurrence",
+ label=DwcOccurrence,
+ pos="489.15,1562",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="699.65,1638",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ ParentContainerItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#parent-container-item",
+ label=ParentContainerItem,
+ pos="489.15,1416",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8056];
+ }
+ Citation -> Source [pos="e,461.93,1747 124.32,1747 201.73,1747 376.18,1747 451.92,1747",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,240.95,1789.6 119.14,1756.1 149.54,1764.4 195.23,1777 231.11,1786.9",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,232.14,821 136.05,821 162.1,821 194.26,821 222.1,821",
+ style=dotted];
+ Depiction -> Image [pos="e,259.93,767 130.99,767 166.81,767 216.36,767 249.71,767",
+ style=dotted];
+ Depiction -> SqedDepiction [pos="e,238.45,725.84 123.26,756.97 152.84,748.97 194.78,737.64 228.67,728.48",
+ style=dotted];
+ Tag -> Keyword [pos="e,253.45,665.67 111.05,694.89 144.22,688.08 203.41,675.94 243.65,667.68",
+ style=dotted];
+ ProtocolRelationship -> Protocol [pos="e,255.73,607.12 166.27,613.39 193.57,611.47 222.93,609.42 245.74,607.82",
+ style=dotted];
+ CollectionObject -> Citation [pos="e,90.316,1728.9 280.85,901.24 253.33,1020.8 123.14,1586.3 92.576,1719.1"];
+ CollectionObject -> Confidence [pos="e,125.14,832.32 229.67,862.66 199.83,854 163.55,843.47 134.93,835.16"];
+ CollectionObject -> DataAttribute [pos="e,130.27,971.36 257.36,901.31 234.73,918.13 201.8,940.82 170.28,956 160.75,960.59 150.25,964.67 139.99,968.17"];
+ CollectionObject -> Depiction [pos="e,126.87,774.2 230.4,862.51 221.83,858.56 213.46,853.76 206.28,848 183.8,829.93 193.31,811.38 170.28,794 160.43,786.56 148.46,781.13 \
+136.67,777.18"];
+ CollectionObject -> Identifier [pos="e,122.33,919.95 225.35,894.17 195.39,901.66 159.83,910.56 132.15,917.49"];
+ CollectionObject -> Tag [pos="e,110.73,706.01 227.35,863.24 219.56,859.24 212.22,854.24 206.28,848 171.4,811.35 203.81,777.89 170.28,740 157.2,725.22 137.47,715.44 \
+120.4,709.25"];
+ CollectionObject -> Note [pos="e,113.09,875.54 206.06,877.4 177.41,876.83 146.48,876.21 123.21,875.74"];
+ CollectionObject -> ProtocolRelationship [pos="e,124.32,635.12 226.27,863.64 218.72,859.59 211.74,854.46 206.28,848 155.05,787.33 215.22,738.47 170.28,673 161.02,659.5 147.16,\
+648.62 133.34,640.25"];
+ CollectionObject -> BiologicalAssociation [pos="e,422.62,1343 290.97,901.12 302.38,982.27 345.37,1262.3 403.65,1328 406.73,1331.5 410.22,1334.6 413.99,1337.4"];
+ CollectionObject -> Observation [pos="e,456.78,1248.8 291.55,901.31 301.33,956.64 332.62,1102.8 403.65,1201 415.52,1217.4 432.57,1231.8 448.25,1242.9"];
+ CollectionObject -> CollectingEvent [dir=back,
+ pos="s,296.9,901.14 301.02,910.41 318.72,949.31 353.94,1015.1 403.65,1053 413.35,1060.4 425.11,1065.9 436.74,1070",
+ style=dashed];
+ CollectionObject -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,288.1,901.29 e,461.84,1743.8 288.21,911.63 289.87,1049.9 302.8,1586.2 403.65,1714 415.39,1728.9 434.77,1737.1 452.01,1741.6",
+ style=dotted];
+ CollectionObject -> BiocurationClassification [pos="e,622.38,1009.4 312.79,901.1 335.06,919.79 369.43,945.85 403.65,961 406.1,962.09 526.38,988.44 612.58,1007.2"];
+ CollectionObject -> DerivedCollectionObject [pos="e,422.47,915.96 345.6,894.83 366.53,900.58 390.49,907.17 412.73,913.28"];
+ CollectionObject -> TaxonDetermination [pos="e,423.9,841.65 345.6,863.17 366.93,857.31 391.42,850.58 414.01,844.37"];
+ CollectionObject -> OriginRelationship [pos="e,428.94,783.46 342.98,862.53 351.71,858.56 360.28,853.76 367.65,848 389.5,830.91 381.27,813.41 403.65,797 408.5,793.44 413.84,790.34 \
+419.41,787.64"];
+ CollectionObject -> LoanItem [pos="e,454.07,672.2 347.39,863.42 354.98,859.39 362.04,854.34 367.65,848 410.77,799.22 363.24,757.05 403.65,706 414.09,692.81 429.57,\
+683.15 444.44,676.31"];
+ CollectionObject -> Loan [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,348.26,863.6 e,672.48,648.55 356.88,858.12 360.88,855.18 364.53,851.83 367.65,848 428.28,773.56 330.32,696.97 403.65,635 477.66,\
+572.45 602.53,616.6 663.3,644.27",
+ style=dotted];
+ CollectionObject -> ObservationMatrixRow [pos="e,626.43,1158.2 292.53,901.29 303.23,947.54 334.41,1054.1 403.65,1108 405.8,1109.7 530.06,1137.1 616.6,1156.1"];
+ CollectionObject -> ObservationMatrixRowItem [pos="e,423.53,1155.9 291.69,901.02 301.23,950.82 331.1,1073.2 403.65,1142 407,1145.2 410.7,1148.1 414.63,1150.7"];
+ CollectionObject -> PinboardItem [pos="e,653.91,541.98 348.4,863.71 355.75,859.65 362.47,854.51 367.65,848 436.98,760.84 328.2,681.93 403.65,600 405.71,597.76 559.21,563.17 \
+643.94,544.21"];
+ CollectionObject -> RelatedBiologicalAssociation [pos="e,610.3,1332.5 290.99,901.19 302.1,979.32 343.18,1239.9 403.65,1294 418.38,1307.2 520.22,1321.7 600.17,1331.3"];
+ CollectionObject -> RelatedOriginRelationship [pos="e,619.03,701.43 346.53,863.2 354.33,859.2 361.68,854.21 367.65,848 401.81,812.41 364.85,773.48 403.65,743 460.94,697.99 545.17,694.53 \
+608.97,700.41"];
+ CollectionObject -> Role [pos="e,461.99,388.59 349.16,863.77 356.3,859.7 362.76,854.54 367.65,848 425.04,771.18 345.91,494.56 403.65,418 415.1,402.82 434.65,394.84 \
+452.06,390.65"];
+ CollectionObject -> SubsequentCitation [pos="e,638.36,1722.7 287.74,901.23 287.05,1018.9 290.02,1567.6 403.65,1681 434.31,1711.6 551.11,1720.1 628.22,1722.4"];
+ CollectionObject -> TypeMaterial [pos="e,443.56,300.86 349.25,863.84 356.37,859.76 362.81,854.58 367.65,848 436.55,754.34 334.32,419.35 403.65,326 411.17,315.86 422.32,\
+308.94 434.07,304.21"];
+ CollectionObject -> VerifierRole [pos="e,447.48,481.51 349.03,863.68 356.19,859.62 362.69,854.49 367.65,848 460.67,726.18 306.9,623.89 403.65,505 412.17,494.53 424.76,\
+488.06 437.64,484.09"];
+ CollectionObject -> Version [pos="e,459.79,535.21 348.51,863.8 355.84,859.72 362.53,854.55 367.65,848 445.95,747.72 324.89,663.93 403.65,564 414.82,549.82 433.03,\
+541.92 449.69,537.52"];
+ CollectionObject -> Creator [dir=back,
+ pos="s,349.33,863.9 357.89,858.11 361.56,855.17 364.88,851.82 367.65,848 452.84,730.53 311.3,307.93 403.65,196 453.52,135.55 507.31,193.1 \
+574.65,153 625.23,122.88 667.46,65.79 687,36.441",
+ style=dashed];
+ CollectionObject -> PreparationType [dir=back,
+ pos="s,305.4,901.29 311.99,909.18 333.64,934.71 367.56,970.75 403.65,994 413.41,1000.3 424.58,1005.6 435.54,1010",
+ style=dashed];
+ CollectionObject -> Project [dir=back,
+ pos="s,349.39,863.95 357.93,858.14 361.6,855.2 364.9,851.84 367.65,848 419.71,775.43 349.37,115.93 403.65,45 417.12,27.388 442.18,21.046 \
+461.52,18.869",
+ style=dashed];
+ CollectionObject -> RangedLotCategory [dir=back,
+ pos="s,349.35,863.91 357.9,858.12 361.57,855.18 364.88,851.82 367.65,848 457.6,723.57 313.13,282.02 403.65,158 409.38,150.14 417.29,144.22 \
+425.99,139.74",
+ style=dashed];
+ CollectionObject -> Repository [dir=back,
+ pos="s,349.37,863.93 357.92,858.13 361.59,855.19 364.89,851.83 367.65,848 465,712.76 302.17,231.17 403.65,99 414.81,84.463 433.85,77.607 \
+451.04,74.432",
+ style=dashed];
+ CollectionObject -> Updater [dir=back,
+ pos="s,349.31,863.89 357.87,858.1 361.55,855.16 364.87,851.82 367.65,848 448.2,737.31 316.64,338.7 403.65,233 453.52,172.41 501.73,218.01 \
+574.65,189 684.6,145.26 804.39,70.278 856.69,36.024",
+ style=dashed];
+ CollectionObject -> AccessionProvider [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,349.11,863.74 e,639.92,420.89 357.73,857.99 361.45,855.08 364.81,851.77 367.65,848 420.91,777.22 341.03,513.66 403.65,451 434.3,\
+420.32 552.63,418.35 629.79,420.57",
+ style=dotted];
+ CollectionObject -> AccessionProviderRole [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,349.22,863.82 e,627.49,356.32 357.81,858.05 361.5,855.13 364.84,851.8 367.65,848 432.42,760.38 323.82,433.16 403.65,359 433.61,\
+331.17 540.85,342.31 617.38,354.65"];
+ CollectionObject -> Container [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,289.41,901.06 e,453.91,1503.1 290.14,911.32 298.25,1022.7 330.08,1388.7 403.65,1476 413.93,1488.2 429.38,1495.8 444.27,1500.4",
+ style=dotted];
+ CollectionObject -> ContainerItem [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,289.36,901.06 e,652.01,1497.8 290.07,911.34 297.79,1019.5 328.1,1366.3 403.65,1443 404.18,1443.5 556.68,1477 642.18,1495.7"];
+ CollectionObject -> DeaccessionRecipient [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,288.49,901.01 e,420.84,1636.5 288.79,911.33 292.66,1039.5 312.93,1510.2 403.65,1622 406.24,1625.2 409.19,1628.1 412.4,1630.7",
+ style=dotted];
+ CollectionObject -> DeaccessionRecipientRole [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,349.29,863.87 e,670.29,297.97 357.86,858.09 361.54,855.15 364.86,851.81 367.65,848 443.94,743.54 309.39,355.6 403.65,267 474.5,\
+200.4 599.57,257.48 661.61,292.91"];
+ CollectionObject -> DwcOccurrence [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,288.88,901.22 e,436.94,1555.1 289.36,911.49 295.09,1030.4 320.64,1440 403.65,1535 410.04,1542.3 418.41,1547.7 427.4,1551.6"];
+ CollectionObject -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,288.24,901.12 e,651.85,1633.2 288.43,911.25 290.92,1036.9 306.62,1491.7 403.65,1589 420.23,1605.6 560.85,1623.2 641.8,1632.1"];
+ CollectionObject -> ParentContainerItem [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,290.12,901.08 e,423.82,1402.8 291.17,911.22 301.77,1011.7 338.78,1316.5 403.65,1388 406.98,1391.7 410.8,1394.9 414.94,1397.6",
+ style=dotted];
+ BiologicalAssociation -> RelatedBiologicalAssociation [pos="e,610.4,1350 557.84,1354.8 571.33,1353.6 585.76,1352.3 600.04,1351",
+ style=invis];
+ Observation -> Descriptor [pos="e,662.58,1267 530.84,1267 565.68,1267 615.84,1267 652.23,1267",
+ style=dotted];
+ Observation -> ObservationMatrix [pos="e,824.52,1191.5 530.82,1257.4 554.16,1251.9 584.02,1244.9 610.65,1239 689.6,1221.4 710.14,1220.5 788.65,1201 797.11,1198.9 805.96,\
+1196.6 814.71,1194.2",
+ style=invis];
+ CollectingEvent -> Georeference [pos="e,654.87,1081 541.15,1081 572.59,1081 612.86,1081 644.81,1081",
+ style=dotted];
+ Otu -> TaxonName [pos="e,842.62,879 726.87,879 754.27,879 797.98,879 832.3,879",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,638.4,1729.9 516.55,1744 544.52,1740.7 589.84,1735.5 628.28,1731.1",
+ style=invis];
+ Source -> OriginCitation [pos="e,664.15,1656 516.55,1733.2 551.47,1714.9 613.45,1682.5 655.28,1660.7",
+ style=invis];
+ BiocurationClassification -> BiocurationClass [pos="e,829.61,1026 776.66,1026 790.83,1026 805.5,1026 819.27,1026",
+ style=dotted];
+ CitationTopic -> Topic [pos="e,461.91,1802 333.39,1802 369.2,1802 418.47,1802 451.72,1802",
+ style=dotted];
+ DerivedCollectionObject -> CollectionObjectObservation [pos="e,611.79,934 565.42,934 577.18,934 589.46,934 601.62,934",
+ style=dotted];
+ TaxonDetermination -> Otu [pos="e,672.43,872.08 554.4,840.95 589.94,850.32 632.78,861.63 662.5,869.46",
+ style=dotted];
+ TaxonDetermination -> Determiner [pos="e,660.07,824 554.4,824 585.2,824 621.49,824 649.96,824",
+ style=dotted];
+ OriginRelationship -> Extract [pos="e,671.64,770 549.34,770 585.31,770 630.14,770 661.24,770",
+ style=dotted];
+ OriginRelationship -> RelatedOriginRelationship [pos="e,628.97,734.04 549.34,754.67 571.04,749.05 595.96,742.59 619.16,736.59",
+ style=invis];
+ Extract -> Sequence [pos="e,850.64,770 727.65,770 757.29,770 805.31,770 840.25,770",
+ style=dotted];
+ Georeference -> GeographicItem [pos="e,832.05,1081 744.48,1081 767.62,1081 796.4,1081 821.78,1081",
+ style=dotted];
+ LoanItem -> Loan [pos="e,672.43,662 524.58,662 562.53,662 623.34,662 662.11,662",
+ style=dotted];
+ ObservationMatrixRow -> ObservationMatrix [pos="e,824.62,1174 772.71,1174 786.42,1174 800.74,1174 814.36,1174",
+ style=dotted];
+ ObservationMatrixRowItem -> ObservationMatrixRow [pos="e,626.39,1174 574.65,1174 588.32,1174 602.47,1174 616.09,1174",
+ style=invis];
+ Role -> Verifier [pos="e,670.8,470.97 516.21,402.01 540.13,416.22 576.88,436.87 610.65,451 626.73,457.73 645.09,463.63 660.86,468.18",
+ style=invis];
+ Role -> AccessionProvider [pos="e,640.13,413.34 516.55,390.81 544.92,395.98 591.15,404.41 629.93,411.48",
+ style=invis];
+ Role -> AccessionProviderRole [pos="e,627.28,375.48 516.55,383.97 541.89,382.03 581.49,378.99 617.3,376.24",
+ style=invis];
+ Role -> DeaccessionRecipientRole [pos="e,638.41,334.09 516.36,376.26 540.69,367.32 577.97,353.84 610.65,343 616.52,341.05 622.63,339.08 628.77,337.12",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,826.54,1723 760.82,1723 778.58,1723 798.13,1723 816.31,1723",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,671.03,478 530.84,478 568.49,478 624.01,478 660.74,478",
+ style=dotted];
+ Version -> PinboardItem [pos="e,653.85,532 518.27,532 550.27,532 603.33,532 643.63,532",
+ style=invis];
+ Creator -> Updater [pos="e,854.38,18 728.44,18 759.25,18 809.19,18 844.07,18",
+ style=invis];
+ PreparationType -> BiocurationClassification [pos="e,622.41,1026 542.76,1026 563.87,1026 588.76,1026 612.38,1026",
+ style=invis];
+ Project -> Creator [pos="e,670.92,18 516.98,18 553.58,18 619.35,18 660.91,18",
+ style=invis];
+ Container -> ContainerItem [pos="e,652.06,1508 524.58,1508 556.4,1508 604.29,1508 641.78,1508",
+ style=invis];
+}
diff --git a/data/collection_profiles_model_er.dot b/data/collection_profiles_model_er.dot
new file mode 100644
index 00000000..8f8f1467
--- /dev/null
+++ b/data/collection_profiles_model_er.dot
@@ -0,0 +1,203 @@
+digraph CollectionProfile {
+ graph [bb="0,0,599.15,378.31",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,222.81",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="42.896,113.81",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="42.896,168.81",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="364.65,359.81",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ CollectionProfile [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#collection-profile",
+ label=CollectionProfile,
+ pos="202.47,169.81",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.2411];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="202.47,111.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="364.65,304.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="364.65,250.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="364.65,196.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="474.65,223.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Container [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#container",
+ label=Container,
+ pos="364.65,142.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="474.65,50.812",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="364.65,50.812",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="569.15,50.812",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Tag -> Keyword [pos="e,168.85,112.23 69.917,113.48 94.051,113.18 130.41,112.71 158.79,112.35",
+ style=dotted];
+ CollectionProfile -> Identifier [pos="e,76.929,211.7 149.87,187.17 129.34,194.07 106.01,201.92 86.475,208.49"];
+ CollectionProfile -> Tag [pos="e,67.147,122.07 151.41,152.02 127.03,143.36 98.407,133.18 76.826,125.51"];
+ CollectionProfile -> Note [pos="e,70.985,168.98 121.55,169.3 107.44,169.21 93.385,169.13 81.183,169.05"];
+ CollectionProfile -> Otu [dir=back,
+ pos="s,215.57,192.05 220.61,200.82 240.9,235.6 277.27,292.3 319.15,331.81 324.6,336.95 331.12,341.67 337.47,345.71",
+ style=dashed];
+ CollectionProfile -> PinboardItem [pos="e,332,286.72 224.46,191.93 246.77,214.83 283.67,250.94 319.15,277.81 320.54,278.86 321.97,279.91 323.43,280.94"];
+ CollectionProfile -> Role [pos="e,337.18,237.42 243.48,190.04 269.45,203.17 302.98,220.13 328.03,232.8"];
+ CollectionProfile -> VerifierRole [pos="e,323.1,189.98 276.53,182.13 288.91,184.21 301.52,186.34 313.16,188.3"];
+ CollectionProfile -> Container [dir=back,
+ pos="s,276.53,157.5 286.52,155.81 301.73,153.25 316.79,150.71 329.51,148.57",
+ style=dashed];
+ CollectionProfile -> Creator [dir=back,
+ pos="s,253.44,152.12 262.87,148.21 269.8,145.25 276.69,142.09 283.15,138.81 300.08,130.22 302.33,124.61 319.15,115.81 357.99,95.493 369.76,\
+94.831 410.15,77.812 421.86,72.881 434.75,67.404 445.85,62.679",
+ style=dashed];
+ CollectionProfile -> Project [dir=back,
+ pos="s,259.12,153.42 268.22,148.81 273.52,145.86 278.59,142.54 283.15,138.81 306.06,120.09 298.78,104.27 319.15,82.812 324.39,77.29 330.71,\
+72.095 336.91,67.561",
+ style=dashed];
+ CollectionProfile -> Updater [dir=back,
+ pos="s,262.19,154.15 271.03,148.96 275.46,146.01 279.57,142.64 283.15,138.81 319.72,99.682 276,55.525 319.15,23.812 385.2,-24.723 488.99,\
+12.856 539.13,36.047",
+ style=dashed];
+ Role -> Verifier [pos="e,445.86,230.76 391.8,244.28 405.09,240.95 421.48,236.86 436.09,233.2",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,446.02,216.9 406.18,206.94 416.04,209.41 426.54,212.03 436.25,214.46",
+ style=dotted];
+ Creator -> Updater [pos="e,538.99,50.812 503.16,50.812 511.18,50.812 520.12,50.812 528.73,50.812",
+ style=invis];
+ Project -> Creator [pos="e,446.14,50.812 392.35,50.812 405.52,50.812 421.63,50.812 436.02,50.812",
+ style=invis];
+}
diff --git a/data/common_names_model_er.dot b/data/common_names_model_er.dot
new file mode 100644
index 00000000..c73900b9
--- /dev/null
+++ b/data/common_names_model_er.dot
@@ -0,0 +1,372 @@
+digraph CommonName {
+ graph [bb="0,0,766.39,733",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="63.694,688",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="63.694,606",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="63.694,446",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="63.694,392",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="63.694,284",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="63.694,338",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="403.39,606",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="403.39,274",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ TaxonName [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#taxon-name",
+ label=TaxonName,
+ pos="403.39,219",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1667];
+ }
+ subgraph supporting {
+ CommonName [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#common-name",
+ label=CommonName,
+ pos="238.89,367",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.0848];
+ AlternateValueLanguage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-language",
+ label=AlternateValueLanguage,
+ pos="238.89,715",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0972];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="238.89,661",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="238.89,284",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="403.39,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="403.39,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="553.39,600",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="708.39,600",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="403.39,661",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="403.39,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="553.39,45",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="553.39,475",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ GeographicArea [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-area",
+ label=GeographicArea,
+ pos="403.39,421",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4722];
+ Language [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#language",
+ label=Language,
+ pos="403.39,367",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="403.39,475",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="708.39,475",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="553.39,540",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ AlternateValue -> AlternateValueLanguage [pos="e,163.23,703.36 119.97,696.62 130.61,698.28 141.99,700.05 153.31,701.81",
+ style=dotted];
+ Citation -> Source [pos="e,376,606 102.78,606 168.3,606 301.51,606 365.91,606",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,192.62,646.63 96.461,616.09 120.57,623.74 154.31,634.46 182.79,643.5",
+ style=dotted];
+ Tag -> Keyword [pos="e,205.11,284 90.999,284 118.58,284 162.36,284 194.96,284",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,492.14,602.44 430.51,604.94 444.93,604.36 463.61,603.6 481.99,602.85",
+ style=invis];
+ Source -> OriginCitation [pos="e,511.75,558.12 430.51,594.35 450.36,585.5 478.27,573.05 502.38,562.3",
+ style=invis];
+ CommonName -> AlternateValue [pos="e,88.55,671.32 232.42,389.02 219.81,436.84 185.24,552.34 127.39,633 118.92,644.81 107.44,655.82 96.631,664.84"];
+ CommonName -> Citation [pos="e,77.15,588.81 221.86,389.11 189.63,433.59 117.12,533.65 83.047,580.67"];
+ CommonName -> DataAttribute [pos="e,98.95,431.49 197.88,386.22 176.96,396.17 150.88,408.42 127.39,419 121.22,421.78 114.68,424.66 108.25,427.47"];
+ CommonName -> Identifier [pos="e,104.43,386.26 163.95,377.67 147.34,380.07 130.1,382.56 114.73,384.78"];
+ CommonName -> Tag [pos="e,87.188,293.29 200.08,347.1 178.87,336.13 151.83,322.44 127.39,311 117.49,306.36 106.58,301.56 96.68,297.32"];
+ CommonName -> Note [pos="e,90.999,342.4 167.87,355.28 144.9,351.43 120.33,347.31 100.92,344.07"];
+ CommonName -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,247.44,389.12 e,376.37,593.06 250.94,398.57 267.31,441.87 301.43,520.32 350.39,573 355.44,578.44 361.58,583.35 367.84,587.63",
+ style=dotted];
+ CommonName -> Otu [dir=back,
+ pos="s,275.55,346.59 284.4,341.53 313.82,324.69 351.4,303.18 376.14,289.02",
+ style=dashed];
+ CommonName -> TaxonName [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,273.92,345.97 e,361.59,237.11 282.07,340.1 293.4,331.65 305.07,321.71 314.39,311 336.06,286.09 326.73,269.04 350.39,246 351.33,\
+245.08 352.31,244.19 353.32,243.32",
+ style=dotted];
+ CommonName -> PinboardItem [pos="e,359.84,182.16 276.16,346.6 289.85,337.32 304.49,325.2 314.39,311 346.23,265.32 314.87,233.88 350.39,191 350.98,190.28 351.61,189.58 \
+352.25,188.89"];
+ CommonName -> Role [pos="e,376.24,82.505 277.43,346.92 291.12,337.74 305.44,325.63 314.39,311 363.13,231.35 298,181.3 350.39,104 354.72,97.606 360.8,92.258 \
+367.28,87.881"];
+ CommonName -> SubsequentCitation [pos="e,492.02,584.32 248.98,389.1 264.58,424.34 299.72,493.26 350.39,532 371.54,548.17 432.74,567.65 482.28,581.61"];
+ CommonName -> VerifierRole [pos="e,361.75,33.87 277.71,347.09 291.45,337.94 305.71,325.8 314.39,311 374.74,208.09 281.73,142.56 350.39,45 351.53,43.378 352.8,41.846 \
+354.17,40.4"];
+ CommonName -> Creator [dir=back,
+ pos="s,281.87,348.17 291.3,344.68 337.11,328.37 404.69,313.33 456.39,340 504.44,364.79 533.69,425.98 545.84,456.73",
+ style=dashed];
+ CommonName -> GeographicArea [dir=back,
+ pos="s,290.41,383.79 299.96,386.96 316.45,392.44 334.2,398.34 350.21,403.66",
+ style=dashed];
+ CommonName -> Language [dir=back,
+ pos="s,314.01,367 324.23,367 339.79,367 355.2,367 368.17,367",
+ style=dashed];
+ CommonName -> Project [dir=back,
+ pos="s,267.67,389.22 275.74,395.45 296.9,411.69 324.52,431.94 350.39,448 358.43,452.99 367.49,457.92 375.76,462.17",
+ style=dashed];
+ CommonName -> Updater [dir=back,
+ pos="s,277.19,346.77 285.55,340.81 296.47,332.56 307.07,322.54 314.39,311 356.68,244.31 289.15,186.86 350.39,137 386.92,107.25 414.3,\
+115.83 456.39,137 596.45,207.45 678.02,397.14 700.78,456.79",
+ style=dashed];
+ CommonName -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,251.35,389.04 e,505.5,540.12 256.41,397.84 274.96,429.28 308.07,476.9 350.39,502 394.48,528.15 452.69,536.92 495.3,539.58"];
+ CitationTopic -> Topic [pos="e,376.11,661 285.15,661 310.68,661 342.14,661 366.04,661",
+ style=dotted];
+ Role -> Verifier [pos="e,524.77,50.038 430.51,67.235 453.88,62.972 488.41,56.671 514.76,51.865",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,650.03,600 614.42,600 622.75,600 631.36,600 639.82,600",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,524.78,39.964 445.22,25.449 466.99,29.42 493.58,34.271 514.83,38.147",
+ style=dotted];
+ Creator -> Updater [pos="e,678.33,475 582.1,475 606.12,475 641.16,475 668.08,475",
+ style=invis];
+ Project -> Creator [pos="e,524.78,475 431.19,475 454.47,475 488.45,475 514.51,475",
+ style=invis];
+}
diff --git a/data/confidences_model_er.dot b/data/confidences_model_er.dot
new file mode 100644
index 00000000..fc956f48
--- /dev/null
+++ b/data/confidences_model_er.dot
@@ -0,0 +1,266 @@
+digraph Confidence {
+ graph [bb="0,0,697.9,624",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Confidence [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="58.872,313",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.6353];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="58.872,73",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="270.82,73",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ ControlledVocabularyTerm [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#controlled-vocabulary-term",
+ label=ControlledVocabularyTerm,
+ pos="270.82,313",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=2.3056];
+ }
+ subgraph supporting {
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="270.82,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="270.82,258",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="270.82,204",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="484.9,150",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="639.9,150",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="484.9,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="270.82,422",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="484.9,317",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="270.82,606",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="484.9,514",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="270.82,514",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="639.9,514",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="484.9,88",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Confidence -> Citation [pos="e,58.872,91.281 58.872,290.91 58.872,227.75 58.872,164.58 58.872,101.42"];
+ Confidence -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,63.581,290.92 e,243.81,74.212 65.63,280.99 75.513,235.41 100.07,152.23 153.74,106 175.97,86.858 208.6,78.784 233.61,75.396",
+ style=dotted];
+ Confidence -> ControlledVocabularyTerm [dir=back,
+ pos="s,117.8,313 127.89,313 146.97,313 167.92,313 187.73,313",
+ style=dashed];
+ Confidence -> PinboardItem [pos="e,225.29,267.69 106.03,298.62 121.17,294.06 138.13,289.14 153.74,285 173.76,279.69 195.86,274.41 215.36,269.94"];
+ Confidence -> Role [pos="e,243.67,206.41 79.267,290.82 96.864,272.09 124.47,245.99 153.74,231 178.77,218.18 209.93,211.37 233.67,207.79"];
+ Confidence -> SubsequentCitation [pos="e,423.65,140.27 67.959,290.99 80.79,259.58 109.04,202.84 153.74,177 233.59,130.85 342.95,131.92 413.52,139.16"];
+ Confidence -> VerifierRole [pos="e,229.19,417.51 79.267,335.18 96.864,353.91 124.47,380.01 153.74,395 173.92,405.33 198.09,411.77 219.14,415.75"];
+ Confidence -> ConfidenceLevel [dir=back,
+ pos="s,61.209,335.23 62.17,345.47 67.846,400.59 87.348,512.48 153.74,574 170.61,589.63 194.42,597.73 216.08,601.9",
+ style=dashed];
+ Confidence -> Creator [dir=back,
+ pos="s,61.267,335.18 62.315,345.45 68.156,397.15 87.832,496.86 153.74,541 248.83,604.68 395.59,553.04 456.23,526.89",
+ style=dashed];
+ Confidence -> Project [dir=back,
+ pos="s,65.993,335.05 69.081,344.65 81.839,382.89 108.58,446.48 153.74,482 179.71,502.42 217.84,509.82 243.23,512.5",
+ style=dashed];
+ Confidence -> Updater [dir=back,
+ pos="s,68.119,335.18 72.164,344.61 86.509,376.84 113.52,425.34 153.74,449 229.21,493.38 459.91,470.5 545.9,487 567.53,491.15 591.37,498.12 \
+609.5,503.94",
+ style=dashed];
+ Confidence -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,64.575,290.79 e,437.23,93.944 67.093,280.98 78.185,239.76 103.61,169.27 153.74,134 159.3,130.09 334.22,107.18 427.14,95.239"];
+ "Objects with Confidences" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with confidence",
+ label="Objects with Confidences",
+ pos="270.82,368",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=3.2521];
+ Confidence -> "Objects with Confidences" [dir=back,
+ pos="s,107.04,327 116.66,329.76 128.87,333.24 141.71,336.82 153.74,340 169.88,344.26 187.34,348.62 203.71,352.58",
+ style=dashed];
+ Citation -> Source [pos="e,243.69,73 97.893,73 136.45,73 195.7,73 233.6,73",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,224.74,27.811 91.455,63.053 109.6,57.47 132.87,50.536 153.74,45 173.59,39.739 195.48,34.501 214.86,30.058",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,434.21,131.96 297.83,82.442 329.23,93.842 383.01,113.37 424.7,128.51",
+ style=invis];
+ Source -> OriginCitation [pos="e,437.11,84.691 297.83,74.839 329.81,77.101 385.01,81.006 427.01,83.977",
+ style=invis];
+ CitationTopic -> Topic [pos="e,457.75,18 317.06,18 356.03,18 411.55,18 447.66,18",
+ style=dotted];
+ Role -> Verifier [pos="e,468.86,298.94 298.01,206.32 322.42,209.34 359.26,216.11 387.9,231 416.86,246.06 443.99,271.89 461.97,291.32",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,581.54,150 545.93,150 554.26,150 562.87,150 571.33,150",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,466.54,335.3 312.56,417.15 335.55,413.29 364.3,406.56 387.9,395 414.9,381.78 441.08,359.69 459.26,342.39",
+ style=dotted];
+ Creator -> Updater [pos="e,609.84,514 513.6,514 537.63,514 572.67,514 599.59,514",
+ style=invis];
+ Project -> Creator [pos="e,456.25,514 298.68,514 335.98,514 403.64,514 446.05,514",
+ style=invis];
+}
diff --git a/data/container_items_model_er.dot b/data/container_items_model_er.dot
new file mode 100644
index 00000000..9d78de6e
--- /dev/null
+++ b/data/container_items_model_er.dot
@@ -0,0 +1,215 @@
+digraph ContainerItem {
+ graph [bb="0,0,698.84,544",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ ContainerItem [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#container-item",
+ label=ContainerItem,
+ pos="70.832,256",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.9675];
+ AncestorHierarchy [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#ancestor-hierarchy",
+ label=AncestorHierarchy,
+ pos="309.75,526",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6528];
+ Child [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#child",
+ label=Child,
+ pos="309.75,472",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ DescendantHierarchy [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#descendant-hierarchy",
+ label=DescendantHierarchy,
+ pos="309.75,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8611];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="309.75,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="309.75,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SelfAndAncestor [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#self-and-ancestor",
+ label=SelfAndAncestor,
+ pos="540.34,526",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5278];
+ SelfAndDescendant [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#self-and-descendant",
+ label=SelfAndDescendant,
+ pos="540.34,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.7361];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="309.75,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="540.34,283",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="540.34,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Parent [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#parent",
+ label=Parent,
+ pos="309.75,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="309.75,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="668.84,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ ContainerItem -> AncestorHierarchy [pos="e,250.16,525.55 74.659,278.2 82.047,326.47 106.55,441.31 177.66,499 195.19,513.22 218.28,520.53 240.2,524.14"];
+ ContainerItem -> Child [pos="e,282.56,472.77 77.625,278.16 89.316,318.25 119.7,402.58 177.66,445 205.1,465.08 243.99,471.02 272.28,472.43"];
+ ContainerItem -> DescendantHierarchy [pos="e,242.71,413.54 82.768,278.19 99.036,308.72 132.6,363.09 177.66,391 194.15,401.21 213.82,407.63 232.84,411.65"];
+ ContainerItem -> PinboardItem [pos="e,264.11,359.85 94.199,278.01 114.36,296.58 145.67,322.4 177.66,337 201.52,347.89 229.83,354.43 254.02,358.33"];
+ ContainerItem -> Role [pos="e,282.56,304.98 126.92,270.57 143.22,274.74 161.13,279.19 177.66,283 209.65,290.37 246.24,297.83 272.63,303.03"];
+ ContainerItem -> VerifierRole [pos="e,267.93,256 141.63,256 178.87,256 223.86,256 257.78,256"];
+ ContainerItem -> Creator [dir=back,
+ pos="s,125.69,241.07 135.59,238.56 149.4,235.11 163.97,231.72 177.66,229 294,205.86 333.43,239.16 441.84,191 474.82,176.35 505.56,147.23 \
+523.39,128.19",
+ style=dashed];
+ ContainerItem -> Parent [dir=back,
+ pos="s,103.56,234.93 112.33,229.54 131.51,217.93 155.12,204.94 177.66,196 212.83,182.05 255.8,172.97 282.73,168.16",
+ style=dashed];
+ ContainerItem -> Project [dir=back,
+ pos="s,85.235,233.65 90.848,225.16 109.5,197.63 140.5,158.45 177.66,137 210.36,118.12 254.37,112.33 282.15,110.62",
+ style=dashed];
+ ContainerItem -> Updater [dir=back,
+ pos="s,77.672,233.95 80.734,224.16 94.143,183.03 123.87,113.15 177.66,83 260.08,36.802 510.18,64.521 602.84,83 614.94,85.414 627.61,90.126 \
+638.52,94.947",
+ style=dashed];
+ "Objects with Container items" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with container item",
+ label="Objects with Container items",
+ pos="309.75,18",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=3.6691];
+ ContainerItem -> "Objects with Container items" [dir=back,
+ pos="s,76.753,233.78 79.273,224.08 91.636,178.36 120.87,94.793 177.66,50 189.53,40.643 203.73,33.969 218.35,29.221",
+ style=dashed];
+ AncestorHierarchy -> SelfAndAncestor [pos="e,485.23,526 369.32,526 401.69,526 441.95,526 475.16,526",
+ style=dotted];
+ DescendantHierarchy -> SelfAndDescendant [pos="e,477.68,418 376.87,418 405.29,418 438.58,418 467.61,418",
+ style=dotted];
+ Role -> Verifier [pos="e,511.65,286.27 336.97,306.9 377.42,302.13 455.21,292.94 501.67,287.45",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,511.68,279.73 351.35,260.8 393.93,265.83 460.29,273.66 501.72,278.56",
+ style=dotted];
+ Creator -> Updater [pos="e,638.82,110 569.1,110 586.6,110 609.48,110 628.8,110",
+ style=invis];
+ Project -> Creator [pos="e,511.77,110 337.42,110 377.95,110 455.24,110 501.55,110",
+ style=invis];
+}
diff --git a/data/containers_model_er.dot b/data/containers_model_er.dot
new file mode 100644
index 00000000..cf501093
--- /dev/null
+++ b/data/containers_model_er.dot
@@ -0,0 +1,259 @@
+digraph Container {
+ graph [bb="0,0,583.28,582",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,256",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="42.896,200",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ Container [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#container",
+ label=Container,
+ pos="175.04,256",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.479];
+ CollectionProfile [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#collection-profile",
+ label=CollectionProfile,
+ pos="329.28,564",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="175.04,198",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ Label [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#label",
+ label=Label,
+ pos="329.28,510",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ LoanItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan-item",
+ label=LoanItem,
+ pos="329.28,456",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ Loan [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan",
+ label=Loan,
+ pos="458.78,456",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="329.28,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="329.28,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="329.28,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="458.78,283",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="458.78,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="329.28,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="553.28,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ ContainerItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#container-item",
+ label=ContainerItem,
+ pos="329.28,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ ParentContainerItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#parent-container-item",
+ label=ParentContainerItem,
+ pos="329.28,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8056];
+ }
+ Tag -> Keyword [pos="e,141.12,198.51 69.919,199.6 87.353,199.33 110.72,198.97 130.9,198.66",
+ style=dotted];
+ Container -> Identifier [pos="e,86.149,256 121.52,256 113.16,256 104.51,256 96.156,256"];
+ Container -> Tag [pos="e,65.973,209.5 137.04,240.08 117.51,231.68 93.8,221.47 75.191,213.47"];
+ Container -> Container [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,150.89,276.99 e,199.18,276.99 151.95,287.06 155.12,292.34 162.81,296 175.04,296 187.26,296 194.95,292.34 198.12,287.06",
+ style=dotted];
+ Container -> CollectionProfile [pos="e,274.8,545.98 176.88,278.03 180.02,329.8 194.79,460.58 264.28,537 265.05,537.85 265.85,538.67 266.68,539.47"];
+ Container -> Label [pos="e,302.14,504.12 178.84,278.11 185.59,322.6 206.67,423.72 264.28,483 271.99,490.93 282.39,496.64 292.56,500.71"];
+ Container -> LoanItem [pos="e,294.18,443.75 182.68,278.04 194.2,312.97 220.87,381.45 264.28,424 270.21,429.81 277.4,434.76 284.79,438.92"];
+ Container -> Loan [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,184.69,278.2 e,431.49,444 188.85,287.62 202.91,318.41 228.36,364.36 264.28,391 312.63,426.86 337.6,408.74 394.28,429 403.39,432.26 \
+413.08,436.15 422.07,439.95",
+ style=dotted];
+ Container -> PinboardItem [pos="e,283.55,347.47 196.08,278.2 212.94,295.89 238.38,320.37 264.28,337 267.56,339.1 271.02,341.1 274.58,343"];
+ Container -> Role [pos="e,301.9,300.64 217.24,270.61 240.71,278.94 269.84,289.27 292.37,297.26"];
+ Container -> VerifierRole [pos="e,287.33,256 228.43,256 244.24,256 261.56,256 277.27,256"];
+ Container -> Creator [dir=back,
+ pos="s,219.99,242.43 229.81,239.43 241.18,235.96 253.12,232.34 264.28,229 321.95,211.75 337.6,211.26 394.28,191 406.24,186.73 419.18,\
+181.36 430.24,176.55",
+ style=dashed];
+ Container -> Project [dir=back,
+ pos="s,207.99,238.02 216.68,232.66 220.65,230.15 224.57,227.57 228.28,225 245.16,213.28 246.99,207.1 264.28,196 276.09,188.41 289.95,\
+181.29 301.74,175.7",
+ style=dashed];
+ Container -> Updater [dir=back,
+ pos="s,211.33,239.36 219.54,233.39 222.71,230.81 225.68,228.01 228.28,225 255.88,193 229.2,160.55 264.28,137 344.75,82.976 467.58,125.76 \
+523.16,150.08",
+ style=dashed];
+ Container -> ContainerItem [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,203.1,236.46 e,281.61,80.626 211.66,230.99 217.87,226.7 223.78,221.78 228.28,216 262.78,171.75 228.21,137.98 264.28,95 266.9,91.878 \
+269.9,89.03 273.14,86.457"];
+ Container -> ContainerItem [pos="e,296.83,90.056 220.3,242.28 223.24,239.76 225.95,236.99 228.28,234 262.78,189.75 228.21,155.98 264.28,113 270.56,105.51 279.03,\
+99.606 287.74,94.754",
+ style=invis];
+ Container -> ParentContainerItem [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,212.47,239.87 e,273.8,36.096 220.58,233.56 223.46,230.96 226.08,228.11 228.28,225 275.44,158.43 212.7,108.21 264.28,45 264.88,\
+44.264 265.51,43.548 266.15,42.851",
+ style=dotted];
+ LoanItem -> Loan [pos="e,431.61,456 364.45,456 382.08,456 403.6,456 421.53,456",
+ style=dotted];
+ Role -> Verifier [pos="e,429.94,288.9 356.39,304.47 374.71,300.59 399.5,295.34 419.98,291",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,429.95,277.11 370.97,264.62 386.61,267.93 404.38,271.69 419.75,274.95",
+ style=dotted];
+ Creator -> Updater [pos="e,523.11,164 487.28,164 495.31,164 504.24,164 512.85,164",
+ style=invis];
+ Project -> Creator [pos="e,430.21,164 357.01,164 375.29,164 399.79,164 420.05,164",
+ style=invis];
+}
diff --git a/data/contents_model_er.dot b/data/contents_model_er.dot
new file mode 100644
index 00000000..1729faf2
--- /dev/null
+++ b/data/contents_model_er.dot
@@ -0,0 +1,368 @@
+digraph Content {
+ graph [bb="0,0,703.29,662",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="59.145,589",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="59.145,309",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,364",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="59.145,255",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Attribution [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#attribution",
+ label=Attribution,
+ pos="59.145,418",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.3902];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="346.29,589",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="346.29,203",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ Content [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#content",
+ label=Content,
+ pos="208.79,366",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.2641];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="208.79,644",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="208.79,308",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="208.79,254",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="490.29,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="346.29,258",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="490.29,583",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="645.29,583",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="346.29,644",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="346.29,366",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="490.29,312",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="346.29,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="490.29,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Language [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#language",
+ label=Language,
+ pos="346.29,420",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="346.29,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="645.29,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="490.29,523",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ PublicContent [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#public-content",
+ label=PublicContent,
+ pos="346.29,312",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3056];
+ }
+ Citation -> Source [pos="e,319.21,589 98.305,589 153.51,589 254.93,589 309.04,589",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,162.53,627.14 90.023,600.13 108.07,606.85 131.63,615.63 152.93,623.56",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,154.06,308.36 110.13,308.66 120.96,308.59 132.55,308.51 143.82,308.43",
+ style=dotted];
+ Depiction -> Image [pos="e,181.7,254.18 104.84,254.7 126.24,254.55 151.52,254.38 171.67,254.24",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,429.24,585.54 373.33,587.9 386.33,587.35 402.74,586.66 419.09,585.97",
+ style=invis];
+ Source -> OriginCitation [pos="e,450.55,541 373.33,576.89 392.33,568.06 418.63,555.84 441.38,545.27",
+ style=invis];
+ Content -> Citation [pos="e,71.485,571.87 193.2,388.04 165.69,429.59 106.29,519.3 77.074,563.43"];
+ Content -> Confidence [pos="e,94.017,322.08 171.75,352.09 151.12,344.12 125.08,334.07 103.35,325.68"];
+ Content -> DataAttribute [pos="e,118.5,364.79 163.07,365.39 152.21,365.25 140.36,365.09 128.68,364.93"];
+ Content -> Depiction [pos="e,93.667,266.85 175.61,350.49 168.16,346.07 160.58,340.85 154.29,335 133.45,315.6 139.99,300.44 118.29,282 113.67,278.08 108.39,\
+274.6 102.93,271.56"];
+ Content -> Attribution [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,170.39,379.17 e,95.509,405.54 160.78,382.56 142.97,388.83 122.74,395.95 105.12,402.16"];
+ Content -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,216.19,388.25 e,319.01,573.6 219.22,397.78 232.29,437.92 258.96,507.57 299.29,556 302.66,560.05 306.64,563.85 310.82,567.33",
+ style=dotted];
+ Content -> Otu [dir=back,
+ pos="s,243.69,351.25 251.98,345.64 256.16,342.48 260.04,338.94 263.29,335 294.4,297.26 268.59,269.08 299.29,231 304.57,224.45 311.82,\
+219.04 319.01,214.79",
+ style=dashed];
+ Content -> PinboardItem [pos="e,444.43,30.673 244.9,351.78 251.98,347.39 258.66,341.85 263.29,335 326.59,241.23 227.14,170.15 299.29,83 308.29,72.129 381.92,49.006 \
+434.82,33.479"];
+ Content -> Role [pos="e,319.16,270.81 241.86,350.36 249.31,345.95 256.92,340.77 263.29,335 283.59,316.62 279.05,303.44 299.29,285 302.69,281.9 306.51,\
+278.99 310.45,276.3"];
+ Content -> SubsequentCitation [pos="e,428.89,570.85 218.02,388.05 230.81,419.51 258.34,477.2 299.29,511 333.63,539.34 380.29,557.24 418.78,568.1"];
+ Content -> Topic [dir=back,
+ pos="s,212.55,388.3 214.12,398.51 222.43,450.02 244.91,551.28 299.29,617 304.6,623.42 311.87,628.66 319.05,632.76",
+ style=dashed];
+ Content -> VerifierRole [pos="e,304.71,366 254.53,366 267.31,366 281.32,366 294.43,366"];
+ Content -> Version [pos="e,317.11,32.124 244.98,351.83 252.06,347.44 258.72,341.89 263.29,335 333.86,228.6 233.18,159.22 299.29,50 301.86,45.75 305.24,41.923 \
+309,38.518"];
+ Content -> Creator [dir=back,
+ pos="s,244.5,351.5 252.9,345.62 256.81,342.49 260.38,338.96 263.29,335 306.44,276.25 250.61,229.25 299.29,175 310.46,162.54 411.75,132.21 \
+461.7,117.82",
+ style=dashed];
+ Content -> Language [dir=back,
+ pos="s,245.39,380.19 254.7,383.9 272.99,391.19 293.8,399.48 310.86,406.28",
+ style=dashed];
+ Content -> Project [dir=back,
+ pos="s,244.69,351.63 253.05,345.73 256.93,342.57 260.46,339.01 263.29,335 313.63,263.73 251.93,215.29 299.29,142 304.04,134.65 311.14,\
+128.51 318.34,123.64",
+ style=dashed];
+ Content -> Updater [dir=back,
+ pos="s,226.13,388.04 232.64,395.75 248.92,414.37 272.6,436.71 299.29,447 338.27,462.02 353.38,459.34 393.29,447 474.56,421.88 497.9,405.22 \
+551.29,339 605.29,272.02 631.75,169.49 640.69,128.18",
+ style=dashed];
+ Content -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,221.06,388.21 e,442.61,521.12 226.07,397 241.45,423.17 266.95,459.55 299.29,480 339.39,505.36 392.6,515.84 432.51,520.13"];
+ Content -> PublicContent [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,245.39,351.81 e,299.96,330.06 254.69,348.11 266.17,343.53 278.64,338.56 290.56,333.81"];
+ CitationTopic -> Topic [pos="e,318.93,644 254.91,644 272.34,644 292.03,644 308.57,644",
+ style=dotted];
+ Role -> Verifier [pos="e,461.47,301.42 373.33,267.9 395.39,276.29 427.27,288.42 452.03,297.83",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,586.93,583 551.32,583 559.65,583 568.26,583 576.72,583",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,461.64,322.52 387.98,350.53 408.17,342.85 432.39,333.64 452.08,326.15",
+ style=dotted];
+ Version -> PinboardItem [pos="e,444.52,18 375.34,18 392.22,18 414.27,18 434.47,18",
+ style=invis];
+ Creator -> Updater [pos="e,615.23,110 519,110 543.02,110 578.06,110 604.98,110",
+ style=invis];
+ Project -> Creator [pos="e,461.73,110 374,110 395.93,110 427.25,110 451.72,110",
+ style=invis];
+}
diff --git a/data/controlled_vocabulary_terms_model_er.dot b/data/controlled_vocabulary_terms_model_er.dot
new file mode 100644
index 00000000..8bedd53e
--- /dev/null
+++ b/data/controlled_vocabulary_terms_model_er.dot
@@ -0,0 +1,205 @@
+digraph ControlledVocabularyTerm {
+ graph [bb="0,0,933.95,424.35",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph supporting {
+ AlternateValueLanguage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-language",
+ label=AlternateValueLanguage,
+ pos="284.17,272.35",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0972];
+ ObservationMatrixRowItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-row-item",
+ label=ObservationMatrixRowItem,
+ pos="526.45,398.35",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.375];
+ ObservationMatrix [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix",
+ label=ObservationMatrix,
+ pos="742.95,406.35",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ ObservationMatrixColumnItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-column-item",
+ label=ObservationMatrixColumnItem,
+ pos="742.95,352.35",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.6389];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="742.95,268.35",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="526.45,214.35",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="526.45,160.35",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="742.95,187.35",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="526.45,268.35",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="742.95,68.351",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="526.45,68.351",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="903.95,68.351",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="63.694,243.35",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ }
+ subgraph core {
+ ControlledVocabularyTerm [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#controlled-vocabulary-term",
+ label=ControlledVocabularyTerm,
+ pos="284.17,214.35",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.355];
+ }
+ AlternateValue -> AlternateValueLanguage [pos="e,208.51,262.44 121.53,250.89 144.96,254.01 172.62,257.68 198.37,261.09",
+ style=dotted];
+ ControlledVocabularyTerm -> AlternateValue [pos="e,121.53,235.81 180.91,227.92 164.15,230.15 147.18,232.4 131.57,234.47"];
+ ControlledVocabularyTerm -> ObservationMatrixRowItem [pos="e,458.9,380.23 380.67,229 389.6,233.21 397.91,238.56 404.95,245.35 445.33,284.31 402.74,325.26 440.95,366.35 443.83,369.45 447.05,\
+372.26 450.49,374.79"];
+ ControlledVocabularyTerm -> ObservationMatrixColumnItem [pos="e,647.89,364.36 377.79,229.43 387.58,233.54 396.88,238.75 404.95,245.35 433.26,268.51 411.05,298.29 440.95,319.35 497.44,359.14 \
+575.26,366.77 637.63,364.77"];
+ ControlledVocabularyTerm -> PinboardItem [pos="e,697.78,286.39 374.57,230.02 385.31,234.02 395.73,239.04 404.95,245.35 427.55,260.81 416.58,282.87 440.95,295.35 519.63,335.65 \
+625.12,311.21 688.05,289.79"];
+ ControlledVocabularyTerm -> Role [pos="e,499.18,214.35 404.96,214.35 435.6,214.35 466.28,214.35 489.01,214.35"];
+ ControlledVocabularyTerm -> VerifierRole [pos="e,484.72,169.5 362.85,196.89 399.47,188.66 442.13,179.07 474.57,171.79"];
+ ControlledVocabularyTerm -> Version [pos="e,497.35,262.04 362.85,231.81 404.6,241.19 454.2,252.34 487.55,259.83"];
+ ControlledVocabularyTerm -> Creator [dir=back,
+ pos="s,320.74,192.35 329.41,187.29 359.82,169.71 401.67,147.51 440.95,133.35 453.95,128.66 642.28,89.151 714.26,74.122",
+ style=dashed];
+ ControlledVocabularyTerm -> Project [dir=back,
+ pos="s,310.72,192.27 318.46,185.85 348.85,160.88 395.78,124.84 440.95,100.35 459.43,90.33 481.71,82.033 498.76,76.399",
+ style=dashed];
+ ControlledVocabularyTerm -> Updater [dir=back,
+ pos="s,296.73,192.32 301.8,183.48 326.08,142.09 375.56,70.464 440.95,41.351 602.14,-30.413 664.91,6.8415 837.95,41.351 850.05,43.764 \
+862.72,48.476 873.63,53.297",
+ style=dashed];
+ ObservationMatrixRowItem -> ObservationMatrix [pos="e,682.88,404.15 612.22,401.51 632.28,402.26 653.42,403.05 672.69,403.77",
+ style=dotted];
+ ObservationMatrixRowItem -> ObservationMatrixColumnItem [pos="e,657.68,370.42 611.61,380.3 623.44,377.77 635.66,375.14 647.66,372.57",
+ style=invis];
+ Role -> Verifier [pos="e,714.41,190.82 553.75,211.04 591.47,206.29 661.14,197.52 704.31,192.09",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,714.14,183.85 568.05,165.46 607.12,170.38 665.76,177.76 703.95,182.57",
+ style=dotted];
+ Version -> PinboardItem [pos="e,697.08,268.35 555.49,268.35 588.75,268.35 644.96,268.35 686.99,268.35",
+ style=invis];
+ Creator -> Updater [pos="e,873.69,68.351 771.64,68.351 797.08,68.351 835.05,68.351 863.62,68.351",
+ style=invis];
+ Project -> Creator [pos="e,714.2,68.351 554.18,68.351 591.95,68.351 661.1,68.351 704.12,68.351",
+ style=invis];
+}
diff --git a/data/data_attributes_model_er.dot b/data/data_attributes_model_er.dot
new file mode 100644
index 00000000..75da13e5
--- /dev/null
+++ b/data/data_attributes_model_er.dot
@@ -0,0 +1,253 @@
+digraph DataAttribute {
+ graph [bb="0,0,735.7,568",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ DataAttribute [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="68.018,285",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.8894];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="68.018,73",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="298.87,73",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="298.87,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="298.87,312",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="298.87,258",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="522.7,181",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="677.7,181",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="522.7,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="298.87,420",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="522.7,339",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="522.7,550",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Predicate [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#predicate",
+ label=Predicate,
+ pos="298.87,166",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="298.87,550",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="677.7,550",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="522.7,96",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ DataAttribute -> Citation [pos="e,68.018,91.219 68.018,262.67 68.018,208.87 68.018,155.07 68.018,101.26"];
+ DataAttribute -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,75.527,262.79 e,271.69,74.051 78.752,253.17 92.765,212.78 122.53,143.83 172.04,106 197.86,86.267 234.41,78.291 261.47,75.09",
+ style=dotted];
+ DataAttribute -> PinboardItem [pos="e,253.2,306.73 136.13,292.92 170.17,296.93 210.99,301.75 243.1,305.54"];
+ DataAttribute -> Role [pos="e,271.71,261.09 136.13,277.08 177.07,272.25 227.82,266.26 261.43,262.3"];
+ DataAttribute -> SubsequentCitation [pos="e,461.41,188.49 101.17,264.5 120.88,252.87 147.06,239.07 172.04,231 198.01,222.61 356.93,201.71 451.35,189.76"];
+ DataAttribute -> VerifierRole [pos="e,257.17,417.41 84.022,307.42 101.94,332.35 134.27,371.87 172.04,393 194.9,405.79 223.21,412.53 247.19,416.08"];
+ DataAttribute -> Creator [dir=back,
+ pos="s,73.867,307.07 76.46,316.99 88.516,361.19 116.75,440 172.04,480 264.68,547.03 314.13,497.93 425.7,523 449.01,528.24 475.09,535.67 \
+494.17,541.42",
+ style=dashed];
+ DataAttribute -> Predicate [dir=back,
+ pos="s,89.404,262.81 96.686,255.52 116.08,236.5 143.55,212.65 172.04,198 201.6,182.79 238.87,174.48 265.15,170.18",
+ style=dashed];
+ DataAttribute -> Project [dir=back,
+ pos="s,72.247,307.11 74.071,317.14 83.748,367.67 109.75,465.35 172.04,518 200.1,541.72 243.44,548.21 271.22,549.79",
+ style=dashed];
+ DataAttribute -> Updater [dir=back,
+ pos="s,76.182,307.25 79.712,316.77 94.233,354.58 124.03,416.44 172.04,447 267.94,508.05 314.22,457.69 425.7,480 497.06,494.28 513.64,\
+503.3 583.7,523 605.06,529.01 629.12,536 647.42,541.36",
+ style=dashed];
+ DataAttribute -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,77.604,263 e,474.93,99.636 81.85,253.42 97.613,219.05 127.82,165.46 172.04,139 196.6,124.3 372.27,108.1 464.88,100.46"];
+ "Objects with Data attributes" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with data attribute",
+ label="Objects with Data attributes",
+ pos="298.87,366",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=3.5231];
+ DataAttribute -> "Objects with Data attributes" [dir=back,
+ pos="s,101.84,305.14 110.76,310.19 129.05,320.34 151.08,331.42 172.04,339 186.95,344.4 203.28,348.88 219.08,352.53",
+ style=dashed];
+ Citation -> Source [pos="e,271.85,73 107.06,73 150.07,73 219.55,73 261.74,73",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,252.6,27.097 101.84,63.593 122.02,57.931 148.44,50.733 172.04,45 195.1,39.396 220.69,33.793 242.74,29.156",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,484.73,163 326.19,85.813 363.01,103.74 430.48,136.59 475.71,158.61",
+ style=invis];
+ Source -> OriginCitation [pos="e,474.91,91.148 326.19,75.729 360.15,79.25 420.17,85.474 464.78,90.099",
+ style=invis];
+ CitationTopic -> Topic [pos="e,495.67,18 345.03,18 386.48,18 447.12,18 485.48,18",
+ style=dotted];
+ Role -> Verifier [pos="e,494.64,320.86 326.06,261.27 351.98,265.05 392.48,272.42 425.7,285 446.57,292.9 468.35,304.81 485.88,315.44",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,619.35,181 583.73,181 592.06,181 600.67,181 609.13,181",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,494.64,357.14 340.42,414.48 365.52,410.29 398.12,403.44 425.7,393 446.57,385.1 468.35,373.19 485.88,362.56",
+ style=dotted];
+ Creator -> Updater [pos="e,647.64,550 551.41,550 575.43,550 610.47,550 637.39,550",
+ style=invis];
+ Project -> Creator [pos="e,494.15,550 326.63,550 365.89,550 439.27,550 483.98,550",
+ style=invis];
+}
diff --git a/data/dataset_record_fields_model_er.dot b/data/dataset_record_fields_model_er.dot
new file mode 100644
index 00000000..daf9e886
--- /dev/null
+++ b/data/dataset_record_fields_model_er.dot
@@ -0,0 +1,121 @@
+digraph DatasetRecordField {
+ graph [bb="0,0,407.47,306",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ DatasetRecordField [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#dataset-record-field",
+ label=DatasetRecordField,
+ pos="91.233,153",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.5343];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="266.47,288",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="266.47,234",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="266.47,180",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="378.97,207",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ DatasetRecord [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#dataset-record",
+ label=DatasetRecord,
+ pos="266.47,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3333];
+ ImportDataset [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#import-dataset",
+ label=ImportDataset,
+ pos="266.47,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="266.47,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ }
+ DatasetRecordField -> PinboardItem [pos="e,232.11,269.87 115.35,175.09 139.88,197.97 180.29,234.06 218.47,261 220.08,262.14 221.75,263.27 223.44,264.4"];
+ DatasetRecordField -> Role [pos="e,239.29,221.76 135.95,173.44 165.09,187.06 202.89,204.74 230.13,217.48"];
+ DatasetRecordField -> VerifierRole [pos="e,224.69,173.65 173.52,165.67 187.54,167.85 201.73,170.07 214.64,172.08"];
+ DatasetRecordField -> DatasetRecord [dir=back,
+ pos="s,173.52,140.33 183.57,138.76 195.53,136.9 207.36,135.06 218.16,133.37",
+ style=dashed];
+ DatasetRecordField -> ImportDataset [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,135.95,132.56 e,226.78,90.087 145.04,128.31 168.1,117.53 194.95,104.97 217.44,94.457"];
+ DatasetRecordField -> Project [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,115.35,130.91 e,238.58,32.298 122.98,123.85 147.75,101.07 184.02,69.31 218.47,45 222.11,42.428 226.02,39.882 229.96,37.442"];
+ Role -> Verifier [pos="e,350.43,213.73 293.65,227.6 307.68,224.17 325.21,219.89 340.64,216.12",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,350.22,200.22 307.98,189.9 318.52,192.47 329.82,195.24 340.21,197.77",
+ style=dotted];
+}
diff --git a/data/dataset_records_model_er.dot b/data/dataset_records_model_er.dot
new file mode 100644
index 00000000..a71614e7
--- /dev/null
+++ b/data/dataset_records_model_er.dot
@@ -0,0 +1,138 @@
+digraph DatasetRecord {
+ graph [bb="0,0,463.07,319.15",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ DatasetRecord [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#dataset-record",
+ label=DatasetRecord,
+ pos="71.535,147.15",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.9871];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="226.57,301.15",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="226.57,247.15",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="226.57,193.15",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="338.57,220.15",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="338.57,47.155",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ ImportDataset [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#import-dataset",
+ label=ImportDataset,
+ pos="226.57,101.15",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="226.57,47.155",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="433.07,47.155",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ DatasetRecord -> PinboardItem [pos="e,191.12,283 87.516,169.38 106.53,196.45 141.41,242.47 179.07,274.15 180.23,275.13 181.43,276.09 182.66,277.04"];
+ DatasetRecord -> Role [pos="e,199.3,232.36 102.44,168.53 123.58,183.42 152.72,203.51 179.07,220.15 182.71,222.45 186.55,224.8 190.4,227.11"];
+ DatasetRecord -> VerifierRole [pos="e,184.94,180.94 124.35,162.73 140.72,167.65 158.78,173.08 175.06,177.97"];
+ DatasetRecord -> Creator [dir=back,
+ pos="s,143.22,153.82 153.4,153.87 192.05,153.62 237.69,148.03 274.07,128.15 299.95,114.02 318.85,84.457 329.01,65.225",
+ style=dashed];
+ DatasetRecord -> ImportDataset [dir=back,
+ pos="s,124.35,131.58 134.05,128.67 149.02,124.16 164.8,119.42 178.95,115.17",
+ style=dashed];
+ DatasetRecord -> Project [dir=back,
+ pos="s,102.44,125.78 110.72,119.97 130.82,105.92 156.02,88.718 179.07,74.155 185.38,70.166 192.29,66.034 198.81,62.237",
+ style=dashed];
+ DatasetRecord -> Updater [dir=back,
+ pos="s,83.249,125 88.21,115.94 105.65,85.097 137,39.777 179.07,20.155 254.8,-15.163 285.13,3.8128 367.07,20.155 379.17,22.568 391.84,\
+27.28 402.75,32.101",
+ style=dashed];
+ Role -> Verifier [pos="e,309.77,226.98 253.64,240.76 267.37,237.39 284.46,233.19 299.64,229.47",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,309.77,213.33 268.22,203.13 278.59,205.68 289.7,208.4 299.91,210.91",
+ style=dotted];
+ Creator -> Updater [pos="e,402.9,47.155 367.07,47.155 375.1,47.155 384.03,47.155 392.64,47.155",
+ style=invis];
+ Project -> Creator [pos="e,310.04,47.155 254.2,47.155 267.94,47.155 284.94,47.155 299.99,47.155",
+ style=invis];
+}
diff --git a/data/depictions_model_er.dot b/data/depictions_model_er.dot
new file mode 100644
index 00000000..294eab28
--- /dev/null
+++ b/data/depictions_model_er.dot
@@ -0,0 +1,223 @@
+digraph Depiction {
+ graph [bb="0,0,589.72,544",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Depiction [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="83.428,272",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.479];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="83.428,160",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="83.428,214",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="289.65,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="289.65,526",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="289.65,472",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="289.65,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="465.22,445",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="465.22,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="289.65,326",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="289.65,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ SledImage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#sled-image",
+ label=SledImage,
+ pos="289.65,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0417];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="559.72,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ SqedDepiction [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#sqed-depiction",
+ label=SqedDepiction,
+ pos="289.65,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3472];
+ }
+ Depiction -> DataAttribute [pos="e,37.409,171.33 38.294,258.58 25.746,252.55 13.572,243.99 6.2837,232 -2.0278,218.33 -2.128,209.61 6.2837,196 11.587,187.42 19.546,\
+180.86 28.367,175.84"];
+ Depiction -> Tag [pos="e,83.428,232.12 83.428,249.88 83.428,247.38 83.428,244.89 83.428,242.39"];
+ Depiction -> PinboardItem [pos="e,243.9,524.29 87.01,294.24 93.529,339.88 114.95,444.41 178.57,499 193.9,512.15 214.62,519.09 233.95,522.7"];
+ Depiction -> Role [pos="e,262.51,471.43 90.134,294.13 100.89,331.25 127.79,405.87 178.57,445 199.66,461.25 229.2,467.86 252.37,470.49"];
+ Depiction -> VerifierRole [pos="e,248,412.18 97.1,294.29 112.91,320.12 142.33,362.17 178.57,386 196.35,397.69 218.49,405.2 238.23,409.98"];
+ Depiction -> Creator [dir=back,
+ pos="s,101.87,294.07 108.78,301.78 126.05,320.41 150.98,342.76 178.57,353 271.14,387.34 311.94,396.21 400.72,353 427.39,340.02 446.17,\
+309.81 456.08,290.18",
+ style=dashed];
+ Depiction -> Image [dir=back,
+ pos="s,129.34,285.27 139.04,288.05 151.98,291.74 165.74,295.59 178.57,299 207.1,306.59 239.98,314.55 262.33,319.85",
+ style=dashed];
+ Depiction -> Project [dir=back,
+ pos="s,136.75,272 146.87,272 185.46,272 233.01,272 262.06,272",
+ style=dashed];
+ Depiction -> SledImage [dir=back,
+ pos="s,129.34,258.73 139.04,255.95 151.98,252.26 165.74,248.41 178.57,245 202.91,238.53 230.43,231.78 251.86,226.65",
+ style=dashed];
+ Depiction -> Updater [dir=back,
+ pos="s,120.84,255.89 129.71,250.58 134.25,247.64 138.64,244.44 142.57,241 163.19,222.98 154.2,203.48 178.57,191 266.45,145.99 304.74,\
+167.83 400.72,191 450.91,203.12 503.06,234.05 533.12,254",
+ style=dashed];
+ Depiction -> SqedDepiction [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,122.71,256.36 e,240.88,130.66 131.35,250.79 135.43,247.85 139.26,244.59 142.57,241 169.84,211.45 148.4,184.58 178.57,158 193.13,\
+145.18 212.56,137.48 231.04,132.86"];
+ "Objects with Depictions" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with depiction",
+ label="Objects with Depictions",
+ pos="289.65,72",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=3.0853];
+ Depiction -> "Objects with Depictions" [dir=back,
+ pos="s,123.79,256.85 132.14,251.19 136.03,248.18 139.6,244.8 142.57,241 182.73,189.75 132.36,144.86 178.57,99 186.53,91.1 196.41,85.38 \
+206.95,81.26",
+ style=dashed];
+ Tag -> Keyword [pos="e,255.93,17.492 109.01,207.94 120.74,203.86 134.05,197.28 142.57,187 184.13,136.88 132.36,90.859 178.57,45 196.14,27.573 223,20.752 \
+245.79,18.322",
+ style=dotted];
+ Role -> Verifier [pos="e,436.46,449.32 317.01,467.9 346.1,463.37 393.19,456.05 426.25,450.91",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,436.5,440.69 331.34,424.33 360.04,428.79 398.21,434.73 426.28,439.1",
+ style=dotted];
+ Creator -> Updater [pos="e,529.55,272 493.72,272 501.75,272 510.68,272 519.29,272",
+ style=invis];
+ Project -> Creator [pos="e,436.59,272 317.39,272 346.56,272 393.49,272 426.43,272",
+ style=invis];
+}
diff --git a/data/derived_collection_objects_model_er.dot b/data/derived_collection_objects_model_er.dot
new file mode 100644
index 00000000..24d8185c
--- /dev/null
+++ b/data/derived_collection_objects_model_er.dot
@@ -0,0 +1,153 @@
+digraph DerivedCollectionObject {
+ graph [bb="0,0,621.86,381.19",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="345.36,362.69",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ }
+ subgraph supporting {
+ DerivedCollectionObject [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#derived-collection-object",
+ label=DerivedCollectionObject,
+ pos="110.93,172.69",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.0814];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="345.36,307.69",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="345.36,253.69",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="345.36,199.69",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="497.36,226.69",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ CollectionObjectObservation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#collection-object-observation",
+ label=CollectionObjectObservation,
+ pos="345.36,145.69",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.4306];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="497.36,53.689",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="345.36,53.689",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="591.86,53.689",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ DerivedCollectionObject -> CollectionObject [dir=back,
+ pos="s,126.2,194.93 132.16,203.64 157.44,239.99 203.99,299.75 257.86,334.69 267.79,341.13 279.33,346.2 290.68,350.15",
+ style=dashed];
+ DerivedCollectionObject -> PinboardItem [pos="e,299.68,296.85 136.31,194.78 163.99,218.85 211.35,257.07 257.86,280.69 267.85,285.76 278.97,290.1 289.83,293.72"];
+ DerivedCollectionObject -> Role [pos="e,318.13,245.89 165.06,193.1 192.63,203.5 226.92,216.14 257.86,226.69 274.35,232.31 292.76,238.12 308.35,242.9"];
+ DerivedCollectionObject -> VerifierRole [pos="e,303.65,194.96 215.23,184.69 242.36,187.84 270.43,191.1 293.45,193.78"];
+ DerivedCollectionObject -> CollectionObjectObservation [dir=back,
+ pos="s,215.23,160.69 225.24,159.53 236.16,158.26 247.11,156.99 257.71,155.76",
+ style=dashed];
+ DerivedCollectionObject -> Creator [dir=back,
+ pos="s,163.01,151.78 172.36,148.16 198.39,138.16 229.34,127.02 257.86,118.69 334.26,96.379 357.02,104.81 432.86,80.689 444.85,76.877 \
+457.68,71.65 468.66,66.81",
+ style=dashed];
+ DerivedCollectionObject -> Project [dir=back,
+ pos="s,144.87,150.67 153.39,145.19 182,126.91 221.33,103.16 257.86,85.689 277.36,76.366 300.35,67.977 317.73,62.129",
+ style=dashed];
+ DerivedCollectionObject -> Updater [dir=back,
+ pos="s,125.61,150.53 131.38,141.99 155.9,106.49 201.7,49.959 257.86,26.689 367.9,-18.905 409.05,3.3937 525.86,26.689 537.97,29.103 550.64,\
+33.815 561.54,38.636",
+ style=dashed];
+ Role -> Verifier [pos="e,468.76,231.66 372.49,248.99 396.38,244.69 431.99,238.28 458.91,233.43",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,468.55,221.68 386.95,207 409.27,211.01 436.79,215.97 458.64,219.9",
+ style=dotted];
+ Creator -> Updater [pos="e,561.7,53.689 525.86,53.689 533.89,53.689 542.82,53.689 551.43,53.689",
+ style=invis];
+ Project -> Creator [pos="e,468.76,53.689 373.18,53.689 396.98,53.689 432.02,53.689 458.65,53.689",
+ style=invis];
+}
diff --git a/data/descriptors_model_er.dot b/data/descriptors_model_er.dot
new file mode 100644
index 00000000..a4b7b2f8
--- /dev/null
+++ b/data/descriptors_model_er.dot
@@ -0,0 +1,457 @@
+digraph Descriptor {
+ graph [bb="0,0,850.39,732",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph core {
+ Descriptor [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#descriptor",
+ label=Descriptor,
+ pos="238.89,347",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.5572];
+ Observation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#observation",
+ label=Observation,
+ pos="445.39,605",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="637.39,605",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="445.39,495",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ AlternateValueLanguage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-language",
+ label=AlternateValueLanguage,
+ pos="238.89,714",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0972];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="238.89,660",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="238.89,289",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Documentation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#documentation",
+ label=Documentation,
+ pos="445.39,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4028];
+ Document [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#document",
+ label=Document,
+ pos="637.39,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="238.89,235",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="238.89,181",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ ObservationMatrixColumn [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-column",
+ label=ObservationMatrixColumn,
+ pos="445.39,550",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2778];
+ ObservationMatrix [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix",
+ label=ObservationMatrix,
+ pos="637.39,550",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ ObservationMatrixColumnItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-column-item",
+ label=ObservationMatrixColumnItem,
+ pos="445.39,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.6389];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="445.39,440",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="445.39,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="637.39,475",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="792.39,475",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="445.39,660",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="445.39,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="637.39,191",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="637.39,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="445.39,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="792.39,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="637.39,402",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="63.694,641",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="63.694,505",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="63.694,289",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="63.694,451",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="63.694,235",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="63.694,397",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="63.694,181",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="63.694,343",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ AlternateValue -> AlternateValueLanguage [pos="e,186.36,696 96.379,656.64 115.58,665.9 140.68,677.61 163.39,687 167.77,688.81 172.32,690.62 176.91,692.4",
+ style=dotted];
+ Citation -> Source [pos="e,418.3,495.69 102.84,504 176.18,502.06 335.95,497.86 407.93,495.96",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,217.71,641.94 82.577,521 112.79,548.04 174.14,602.95 210.03,635.07",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,184.28,289 114.79,289 133.34,289 154.62,289 174.21,289",
+ style=dotted];
+ Depiction -> Image [pos="e,211.74,235 109.3,235 137.96,235 174.73,235 201.61,235",
+ style=dotted];
+ Tag -> Keyword [pos="e,205.11,181 90.999,181 118.58,181 162.36,181 194.96,181",
+ style=dotted];
+ Descriptor -> AlternateValue [pos="e,75.268,623.05 224.92,369.01 193.7,422 114.43,556.58 80.497,614.17"];
+ Descriptor -> Citation [pos="e,96.202,494.75 223.94,369.22 205.07,397.72 168.96,447.15 127.39,478 120.76,482.92 113.09,487.16 105.45,490.73"];
+ Descriptor -> Confidence [pos="e,101.42,301.3 194.48,332.46 169.05,323.95 136.94,313.2 111.03,304.52"];
+ Descriptor -> DataAttribute [pos="e,100.77,436.94 211.63,367.57 189.84,384.07 157.63,407.18 127.39,424 121.88,427.06 115.96,430.02 110.03,432.78"];
+ Descriptor -> Depiction [pos="e,99.906,246 192.55,333.12 182.3,328.68 171.93,323.03 163.39,316 141.12,297.67 149.55,280.47 127.39,262 122.01,257.51 115.77,253.66 \
+109.35,250.39"];
+ Descriptor -> Identifier [pos="e,99.743,386.88 191.39,360.42 165.95,367.77 134.57,376.83 109.41,384.09"];
+ Descriptor -> Tag [pos="e,89.582,186.5 189.94,334.14 180.15,329.7 170.64,323.8 163.39,316 128.93,278.95 161.62,245.26 127.39,208 119.86,199.8 109.41,193.98 \
+99.195,189.9"];
+ Descriptor -> Note [pos="e,91.756,343.62 182.73,345.73 156.39,345.12 125.56,344.41 102.02,343.86"];
+ Descriptor -> Observation [pos="e,403.81,600.44 244.29,369.34 254.5,415.23 284.16,520.51 350.39,577 362.61,587.42 378.59,593.97 393.9,598.08"];
+ Descriptor -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,254.76,369.42 e,418.1,491.07 260.8,377.81 280.79,405.02 313.32,443.86 350.39,467 367.86,477.9 389.8,484.76 408.09,488.95",
+ style=dotted];
+ Descriptor -> Documentation [pos="e,394.81,318.97 294.96,337.04 322.67,332.02 356.3,325.94 384.64,320.81"];
+ Descriptor -> ObservationMatrixColumn [pos="e,364.87,531.9 247.66,369.03 262,406.42 296.18,482.23 350.39,523 352.21,524.37 354.09,525.67 356.04,526.9"];
+ Descriptor -> ObservationMatrixColumnItem [pos="e,366.35,36.252 289.73,334.73 299.18,330.28 308.07,324.22 314.39,316 387.11,221.43 274.58,142.12 350.39,50 352.7,47.186 355.28,44.618 \
+358.05,42.276"];
+ Descriptor -> PinboardItem [pos="e,399.78,426.6 270.58,365.86 292.35,378.76 322.53,395.68 350.39,408 362.95,413.55 376.8,418.75 389.92,423.28"];
+ Descriptor -> Role [pos="e,418.23,164.84 288.46,334.18 298.1,329.75 307.39,323.84 314.39,316 352.88,272.86 309.49,231.87 350.39,191 365.56,175.84 388.64,\
+169.07 408.13,166.1"];
+ Descriptor -> SubsequentCitation [pos="e,614.15,456.92 283.66,361.37 303.83,367.66 328.17,374.77 350.39,380 433.82,399.63 460.56,381.79 540.39,413 563.89,422.19 587.74,\
+437.55 605.78,450.68"];
+ Descriptor -> VerifierRole [pos="e,403.59,224.93 286.08,333.48 296.18,329.04 306.27,323.31 314.39,316 339.22,293.65 324.83,271.52 350.39,250 362.72,239.62 378.59,\
+232.55 393.76,227.76"];
+ Descriptor -> Creator [dir=back,
+ pos="s,289.61,334.64 298.68,329.73 304.65,326 310.09,321.48 314.39,316 379.04,233.54 270.84,151.2 350.39,83 424.6,19.374 552.82,69.002 \
+608.85,95.761",
+ style=dashed];
+ Descriptor -> Project [dir=back,
+ pos="s,288.95,334.6 298.2,329.69 304.31,325.96 309.91,321.46 314.39,316 365.88,253.28 295.39,196.66 350.39,137 367.54,118.4 396.57,112.3 \
+417.84,110.46",
+ style=dashed];
+ Descriptor -> Updater [dir=back,
+ pos="s,282.55,332.23 291.71,328.2 299.54,324.58 307.34,320.5 314.39,316 332.68,304.32 330.97,292.7 350.39,283 491.14,212.68 562.02,296.49 \
+698.39,218 736.35,196.15 766.27,152.89 781.13,128.27",
+ style=dashed];
+ Descriptor -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,294.99,351.12 e,589.73,390.16 305.25,351.98 366.33,357.15 459.91,366.41 540.39,380 553.16,382.16 566.78,384.96 579.63,387.85"];
+ Observation -> Otu [pos="e,610.29,605 487.15,605 520.65,605 567.69,605 599.96,605",
+ style=dotted];
+ Observation -> ObservationMatrix [pos="e,577.3,567.1 487.15,593.2 510.55,586.43 540.56,577.74 567.53,569.93",
+ style=invis];
+ Source -> SubsequentCitation [pos="e,576.33,481.32 472.41,492.26 496.54,489.72 533.56,485.82 566.32,482.38",
+ style=invis];
+ Source -> OriginCitation [pos="e,613.92,420.14 472.71,489.45 492,484.83 518.54,477.35 540.39,467 563.52,456.04 587.37,439.93 605.5,426.49",
+ style=invis];
+ CitationTopic -> Topic [pos="e,418.12,660 285.02,660 322.01,660 373.68,660 408.05,660",
+ style=dotted];
+ Documentation -> Document [pos="e,600.31,310 496.31,310 525.39,310 561.81,310 590.23,310",
+ style=dotted];
+ ObservationMatrixColumn -> ObservationMatrix [pos="e,577.37,550 527.52,550 540.73,550 554.31,550 567.2,550",
+ style=dotted];
+ Role -> Verifier [pos="e,608.84,187.08 472.41,167.7 505.11,172.34 561.47,180.35 598.84,185.66",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,734.03,475 698.42,475 706.75,475 715.36,475 723.82,475",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,608.88,194.91 487.15,212.21 520.31,207.5 566.72,200.9 598.95,196.32",
+ style=dotted];
+ Creator -> Updater [pos="e,762.33,110 666.1,110 690.12,110 725.16,110 752.08,110",
+ style=invis];
+ Project -> Creator [pos="e,608.78,110 473.21,110 505.89,110 561.31,110 598.38,110",
+ style=invis];
+}
diff --git a/data/documentation_model_er.dot b/data/documentation_model_er.dot
new file mode 100644
index 00000000..958463e0
--- /dev/null
+++ b/data/documentation_model_er.dot
@@ -0,0 +1,203 @@
+digraph Documentation {
+ graph [bb="0,0,756.57,382",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,240",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="42.896,130",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="42.896,186",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ Documentation [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#documentation",
+ label=Documentation,
+ pos="196.85,187",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.0848];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="196.85,129",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="437.73,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="437.73,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="437.73,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="632.07,283",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="632.07,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Document [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#document",
+ label=Document,
+ pos="437.73,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="437.73,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="726.57,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Tag -> Keyword [pos="e,163.19,129.21 70.017,129.83 92.789,129.68 126.26,129.46 152.96,129.28",
+ style=dotted];
+ Documentation -> Identifier [pos="e,76.493,228.63 146.84,204.09 127.23,210.93 104.87,218.73 86.004,225.31"];
+ Documentation -> Tag [pos="e,66.974,138.66 148.92,169.4 125.43,160.58 97.575,150.14 76.457,142.21"];
+ Documentation -> Note [pos="e,71.062,186.18 121.65,186.51 107.65,186.42 93.572,186.33 81.315,186.25"];
+ Documentation -> PinboardItem [pos="e,391.98,362.51 207.6,209.1 223.51,242.44 258.34,305.08 307.9,337 329.75,351.08 357.62,357.97 381.85,361.29"];
+ Documentation -> Role [pos="e,410.53,308.4 216.97,209.33 237.25,231.53 271.36,264.81 307.9,283 337.07,297.52 373.71,304.24 400.45,307.35"];
+ Documentation -> VerifierRole [pos="e,396.18,246.82 246.06,204.15 265.2,210.71 287.48,218.04 307.9,224 333.55,231.48 362.39,238.75 386.27,244.47"];
+ Documentation -> Creator [dir=back,
+ pos="s,253.51,202.34 263.57,204.62 340.64,221.59 470.21,238.38 567.57,191 594.24,178.02 613.02,147.81 622.93,128.18",
+ style=dashed];
+ Documentation -> Document [dir=back,
+ pos="s,272.12,179.85 282.29,178.87 322.84,174.97 369.28,170.49 400.56,167.48",
+ style=dashed];
+ Documentation -> Project [dir=back,
+ pos="s,242.77,168.95 252.4,164.82 259.01,161.94 265.63,158.96 271.9,156 288.26,148.28 290.88,143.14 307.9,137 342.19,124.63 383.76,117.2 \
+410.23,113.35",
+ style=dashed];
+ Documentation -> Updater [dir=back,
+ pos="s,250.12,170.77 259.17,165.69 263.74,162.82 268.06,159.61 271.9,156 298.25,131.22 277.18,102.1 307.9,83 374.45,41.615 583.71,67.672 \
+660.57,83 672.67,85.414 685.34,90.126 696.25,94.947",
+ style=dashed];
+ "Objects with Documentation" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with documentation",
+ label="Objects with Documentation",
+ pos="437.73,18",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=3.6065];
+ Documentation -> "Objects with Documentation" [dir=back,
+ pos="s,251.57,171.06 260.46,165.7 264.63,162.85 268.51,159.63 271.9,156 305.84,119.63 271.27,83.674 307.9,50 318.5,40.251 331.61,33.355 \
+345.36,28.5",
+ style=dashed];
+ Role -> Verifier [pos="e,603.49,286.87 465.07,306.3 498.27,301.64 555.55,293.6 593.38,288.29",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,603.37,279.11 479.52,261.73 513.15,266.45 560.49,273.09 593.27,277.69",
+ style=dotted];
+ Creator -> Updater [pos="e,696.4,110 660.57,110 668.6,110 677.53,110 686.14,110",
+ style=invis];
+ Project -> Creator [pos="e,603.31,110 465.48,110 498.69,110 555.55,110 593.22,110",
+ style=invis];
+}
diff --git a/data/documents_model_er.dot b/data/documents_model_er.dot
new file mode 100644
index 00000000..05c4303d
--- /dev/null
+++ b/data/documents_model_er.dot
@@ -0,0 +1,199 @@
+digraph Document {
+ graph [bb="0,0,559.91,322.72",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,195.22",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="42.896,86.224",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="42.896,141.22",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="435.41,304.22",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ Document [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#document",
+ label=Document,
+ pos="177.85,142.22",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.5572];
+ Documentation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#documentation",
+ label=Documentation,
+ pos="320.41,304.22",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4028];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="177.85,84.224",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="320.41,250.22",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="320.41,196.22",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="320.41,142.22",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="435.41,169.22",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="435.41,50.224",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="320.41,50.224",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="529.91,50.224",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Tag -> Keyword [pos="e,144.04,84.718 70.164,85.829 88.291,85.557 112.81,85.188 133.77,84.872",
+ style=dotted];
+ Document -> Identifier [pos="e,74.733,182.93 137.1,158.07 120.4,164.73 101.01,172.46 84.255,179.14"];
+ Document -> Tag [pos="e,66.15,95.597 138.36,126.01 118.4,117.61 94.331,107.47 75.481,99.528"];
+ Document -> Note [pos="e,71.122,141.43 121.67,141.81 108.04,141.71 93.758,141.6 81.206,141.5"];
+ Document -> Documentation [pos="e,281.61,286.15 189.7,164.71 204.54,193.65 233.53,244.11 269.91,277.22 271.02,278.23 272.17,279.22 273.36,280.18"];
+ Document -> PinboardItem [pos="e,283.93,232.16 200.85,164.39 218.58,181.6 244.65,205.45 269.91,223.22 271.56,224.39 273.27,225.54 275.01,226.67"];
+ Document -> Role [pos="e,293.32,186.2 219.13,157.7 239.53,165.54 264.09,174.97 283.79,182.54"];
+ Document -> VerifierRole [pos="e,278.76,142.22 234,142.22 245.42,142.22 257.41,142.22 268.66,142.22"];
+ Document -> Creator [dir=back,
+ pos="s,223.43,128.19 233.44,124.97 272.09,112.45 325.01,94.719 370.91,77.224 382.77,72.701 395.7,67.295 406.78,62.512",
+ style=dashed];
+ Document -> Project [dir=back,
+ pos="s,212.58,124.4 221.39,119.22 225.68,116.62 229.92,113.93 233.91,111.22 250.92,99.701 253.26,94.262 269.91,82.224 277.21,76.948 285.34,\
+71.518 292.86,66.663",
+ style=dashed];
+ Document -> Updater [dir=back,
+ pos="s,216.33,125.67 224.56,119.92 227.96,117.27 231.13,114.37 233.91,111.22 261.87,79.543 234.83,46.778 269.91,23.224 340.85,-24.402 \
+448.21,13.012 499.55,35.857",
+ style=dashed];
+ Documentation -> Source [pos="e,408.16,304.22 370.97,304.22 380.08,304.22 389.43,304.22 398.06,304.22",
+ style=dotted];
+ Role -> Verifier [pos="e,406.77,175.83 347.62,189.96 362.17,186.49 380.52,182.1 396.59,178.26",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,406.75,162.62 362.2,151.97 373.53,154.68 385.77,157.6 396.9,160.26",
+ style=dotted];
+ Creator -> Updater [pos="e,499.74,50.224 463.91,50.224 471.94,50.224 480.87,50.224 489.48,50.224",
+ style=invis];
+ Project -> Creator [pos="e,406.64,50.224 348.19,50.224 362.64,50.224 380.73,50.224 396.6,50.224",
+ style=invis];
+}
diff --git a/data/er.dot b/data/er.dot
new file mode 100644
index 00000000..161978d1
--- /dev/null
+++ b/data/er.dot
@@ -0,0 +1,359 @@
+digraph G {
+ graph [bb="0,0,544.14,707.5",
+ label="Generated 2022-02-08 10:47:04 -0600 via 'rake tw:docs:er'.",
+ lheight=0.21,
+ lp="272.07,11.5",
+ lwidth=4.51,
+ outputorder=edgesfirst
+ ];
+ node [label="\N"];
+ CollectingEvent [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collecting-event",
+ label=CollectingEvent,
+ pos="301.14,41.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="301.14,185.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ CollectingEvent -> CollectionObject [pos="e,301.14,167.41 301.14,59.738 301.14,84.299 301.14,128.25 301.14,157.15"];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="193.14,41.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ CollectionObject -> Source [pos="e,206.71,59.59 287.46,167.26 268.56,142.05 234.33,96.41 212.71,67.595",
+ style=dashed];
+ BiologicalAssociation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#biological-association",
+ label=BiologicalAssociation,
+ pos="445.14,185.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.9028];
+ CollectionObject -> BiologicalAssociation [pos="e,376.4,185.5 355.99,185.5 359.33,185.5 362.72,185.5 366.13,185.5"];
+ Observation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#observation",
+ label=Observation,
+ pos="445.14,329.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ CollectionObject -> Observation [pos="e,427.05,311.41 319.38,203.74 344.81,229.16 391.02,275.37 419.79,304.14"];
+ TypeMaterial [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#type-material",
+ label=TypeMaterial,
+ pos="373.14,401.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ CollectionObject -> TypeMaterial [pos="e,367.09,383.35 307.16,203.54 319.73,241.27 348.87,328.68 363.86,373.66"];
+ TaxonDetermination [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-determination",
+ label=TaxonDetermination,
+ pos="229.14,257.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8056];
+ CollectionObject -> TaxonDetermination [pos="e,247.56,239.09 282.97,203.67 274.43,212.22 264.09,222.56 254.76,231.88"];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="301.14,329.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ AssertedDistribution [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#asserted-distribution",
+ label=AssertedDistribution,
+ pos="229.14,401.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.7917];
+ Otu -> AssertedDistribution [pos="e,247.56,383.09 282.97,347.67 274.43,356.22 264.09,366.56 254.76,375.88"];
+ Otu -> BiologicalAssociation [pos="e,427.05,203.59 319.38,311.26 344.81,285.84 391.02,239.63 419.79,210.86"];
+ Otu -> Observation [pos="e,403.45,329.5 328.23,329.5 346.51,329.5 371.24,329.5 393.24,329.5"];
+ Otu -> TaxonDetermination [pos="e,247.56,275.91 282.97,311.33 274.43,302.78 264.09,292.44 254.76,283.12"];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="85.142,329.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Otu -> Identifier [pos="e,128.29,329.5 273.79,329.5 239.91,329.5 181.45,329.5 138.56,329.5",
+ style=dashed];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="85.142,617.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Otu -> Depiction [pos="e,98.1,600.22 287.63,347.52 250.56,396.95 147.16,534.81 104.22,592.07",
+ style=dashed];
+ TaxonName [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#taxon-name",
+ label=TaxonName,
+ pos="301.14,473.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1667];
+ TaxonName -> Otu [pos="e,301.14,347.59 301.14,455.26 301.14,430.7 301.14,386.75 301.14,357.85"];
+ TaxonName -> TypeMaterial [pos="e,354.73,419.91 319.31,455.33 327.86,446.78 338.2,436.44 347.52,427.12"];
+ Descriptor [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#descriptor",
+ label=Descriptor,
+ pos="445.14,257.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Descriptor -> Observation [pos="e,445.14,311.09 445.14,275.67 445.14,283.37 445.14,292.53 445.14,301.08"];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="85.142,41.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Source -> Citation [pos="e,124.22,41.5 165.89,41.5 156.32,41.5 145.26,41.5 134.45,41.5"];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="85.142,113.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ Source -> AlternateValue [pos="e,110.17,96.818 165.89,59.669 151.58,69.211 133.91,80.988 118.75,91.092",
+ style=dashed];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="85.142,401.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ AssertedDistribution -> Confidence [pos="e,136.24,401.5 164.3,401.5 158.43,401.5 152.48,401.5 146.63,401.5",
+ style=dashed];
+ Sequence [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#sequence",
+ label=Sequence,
+ pos="445.14,473.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.94444];
+ OriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-relationship",
+ label=OriginRelationship,
+ pos="445.14,617.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ Sequence -> OriginRelationship [pos="e,445.14,599.41 445.14,491.74 445.14,516.3 445.14,560.25 445.14,589.15",
+ style=dashed];
+ ControlledVocabularyTerm [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#controlled-vocabulary-term",
+ label=ControlledVocabularyTerm,
+ pos="301.14,545.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=2.3056];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="85.142,545.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ ControlledVocabularyTerm -> Tag [pos="e,112.37,545.5 217.94,545.5 185.04,545.5 148.89,545.5 122.63,545.5",
+ style=dashed];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="85.142,473.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ ControlledVocabularyTerm -> DataAttribute [pos="e,125.08,486.81 246.92,527.42 212.45,515.94 168.18,501.18 134.67,490.01",
+ style=dashed];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="229.14,617.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Image -> Depiction [pos="e,130.79,617.5 202.06,617.5 184.83,617.5 161.9,617.5 140.91,617.5"];
+ Attribution [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#attribution",
+ label=Attribution,
+ pos="85.142,689.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.3902];
+ Image -> Attribution [pos="e,114.58,674.78 202.06,631.04 179.95,642.1 148.44,657.85 123.7,670.22",
+ style=dashed];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="85.142,257.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ TaxonDetermination -> Note [pos="e,113.44,257.5 163.88,257.5 150.19,257.5 136.16,257.5 123.81,257.5",
+ style=dashed];
+ ProtocolRelationship [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#protocol-relationship",
+ label=ProtocolRelationship,
+ pos="85.142,185.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=2.3651];
+ TaxonDetermination -> ProtocolRelationship [pos="e,118.51,202.18 192.81,239.33 173.01,229.43 148.4,217.13 127.71,206.78",
+ style=dashed];
+ Georeference [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#georeference",
+ label=Georeference,
+ pos="445.14,41.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2361];
+ Georeference -> CollectingEvent [pos="e,353.2,41.5 400.37,41.5 388.69,41.5 375.9,41.5 363.49,41.5"];
+ Person [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#person",
+ label=Person,
+ pos="517.14,113.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ "Role:Collector" [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role:collector",
+ label="Role:Collector",
+ pos="373.14,113.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3333];
+ Person -> "Role:Collector" [pos="e,421.38,113.5 490.06,113.5 473.54,113.5 451.77,113.5 431.5,113.5",
+ style=dashed];
+ "Role:Collector" -> CollectionObject [pos="e,319.56,167.09 354.97,131.67 346.43,140.22 336.09,150.56 326.76,159.88",
+ style=dashed];
+}
diff --git a/data/extracts_model_er.dot b/data/extracts_model_er.dot
new file mode 100644
index 00000000..7d7414dd
--- /dev/null
+++ b/data/extracts_model_er.dot
@@ -0,0 +1,424 @@
+digraph Extract {
+ graph [bb="0,0,804.08,964.5",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph core {
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="748.08,946",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="748.08,891",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Sequence [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#sequence",
+ label=Sequence,
+ pos="575.58,673",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.94444];
+ }
+ subgraph supporting {
+ Extract [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#extract",
+ label=Extract,
+ pos="249.68,325",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.2054];
+ RelatedOriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-origin-relationship",
+ label=RelatedOriginRelationship,
+ pos="575.58,728",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2361];
+ OriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-relationship",
+ label=OriginRelationship,
+ pos="394.08,618",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ DerivedExtract [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#derived-extract",
+ label=DerivedExtract,
+ pos="575.58,618",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.375];
+ DerivedSequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#derived-sequence",
+ label=DerivedSequence,
+ pos="575.58,564",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5556];
+ ExtractorRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#extractor-role",
+ label=ExtractorRole,
+ pos="394.08,510",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ Extractor [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#extractor",
+ label=Extractor,
+ pos="575.58,510",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ OriginExtract [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-extract",
+ label=OriginExtract,
+ pos="748.08,836",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ OriginLot [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-lot",
+ label=OriginLot,
+ pos="748.08,782",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.98611];
+ OriginOtu [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-otu",
+ label=OriginOtu,
+ pos="748.08,728",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1];
+ OriginRangedLot [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-ranged-lot",
+ label=OriginRangedLot,
+ pos="748.08,674",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5556];
+ OriginSpecimen [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-specimen",
+ label=OriginSpecimen,
+ pos="748.08,620",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4722];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="394.08,456",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Protocol [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#protocol",
+ label=Protocol,
+ pos="249.68,267",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.86111];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="394.08,402",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="394.08,348",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="575.58,375",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="575.58,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="394.08,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Repository [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#repository",
+ label=Repository,
+ pos="394.08,202",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0556];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="748.08,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ Container [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#container",
+ label=Container,
+ pos="394.08,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ ContainerItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#container-item",
+ label=ContainerItem,
+ pos="575.58,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ ParentContainerItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#parent-container-item",
+ label=ParentContainerItem,
+ pos="394.08,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8056];
+ }
+ subgraph annotator_cluster {
+ graph [rank=min];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="85.142,378",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="85.142,324",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ ProtocolRelationship [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#protocol-relationship",
+ label=ProtocolRelationship,
+ pos="85.142,269",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=2.3651];
+ }
+ ProtocolRelationship -> Protocol [pos="e,218.63,267.37 170.27,267.96 183.55,267.8 196.74,267.64 208.39,267.5",
+ style=dotted];
+ Extract -> DataAttribute [pos="e,126.83,365.03 211.22,337.51 198.26,341.81 183.64,346.64 170.28,351 159.34,354.57 147.59,358.37 136.44,361.95"];
+ Extract -> Identifier [pos="e,128.42,324.26 206.33,324.74 185.61,324.61 160.48,324.46 138.56,324.32"];
+ Extract -> ProtocolRelationship [pos="e,132.06,284.08 212.83,312.01 199.5,307.23 184.22,301.81 170.28,297 161.1,293.83 151.34,290.53 141.83,287.34"];
+ Extract -> RelatedOriginRelationship [pos="e,494.98,713.32 253.86,347.11 262.62,410.96 289.14,592.49 329.08,636 369.01,679.52 432.56,700.23 484.99,711.3"];
+ Extract -> OriginRelationship [pos="e,376.01,599.9 256.35,347.04 267.08,386.7 292.58,471.98 329.08,537 340.18,556.78 355.95,576.8 369.05,591.99"];
+ Extract -> ExtractorRole [pos="e,347.9,495.81 256.29,347.13 265.86,380.72 288.37,444.71 329.08,483 332.14,485.88 335.56,488.48 339.17,490.82"];
+ Extract -> PinboardItem [pos="e,348.35,440.74 262.69,347.23 276.17,370.38 300.01,406.34 329.08,429 332.25,431.47 335.68,433.76 339.25,435.87"];
+ Extract -> Role [pos="e,366.77,392.07 276.16,342.8 291.18,352.89 310.78,365.39 329.08,375 338.03,379.7 347.99,384.22 357.33,388.17"];
+ Extract -> VerifierRole [pos="e,352.13,341.39 293.02,331.84 308.35,334.32 325.83,337.14 341.85,339.73"];
+ Extract -> Creator [dir=back,
+ pos="s,293.07,316.85 303.11,314.9 345.31,306.65 406.1,294.53 459.08,283 489.06,276.48 523.27,268.4 546.62,262.79",
+ style=dashed];
+ Extract -> Project [dir=back,
+ pos="s,281.93,309.86 291.17,305.38 315.22,293.73 345.05,279.27 366.21,269.02",
+ style=dashed];
+ Extract -> Repository [dir=back,
+ pos="s,277.73,307.95 285.78,301.31 288.37,298.98 290.84,296.53 293.08,294 314.92,269.23 304.51,251.07 329.08,229 336.7,222.15 346.32,\
+216.87 355.76,212.88",
+ style=dashed];
+ Extract -> Updater [dir=back,
+ pos="s,279.02,308.28 286.59,301.6 288.98,299.22 291.18,296.68 293.08,294 325.03,248.92 284.71,207.93 329.08,175 451.65,84.024 648.46,\
+192.52 719.98,237.88",
+ style=dashed];
+ Extract -> Container [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,279.27,308.45 e,359,120.47 286.77,301.73 289.12,299.31 291.26,296.73 293.08,294 331.47,236.16 285.97,196.42 329.08,142 334.62,\
+135 342.11,129.4 350,124.98",
+ style=dotted];
+ Extract -> ContainerItem [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,279.55,308.63 e,539.85,91.92 286.97,301.85 289.27,299.41 291.35,296.79 293.08,294 343.14,213.11 256.37,144.35 329.08,83 385.34,\
+35.523 476.56,63.873 530.54,87.696"];
+ Extract -> ParentContainerItem [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,279.64,308.69 e,343.77,36.181 287.04,301.89 289.32,299.44 291.38,296.81 293.08,294 349.71,200.15 264.78,138.78 329.08,50 331.04,\
+47.284 333.31,44.784 335.78,42.486",
+ style=dotted];
+ RelatedOriginRelationship -> CollectionObject [pos="e,704.05,927.97 583.41,746.1 598.12,782.99 636.07,867.69 692.08,919 693.2,920.03 694.38,921.03 695.59,922.01",
+ style=dotted];
+ RelatedOriginRelationship -> Otu [pos="e,720.91,880.27 588.58,746.15 607.76,774.1 647.73,828.08 692.08,863 698.04,867.69 704.91,871.93 711.73,875.61",
+ style=dotted];
+ RelatedOriginRelationship -> Extract [pos="e,252.87,347.18 494.98,728.39 440.85,720.81 371.59,700.32 329.08,654 289.45,610.82 263.03,431.73 254.07,357.36",
+ style=dotted];
+ RelatedOriginRelationship -> OriginExtract [pos="e,708.21,817.86 600.19,746.19 623.03,763.4 658.98,789.43 692.08,809 694.4,810.37 696.8,811.74 699.25,813.09",
+ style=dotted];
+ RelatedOriginRelationship -> OriginLot [pos="e,712.35,771 633.82,746.13 656.29,753.25 681.67,761.29 702.71,767.95",
+ style=dotted];
+ RelatedOriginRelationship -> OriginOtu [pos="e,711.67,728 656.33,728 671.81,728 687.52,728 701.42,728",
+ style=dotted];
+ RelatedOriginRelationship -> OriginRangedLot [pos="e,692,691.44 633.82,709.87 649.37,704.95 666.31,699.58 682.23,694.54",
+ style=dotted];
+ RelatedOriginRelationship -> OriginSpecimen [pos="e,704.48,638.02 641.79,709.95 646.84,707.34 651.68,704.37 656.08,701 678.95,683.43 670.38,666.01 692.08,647 693.37,645.87 694.72,\
+644.77 696.11,643.71",
+ style=dotted];
+ OriginRelationship -> Sequence [pos="e,541.35,662.82 453.85,636.01 479.26,643.79 508.44,652.74 531.75,659.88",
+ style=dotted];
+ OriginRelationship -> RelatedOriginRelationship [pos="e,513.67,709.91 412.72,636.14 431.61,654.66 463.18,683.15 495.08,701 498.09,702.69 501.23,704.3 504.45,705.82",
+ style=invis];
+ OriginRelationship -> DerivedExtract [pos="e,525.84,618 454.35,618 474.09,618 496.06,618 515.77,618",
+ style=dotted];
+ OriginRelationship -> DerivedSequence [pos="e,519.32,580.62 454.35,600.17 472.01,594.86 491.46,589 509.48,583.58",
+ style=dotted];
+ ExtractorRole -> Extractor [pos="e,542.04,510 440.37,510 468.46,510 504.32,510 531.9,510",
+ style=dotted];
+ Role -> Verifier [pos="e,546.97,379.15 421.18,398.07 451.58,393.5 502.05,385.91 536.75,380.69",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,546.84,370.83 435.81,354.13 466.16,358.69 507.29,364.88 536.89,369.33",
+ style=dotted];
+ Creator -> Updater [pos="e,717.89,256 604.35,256 632.41,256 676.02,256 707.66,256",
+ style=invis];
+ Project -> Creator [pos="e,546.93,256 421.95,256 452.44,256 502.38,256 536.79,256",
+ style=invis];
+ Container -> ContainerItem [pos="e,527.97,110 429.26,110 454.28,110 488.81,110 517.92,110",
+ style=invis];
+}
diff --git a/data/gene_attributes_model_er.dot b/data/gene_attributes_model_er.dot
new file mode 100644
index 00000000..62a54dac
--- /dev/null
+++ b/data/gene_attributes_model_er.dot
@@ -0,0 +1,203 @@
+digraph GeneAttribute {
+ graph [bb="0,0,578.05,379.31",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,222.81",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="42.896,113.81",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="42.896,168.81",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Descriptor [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#descriptor",
+ label=Descriptor,
+ pos="343.55,360.81",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Sequence [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#sequence",
+ label=Sequence,
+ pos="343.55,305.81",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.94444];
+ }
+ subgraph supporting {
+ GeneAttribute [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#gene-attribute",
+ label=GeneAttribute,
+ pos="191.92,169.81",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.948];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="191.92,111.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="343.55,250.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="343.55,196.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="343.55,142.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="453.55,169.81",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="453.55,50.812",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="343.55,50.812",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="548.05,50.812",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Tag -> Keyword [pos="e,158.17,112.26 70.181,113.45 91.814,113.16 122.91,112.74 148.13,112.39",
+ style=dotted];
+ GeneAttribute -> Identifier [pos="e,76.161,211.18 144.5,186.54 125.66,193.34 104.05,201.13 85.703,207.74"];
+ GeneAttribute -> Tag [pos="e,66.869,122.56 145.91,152.67 123.45,144.11 96.786,133.96 76.353,126.17"];
+ GeneAttribute -> Note [pos="e,70.863,169 121.58,169.34 107.64,169.25 93.505,169.15 81.178,169.07"];
+ GeneAttribute -> Descriptor [dir=back,
+ pos="s,203.02,191.95 207.6,201.31 225.27,236.72 257.67,294.41 298.05,333.81 301.28,336.97 304.95,339.92 308.76,342.63",
+ style=dashed];
+ GeneAttribute -> Sequence [dir=back,
+ pos="s,211.7,192.02 218.47,199.7 238.78,222.51 268.57,253.96 298.05,277.81 302.31,281.26 307.01,284.62 311.72,287.76",
+ style=dashed];
+ GeneAttribute -> PinboardItem [pos="e,309.22,232.77 229.14,189.42 250.58,201.02 277.84,215.78 300.26,227.92"];
+ GeneAttribute -> Role [pos="e,316.2,192.06 258.11,181.58 274.59,184.55 291.7,187.64 306.18,190.25"];
+ GeneAttribute -> VerifierRole [pos="e,301.69,150.18 258.11,158.05 269.33,156.02 280.85,153.95 291.62,152"];
+ GeneAttribute -> Creator [dir=back,
+ pos="s,235.44,151.93 244.7,147.6 250.61,144.76 256.5,141.81 262.05,138.81 278.76,129.79 281.23,124.61 298.05,115.81 336.88,95.493 348.66,\
+94.831 389.05,77.812 400.75,72.881 413.65,67.404 424.75,62.679",
+ style=dashed];
+ GeneAttribute -> Project [dir=back,
+ pos="s,240.12,153.1 249.13,148.09 253.72,145.3 258.1,142.21 262.05,138.81 284.48,119.51 277.68,104.27 298.05,82.812 303.29,77.29 309.6,\
+72.095 315.8,67.561",
+ style=dashed];
+ GeneAttribute -> Updater [dir=back,
+ pos="s,242.52,153.89 251.1,148.51 255.11,145.65 258.83,142.43 262.05,138.81 297.62,98.771 254.89,55.525 298.05,23.812 364.1,-24.723 467.88,\
+12.856 518.02,36.047",
+ style=dashed];
+ Role -> Verifier [pos="e,424.76,176.76 370.69,190.28 383.98,186.95 400.37,182.86 414.98,179.2",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,424.92,162.9 385.07,152.94 394.93,155.41 405.44,158.03 415.15,160.46",
+ style=dotted];
+ Creator -> Updater [pos="e,517.88,50.812 482.05,50.812 490.08,50.812 499.01,50.812 507.62,50.812",
+ style=invis];
+ Project -> Creator [pos="e,425.03,50.812 371.25,50.812 384.41,50.812 400.52,50.812 414.92,50.812",
+ style=invis];
+}
diff --git a/data/geographic_area_types_model_er.dot b/data/geographic_area_types_model_er.dot
new file mode 100644
index 00000000..667f92f6
--- /dev/null
+++ b/data/geographic_area_types_model_er.dot
@@ -0,0 +1,120 @@
+digraph GeographicAreaType {
+ graph [bb="0,0,434.54,270.76",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ GeographicAreaType [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#geographic-area-type",
+ label=GeographicAreaType,
+ pos="98.268,117.76",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.7297];
+ GeographicArea [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-area",
+ label=GeographicArea,
+ pos="285.54,252.76",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4722];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="285.54,198.76",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="285.54,144.76",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="285.54,90.763",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="404.54,117.76",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="285.54,36.763",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="404.54,36.763",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ GeographicAreaType -> GeographicArea [pos="e,247.36,234.64 123.65,140.06 149.53,163.1 192.18,199.32 232.54,225.76 234.44,227.01 236.4,228.24 238.41,229.46"];
+ GeographicAreaType -> PinboardItem [pos="e,243.17,180.68 146.02,138.2 172.77,149.9 206.36,164.58 233.76,176.56"];
+ GeographicAreaType -> Role [pos="e,258.16,140.92 186.48,130.47 208.29,133.65 230.5,136.89 248.26,139.48"];
+ GeographicAreaType -> VerifierRole [pos="e,243.96,96.676 186.48,105.05 202.64,102.7 219.02,100.31 233.65,98.179"];
+ GeographicAreaType -> Creator [dir=back,
+ pos="s,146.02,97.323 155.27,93.28 188.85,78.599 230.08,60.572 256.81,48.884",
+ style=dashed];
+ GeographicAreaType -> Updater [dir=back,
+ pos="s,117.71,95.575 124.51,88.118 149.02,61.819 188.85,25.243 232.54,9.7631 276.94,-5.9711 292.33,0.5491 338.54,9.7631 350.64,12.177 \
+363.31,16.889 374.22,21.71",
+ style=dashed];
+ Role -> Verifier [pos="e,375.74,124.18 312.79,138.7 328.45,135.09 348.59,130.44 365.91,126.44",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,375.89,111.38 327.13,100.13 339.71,103.03 353.51,106.22 365.89,109.07",
+ style=dotted];
+ Creator -> Updater [pos="e,374.37,36.763 314.26,36.763 329.12,36.763 347.68,36.763 364.02,36.763",
+ style=invis];
+}
diff --git a/data/geographic_areas_geographic_items_model_er.dot b/data/geographic_areas_geographic_items_model_er.dot
new file mode 100644
index 00000000..69eb40e8
--- /dev/null
+++ b/data/geographic_areas_geographic_items_model_er.dot
@@ -0,0 +1,105 @@
+digraph GeographicAreasGeographicItem {
+ graph [bb="0,0,524.4,252",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ GeographicAreasGeographicItem [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#geographic-areas-geographic-item",
+ label=GeographicAreasGeographicItem,
+ pos="144.7,126",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=4.0194];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="378.4,234",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="378.4,180",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="378.4,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="495.9,153",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ GeographicArea [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-area",
+ label=GeographicArea,
+ pos="378.4,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4722];
+ GeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-item",
+ label=GeographicItem,
+ pos="378.4,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4583];
+ }
+ GeographicAreasGeographicItem -> PinboardItem [pos="e,338.46,215.85 193.15,148.12 232.86,166.63 289.28,192.93 329.2,211.53"];
+ GeographicAreasGeographicItem -> Role [pos="e,351.39,173.94 227.39,145.04 266.31,154.11 310.89,164.5 341.27,171.58"];
+ GeographicAreasGeographicItem -> VerifierRole [pos="e,336.73,126 289.47,126 302.62,126 315.25,126 326.64,126"];
+ GeographicAreasGeographicItem -> GeographicArea [dir=back,
+ pos="s,227.39,106.96 237.42,104.62 267.3,97.66 299.42,90.174 325.34,84.132",
+ style=dashed];
+ GeographicAreasGeographicItem -> GeographicItem [dir=back,
+ pos="s,193.15,103.88 202.47,99.538 244.7,79.851 301.25,53.496 338.46,36.147",
+ style=dashed];
+ Role -> Verifier [pos="e,467.18,159.48 405.61,173.87 420.82,170.32 440.24,165.78 457.09,161.84",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,467.2,146.53 420.12,135.52 432.17,138.34 445.32,141.41 457.17,144.18",
+ style=dotted];
+}
diff --git a/data/geographic_areas_model_er.dot b/data/geographic_areas_model_er.dot
new file mode 100644
index 00000000..4acdb709
--- /dev/null
+++ b/data/geographic_areas_model_er.dot
@@ -0,0 +1,289 @@
+digraph GeographicArea {
+ graph [bb="0,0,554.14,842.97",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ AssertedDistribution [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#asserted-distribution",
+ label=AssertedDistribution,
+ pos="293.14,824.47",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.7917];
+ CollectingEvent [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collecting-event",
+ label=CollectingEvent,
+ pos="293.14,769.47",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ }
+ subgraph supporting {
+ GeographicArea [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#geographic-area",
+ label=GeographicArea,
+ pos="78.57,417.47",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.1825];
+ AncestorHierarchy [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#ancestor-hierarchy",
+ label=AncestorHierarchy,
+ pos="293.14,714.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6528];
+ Child [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#child",
+ label=Child,
+ pos="293.14,660.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ DescendantHierarchy [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#descendant-hierarchy",
+ label=DescendantHierarchy,
+ pos="293.14,606.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8611];
+ GeographicAreasGeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-areas-geographic-item",
+ label=GeographicAreasGeographicItem,
+ pos="293.14,552.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.7778];
+ GeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-item",
+ label=GeographicItem,
+ pos="491.64,552.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4583];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="293.14,498.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="293.14,444.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SelfAndAncestor [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#self-and-ancestor",
+ label=SelfAndAncestor,
+ pos="491.64,714.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5278];
+ SelfAndDescendant [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#self-and-descendant",
+ label=SelfAndDescendant,
+ pos="491.64,606.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.7361];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="293.14,390.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="491.64,417.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="293.14,336.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ GeographicAreaType [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-area-type",
+ label=GeographicAreaType,
+ pos="293.14,282.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8611];
+ Level0 [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#level0",
+ label=Level0,
+ pos="293.14,228.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Level1 [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#level1",
+ label=Level1,
+ pos="293.14,174.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Level2 [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#level2",
+ label=Level2,
+ pos="293.14,120.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Parent [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#parent",
+ label=Parent,
+ pos="293.14,66.472",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="491.64,336.47",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ GeographicArea -> AssertedDistribution [pos="e,228.51,817.23 79.228,439.62 79.484,504.56 89.421,696.23 193.14,797.47 200.41,804.57 209.35,809.84 218.85,813.75"];
+ GeographicArea -> CollectingEvent [pos="e,240.9,764.52 80.609,439.67 84.567,498.05 103.47,657.16 193.14,741.47 203.56,751.27 217.14,757.68 230.9,761.86"];
+ GeographicArea -> AncestorHierarchy [pos="e,233.62,707.71 82.341,439.79 89.962,491.45 116.07,619.95 193.14,687.47 201.9,695.14 212.64,700.66 223.77,704.62"];
+ GeographicArea -> Child [pos="e,265.99,659.02 84.869,439.61 96.544,483.5 128.72,581.75 193.14,633.47 210.89,647.72 235.57,654.47 255.85,657.66"];
+ GeographicArea -> DescendantHierarchy [pos="e,225.9,595.28 88.937,439.51 105,474.6 141.16,542.92 193.14,579.47 200.23,584.46 208.21,588.53 216.48,591.84"];
+ GeographicArea -> GeographicAreasGeographicItem [pos="e,212.12,534.41 97.222,439.91 117.72,464.47 153.79,503.29 193.14,525.47 196.22,527.21 199.42,528.84 202.7,530.37"];
+ GeographicArea -> PinboardItem [pos="e,247.25,488.03 117.73,437.71 139.43,448.68 167.35,461.91 193.14,471.47 207.26,476.71 222.84,481.43 237.38,485.4"];
+ GeographicArea -> Role [pos="e,265.97,441.15 157.22,427.33 190.93,431.62 228.8,436.43 255.82,439.86"];
+ GeographicArea -> VerifierRole [pos="e,251.37,395.65 157.22,407.61 185.26,404.05 216.17,400.12 241.32,396.93"];
+ GeographicArea -> Creator [dir=back,
+ pos="s,117.73,397.24 126.69,392.76 146.81,382.82 170.77,371.77 193.14,363.47 216.69,354.74 244.33,347.44 264.41,342.64",
+ style=dashed];
+ GeographicArea -> GeographicAreaType [dir=back,
+ pos="s,97.222,395.04 103.94,387.14 125.08,362.76 157.79,329.4 193.14,309.47 203.23,303.79 214.58,299.25 225.89,295.64",
+ style=dashed];
+ GeographicArea -> Level0 [dir=back,
+ pos="s,88.937,395.44 93.293,386.17 111.04,349.35 145.42,289.02 193.14,255.47 214.85,240.2 244.83,233.56 266.09,230.68",
+ style=dashed];
+ GeographicArea -> Level1 [dir=back,
+ pos="s,84.869,395.34 87.554,385.6 101.09,338.23 133.12,249.66 193.14,201.47 213.98,184.74 244.39,178.35 265.99,175.92",
+ style=dashed];
+ GeographicArea -> Level2 [dir=back,
+ pos="s,82.341,395.15 83.936,384.96 93.31,328.16 120.73,210.91 193.14,147.47 213.37,129.75 244.18,123.54 266.05,121.43",
+ style=dashed];
+ GeographicArea -> Parent [dir=back,
+ pos="s,80.565,395.23 81.306,385.16 86.581,320.13 107.83,172.94 193.14,93.472 212.82,75.137 243.73,69.038 265.77,67.119",
+ style=dashed];
+ GeographicArea -> Updater [dir=back,
+ pos="s,82.75,395.39 84.269,385.47 97.228,302.1 136.33,81.726 193.14,39.472 264.47,-13.573 321.15,-12.666 393.14,39.472 485.88,106.64 \
+491.98,264.85 491.26,318.39",
+ style=dashed];
+ AncestorHierarchy -> SelfAndAncestor [pos="e,436.61,714.47 352.83,714.47 375.98,714.47 402.65,714.47 426.32,714.47",
+ style=dotted];
+ DescendantHierarchy -> SelfAndDescendant [pos="e,428.98,606.47 360.39,606.47 379.19,606.47 399.73,606.47 418.84,606.47",
+ style=dotted];
+ GeographicAreasGeographicItem -> GeographicItem [pos="e,439.02,552.47 393.25,552.47 405.38,552.47 417.48,552.47 428.83,552.47",
+ style=dotted];
+ Role -> Verifier [pos="e,462.85,421.29 320.23,440.89 354.26,436.21 414,428 452.94,422.65",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,462.94,413.67 334.86,396.07 369.59,400.84 419.15,407.65 452.98,412.3",
+ style=dotted];
+ Creator -> Updater [pos="e,461.44,336.47 321.88,336.47 355.63,336.47 412.83,336.47 451.17,336.47",
+ style=invis];
+}
diff --git a/data/geographic_items_model_er.dot b/data/geographic_items_model_er.dot
new file mode 100644
index 00000000..4055b20b
--- /dev/null
+++ b/data/geographic_items_model_er.dot
@@ -0,0 +1,244 @@
+digraph GeographicItem {
+ graph [bb="0,0,1007.7,574.79",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ GeographicItem [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#geographic-item",
+ label=GeographicItem,
+ pos="77.867,286.79",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.163];
+ GeoreferencesThroughErrorGeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#georeferences-through-error-geographic-item",
+ label=GeoreferencesThroughErrorGeographicItem,
+ pos="320.73,556.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=3.5833];
+ CollectingEventsThroughGeoreferenceErrorGeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#collecting-events-through-georeference-error-geographic-item",
+ label=CollectingEventsThroughGeoreferenceErrorGeographicItem,
+ pos="658.73,556.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=4.8056];
+ Georeference [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#georeference",
+ label=Georeference,
+ pos="320.73,502.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2361];
+ CollectingEventsThroughGeoreference [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#collecting-events-through-georeference",
+ label=CollectingEventsThroughGeoreference,
+ pos="658.73,502.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=3.1806];
+ GadmGeographicArea [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#gadm-geographic-area",
+ label=GadmGeographicArea,
+ pos="320.73,448.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.9444];
+ GeographicArea [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-area",
+ label=GeographicArea,
+ pos="658.73,394.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4722];
+ GeographicAreaType [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-area-type",
+ label=GeographicAreaType,
+ pos="937.73,421.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8611];
+ GeographicAreasGeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-areas-geographic-item",
+ label=GeographicAreasGeographicItem,
+ pos="320.73,394.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.7778];
+ NeGeographicArea [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#ne-geographic-area",
+ label=NeGeographicArea,
+ pos="320.73,340.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ ParentGeographicArea [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#parent-geographic-area",
+ label=ParentGeographicArea,
+ pos="937.73,367.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.9444];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="320.73,286.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="320.73,232.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ TdwgGeographicArea [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#tdwg-geographic-area",
+ label=TdwgGeographicArea,
+ pos="320.73,178.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.9028];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="320.73,124.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="658.73,178.79",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="320.73,70.788",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="658.73,70.788",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ GeographicItem -> GeoreferencesThroughErrorGeographicItem [pos="e,205.11,538.65 82.387,308.99 91.272,357.29 119.29,472.17 191.73,529.79 193.3,531.03 194.91,532.23 196.56,533.37"];
+ GeographicItem -> Georeference [pos="e,276.2,502.21 85.512,308.95 98.74,349.04 132.33,433.36 191.73,475.79 213.16,491.09 241.43,498.07 265.96,501.13"];
+ GeographicItem -> GadmGeographicArea [pos="e,250.5,442.8 90.935,308.95 108.77,339.45 145.13,393.78 191.73,421.79 206.46,430.64 223.66,436.62 240.59,440.65"];
+ GeographicItem -> GeographicAreasGeographicItem [pos="e,220.59,378.2 103.43,309.08 125.13,327.56 158.41,353.1 191.73,367.79 197.88,370.5 204.31,372.94 210.88,375.14"];
+ GeographicItem -> NeGeographicArea [pos="e,259.43,328.42 139.13,301.52 156.12,305.59 174.63,309.94 191.73,313.79 210.42,317.99 230.69,322.36 249.47,326.32"];
+ GeographicItem -> PinboardItem [pos="e,275.1,286.79 155.74,286.79 191.27,286.79 232.65,286.79 264.95,286.79"];
+ GeographicItem -> Role [pos="e,293.7,238.07 139.13,272.06 156.12,267.99 174.63,263.64 191.73,259.79 222.7,252.82 258,245.41 283.67,240.12"];
+ GeographicItem -> TdwgGeographicArea [pos="e,251.99,187.66 103.43,264.5 125.13,246.02 158.41,220.48 191.73,205.79 207.46,198.86 225.06,193.67 242.07,189.79"];
+ GeographicItem -> VerifierRole [pos="e,279.18,126.54 90.935,264.63 108.77,234.13 145.13,179.8 191.73,151.79 215,137.8 244.45,130.99 269.23,127.7"];
+ GeographicItem -> Creator [dir=back,
+ pos="s,85.512,264.63 88.796,255.01 103.87,212.25 136.74,137.06 191.73,97.788 221.49,76.538 264.44,71.337 292.23,70.404",
+ style=dashed];
+ GeographicItem -> Updater [dir=back,
+ pos="s,81.395,264.55 82.927,254.39 91.709,199.79 118.03,90.823 191.73,43.788 333.14,-46.45 550.55,26.897 628.59,58.281",
+ style=dashed];
+ GeoreferencesThroughErrorGeographicItem -> CollectingEventsThroughGeoreferenceErrorGeographicItem [pos="e,485.49,556.79 450.2,556.79 458.52,556.79 466.98,556.79 475.49,556.79",
+ style=dotted];
+ Georeference -> CollectingEventsThroughGeoreference [pos="e,544.17,502.79 365.32,502.79 407.95,502.79 474.91,502.79 534,502.79",
+ style=dotted];
+ GeographicArea -> GeographicAreaType [pos="e,870.67,415.35 711.84,399.87 753.74,403.95 813.21,409.75 860.47,414.35",
+ style=dotted];
+ GeographicArea -> ParentGeographicArea [pos="e,867.6,374.53 711.84,389.71 752.86,385.71 810.73,380.07 857.49,375.51",
+ style=dotted];
+ GeographicAreasGeographicItem -> GeographicArea [pos="e,605.29,394.79 421.18,394.79 477.55,394.79 546.34,394.79 595.18,394.79",
+ style=dotted];
+ Role -> Verifier [pos="e,630.02,183.24 347.82,228.6 406.92,219.1 551.24,195.9 620.05,184.85",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,630.2,174.36 362.26,131.3 427.9,141.85 556.52,162.52 620.19,172.75",
+ style=dotted];
+ Creator -> Updater [pos="e,628.49,70.788 349.52,70.788 409.06,70.788 549.17,70.788 618.07,70.788",
+ style=invis];
+}
diff --git a/data/georeferences_model_er.dot b/data/georeferences_model_er.dot
new file mode 100644
index 00000000..f21a7b76
--- /dev/null
+++ b/data/georeferences_model_er.dot
@@ -0,0 +1,411 @@
+digraph Georeference {
+ graph [bb="0,0,819.51,673.66",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph core {
+ CollectingEvent [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collecting-event",
+ label=CollectingEvent,
+ pos="442.51,360.66",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="606.51,360.66",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="442.51,600.66",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ Georeference [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#georeference",
+ label=Georeference,
+ pos="272.9,332.66",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.8503];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="272.9,655.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="272.9,274.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ GeoreferencerRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#georeferencer-role",
+ label=GeoreferencerRole,
+ pos="442.51,305.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6528];
+ Georeferencer [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#georeferencer",
+ label=Georeferencer,
+ pos="606.51,305.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3056];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="272.9,220.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="442.51,251.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Protocol [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#protocol",
+ label=Protocol,
+ pos="272.9,166.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.86111];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="442.51,197.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="606.51,480.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="761.51,480.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="442.51,655.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="442.51,143.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="606.51,170.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="606.51,51.662",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ ErrorGeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#error-geographic-item",
+ label=ErrorGeographicItem,
+ pos="442.51,507.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8611];
+ GeographicItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-item",
+ label=GeographicItem,
+ pos="442.51,453.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4583];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="442.51,51.662",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="761.51,51.662",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="606.51,576.66",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="85.142,600.66",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="85.142,275.66",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="85.142,384.66",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="85.142,220.66",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="85.142,330.66",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ ProtocolRelationship [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#protocol-relationship",
+ label=ProtocolRelationship,
+ pos="85.142,166.66",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=2.3651];
+ }
+ Citation -> Source [pos="e,415.22,600.66 124.17,600.66 193.01,600.66 337.38,600.66 405.04,600.66",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,226.69,642.28 118.5,610.24 145.63,618.28 184.96,629.92 217,639.41",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,218.07,274.95 135.92,275.39 158.01,275.28 184.29,275.13 207.82,275.01",
+ style=dotted];
+ Tag -> Keyword [pos="e,239.24,220.66 112.36,220.66 142.67,220.66 193,220.66 229.03,220.66",
+ style=dotted];
+ ProtocolRelationship -> Protocol [pos="e,241.77,166.66 170.32,166.66 191.67,166.66 213.63,166.66 231.65,166.66",
+ style=dotted];
+ CollectingEvent -> CollectionObject [pos="e,551.79,360.66 494.76,360.66 509.67,360.66 526.13,360.66 541.71,360.66",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,581.2,498.67 468.11,582.44 496.1,561.7 541.94,527.75 572.89,504.82",
+ style=invis];
+ Source -> OriginCitation [pos="e,558.95,583.56 469.53,596.81 490.87,593.65 521.84,589.06 548.83,585.06",
+ style=invis];
+ Georeference -> Citation [pos="e,98.045,583.49 256.54,354.82 222.36,404.14 140.15,522.75 103.86,575.1"];
+ Georeference -> Confidence [pos="e,124.18,287.33 222.26,317.43 194.84,309.02 160.94,298.62 133.84,290.3"];
+ Georeference -> DataAttribute [pos="e,129.22,372.6 220.12,347.16 194.85,354.23 164.49,362.73 139.07,369.85"];
+ Georeference -> Tag [pos="e,111.73,224.69 227.9,315.89 220.25,311.89 212.7,307.15 206.28,301.66 184.65,283.15 192.99,265.84 170.28,248.66 156.18,237.99 137.8,\
+231.26 121.82,227.08"];
+ Georeference -> Note [pos="e,113.15,330.95 205.94,331.95 178.24,331.65 147.04,331.32 123.43,331.06"];
+ Georeference -> ProtocolRelationship [pos="e,147.93,178.9 225.23,316.5 218.2,312.49 211.55,307.6 206.28,301.66 172.71,263.81 206.26,229.24 170.28,193.66 166.33,189.75 161.81,\
+186.41 156.96,183.55"];
+ Georeference -> CollectingEvent [dir=back,
+ pos="s,338.7,343.49 348.84,345.18 362.89,347.53 377.27,349.93 390.38,352.12",
+ style=dashed];
+ Georeference -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,278.16,354.91 e,415.34,592.47 280.34,364.69 291.71,413.89 319.61,508.58 375.51,567.66 383.88,576.52 395.15,583.35 406,588.43",
+ style=dotted];
+ Georeference -> GeoreferencerRole [pos="e,382.74,315.13 339.66,322.07 350.54,320.32 361.85,318.49 372.81,316.73"];
+ Georeference -> PinboardItem [pos="e,396.98,268.59 313.86,314.77 322.42,310.67 331.35,306.17 339.51,301.66 356.12,292.48 358.65,287.4 375.51,278.66 379.45,276.62 383.58,\
+274.62 387.77,272.69"];
+ Georeference -> Role [pos="e,415.5,203.45 319.31,316.33 326.65,312.32 333.73,307.46 339.51,301.66 366.17,274.9 348.15,250.71 375.51,224.66 383.95,216.62 395.11,\
+210.84 405.85,206.75"];
+ Georeference -> SubsequentCitation [pos="e,577.39,462.58 306.89,352.85 326.35,364.16 351.76,377.91 375.51,387.66 432.88,411.23 452.32,402.63 509.51,426.66 529.77,435.18 \
+551.2,446.94 568.65,457.31"];
+ Georeference -> VerifierRole [pos="e,400.82,153.6 320.84,316.73 327.83,312.7 334.4,307.74 339.51,301.66 378.35,255.43 335.45,215.84 375.51,170.66 380.03,165.56 385.67,\
+161.4 391.72,158.02"];
+ Georeference -> Creator [dir=back,
+ pos="s,322.23,316.92 330.56,311.05 333.92,308.27 336.96,305.16 339.51,301.66 412.58,201.3 282.24,106.6 375.51,24.662 432.44,-25.354 530.23,\
+12.925 577.84,36.589",
+ style=dashed];
+ Georeference -> ErrorGeographicItem [dir=back,
+ pos="s,283.9,354.74 288.47,363.94 305.27,396.97 335.76,448.61 375.51,480.66 379.65,484 384.26,486.99 389.07,489.63",
+ style=dashed];
+ Georeference -> GeographicItem [dir=back,
+ pos="s,295.48,354.66 302.82,361.76 322.28,380.35 349.11,404.16 375.51,421.66 383.04,426.66 391.47,431.34 399.73,435.51",
+ style=dashed];
+ Georeference -> Project [dir=back,
+ pos="s,321.72,316.98 329.97,311.31 333.54,308.47 336.79,305.27 339.51,301.66 398.67,223.28 316.74,162.34 375.51,83.662 385.03,70.909 \
+400.99,62.981 414.83,58.206",
+ style=dashed];
+ Georeference -> Updater [dir=back,
+ pos="s,321.57,316.86 329.86,311.23 333.45,308.4 336.74,305.23 339.51,301.66 390.92,235.53 314.45,174 375.51,116.66 423.21,71.867 603.45,\
+92.046 667.51,78.662 689.23,74.123 713.28,67.087 731.48,61.335",
+ style=dashed];
+ Georeference -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,278.23,354.76 e,558.78,573.03 280.58,364.67 291.83,410.09 319.09,492.43 375.51,534.66 402.21,554.66 489.45,566.29 548.48,572.06"];
+ CitationTopic -> Topic [pos="e,415.43,655.66 319.25,655.66 346.23,655.66 379.99,655.66 405.2,655.66",
+ style=dotted];
+ GeoreferencerRole -> Georeferencer [pos="e,559.3,305.66 502.45,305.66 517.67,305.66 534.01,305.66 549.09,305.66",
+ style=dotted];
+ Role -> Verifier [pos="e,577.92,175.26 469.53,193.32 496.1,188.9 537.59,181.98 567.76,176.95",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,703.15,480.66 667.54,480.66 675.87,480.66 684.48,480.66 692.93,480.66",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,577.89,166.06 484.39,150.48 509.98,154.74 542.71,160.2 567.7,164.36",
+ style=dotted];
+ Creator -> Updater [pos="e,731.44,51.662 635.21,51.662 659.24,51.662 694.28,51.662 721.2,51.662",
+ style=invis];
+ Project -> Creator [pos="e,577.9,51.662 470.26,51.662 496.87,51.662 537.93,51.662 567.83,51.662",
+ style=invis];
+}
diff --git a/data/identifiers_model_er.dot b/data/identifiers_model_er.dot
new file mode 100644
index 00000000..caf36ea4
--- /dev/null
+++ b/data/identifiers_model_er.dot
@@ -0,0 +1,164 @@
+digraph Identifier {
+ graph [bb="0,0,542,436",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Identifier [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="50.431,210",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.4008];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ Label [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#label",
+ label=Label,
+ pos="244.93,418",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="244.93,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="244.93,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="244.93,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="417.5,283",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="417.5,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Namespace [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#namespace",
+ label=Namespace,
+ pos="244.93,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1111];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="244.93,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="512,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Identifier -> Label [pos="e,217.8,417.52 55.501,232.13 63.749,270.5 86.144,349.28 136.86,391 156.67,407.3 185.02,413.93 207.58,416.56"];
+ Identifier -> PinboardItem [pos="e,199.21,360.08 60.251,232.06 72.867,260.73 98.821,310.25 136.86,337 152.07,347.69 171.12,354.16 188.91,358.07"];
+ Identifier -> Role [pos="e,217.65,306.81 71.513,231.95 87.661,248.32 111.73,270.01 136.86,283 158.96,294.42 186.17,301.2 207.62,305.11"];
+ Identifier -> VerifierRole [pos="e,203.2,246.27 98.522,221.25 127.2,228.11 163.83,236.86 193.15,243.87"];
+ Identifier -> Creator [dir=back,
+ pos="s,100.92,218.67 111.2,219.98 174.96,227.61 277.03,230.98 353,191 379.09,177.27 397.93,147.59 408.03,128.22",
+ style=dashed];
+ Identifier -> Namespace [dir=back,
+ pos="s,98.522,198.75 108.35,196.4 139.4,188.98 177.04,179.98 204.78,173.36",
+ style=dashed];
+ Identifier -> Project [dir=back,
+ pos="s,71.513,188.05 78.776,180.87 94.452,165.75 115.27,148.16 136.86,137 162.41,123.8 194.78,116.8 217.2,113.26",
+ style=dashed];
+ Identifier -> Updater [dir=back,
+ pos="s,58.859,187.75 62.59,178.34 75.294,147.69 99.295,103 136.86,83 258.13,18.42 311.26,56.128 446,83 458.11,85.414 470.78,90.126 481.68,\
+94.947",
+ style=dashed];
+ "Objects with Identifiers" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with identifier",
+ label="Objects with Identifiers",
+ pos="244.93,18",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=3.002];
+ Identifier -> "Objects with Identifiers" [dir=back,
+ pos="s,57.258,187.85 60.217,178.27 71.859,142.06 95.86,83.523 136.86,50 147.53,41.281 160.51,34.937 173.71,30.321",
+ style=dashed];
+ Role -> Verifier [pos="e,388.78,287.39 272.21,305.84 300.71,301.33 346.46,294.09 378.79,288.97",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,388.76,278.61 286.79,262.47 314.75,266.89 351.56,272.72 378.82,277.04",
+ style=dotted];
+ Creator -> Updater [pos="e,481.84,110 446,110 454.03,110 462.96,110 471.57,110",
+ style=invis];
+ Project -> Creator [pos="e,388.91,110 272.58,110 301.04,110 346.37,110 378.54,110",
+ style=invis];
+}
diff --git a/data/images_model_er.dot b/data/images_model_er.dot
new file mode 100644
index 00000000..f371aa99
--- /dev/null
+++ b/data/images_model_er.dot
@@ -0,0 +1,513 @@
+digraph Image {
+ graph [bb="0,0,818.28,1223.5",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="85.142,851",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="85.142,441",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="85.142,274",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="85.142,220",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="85.142,382",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ ProtocolRelationship [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#protocol-relationship",
+ label=ProtocolRelationship,
+ pos="85.142,166",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=2.3651];
+ Attribution [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#attribution",
+ label=Attribution,
+ pos="85.142,328",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.3902];
+ }
+ subgraph supporting {
+ Image [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="293.78,278",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.1077];
+ CharacterState [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#character-state",
+ label=CharacterState,
+ pos="293.78,1040",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3333];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="293.78,496",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ CollectionObjectObservation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#collection-object-observation",
+ label=CollectionObjectObservation,
+ pos="293.78,986",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.4306];
+ Content [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#content",
+ label=Content,
+ pos="293.78,932",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.81944];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="293.78,220",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ Label [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#label",
+ label=Label,
+ pos="293.78,878",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Loan [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan",
+ label=Loan,
+ pos="293.78,824",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Person [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#person",
+ label=Person,
+ pos="293.78,770",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="462.78,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Protocol [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#protocol",
+ label=Protocol,
+ pos="293.78,166",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.86111];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="462.78,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="605.28,435",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="760.28,435",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ TaxonDetermination [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-determination",
+ label=TaxonDetermination,
+ pos="293.78,716",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8056];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="462.78,496",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="462.78,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="605.28,45",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="605.28,180",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="462.78,180",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="760.28,180",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="605.28,375",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ SledImage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#sled-image",
+ label=SledImage,
+ pos="462.78,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0417];
+ }
+ subgraph core {
+ CollectingEvent [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collecting-event",
+ label=CollectingEvent,
+ pos="293.78,661",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="293.78,606",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Descriptor [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#descriptor",
+ label=Descriptor,
+ pos="293.78,551",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Observation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#observation",
+ label=Observation,
+ pos="293.78,1205",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="293.78,1150",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="462.78,441",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ TaxonName [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#taxon-name",
+ label=TaxonName,
+ pos="293.78,1095",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1667];
+ }
+ Depiction -> CollectingEvent [pos="e,241.34,671.91 94.546,833.3 111.19,800.11 151.54,728.32 206.28,689 213.99,683.46 222.85,678.98 231.89,675.37",
+ style=dotted];
+ Depiction -> CollectionObject [pos="e,239.26,616.43 91.145,832.88 103.52,791.42 139.48,689.04 206.28,634 213.19,628.31 221.28,623.77 229.68,620.15",
+ style=dotted];
+ Depiction -> Descriptor [pos="e,256.53,555.76 88.941,832.79 97.358,784.24 126.94,650.58 206.28,579 217.52,568.86 232.47,562.39 246.78,558.26",
+ style=dotted];
+ Depiction -> Observation [pos="e,252.26,1200.2 87.371,869.21 92.065,924.15 113.62,1089.8 206.28,1178 216.18,1187.4 229.32,1193.6 242.36,1197.6",
+ style=dotted];
+ Depiction -> Otu [pos="e,266.52,1147.6 88.9,869.26 97.214,917.92 126.56,1051.8 206.28,1123 220.09,1135.3 239.46,1142 256.37,1145.7",
+ style=dotted];
+ Depiction -> TaxonName [pos="e,251.37,1088.3 91.171,869.04 103.59,910.31 139.66,1012.2 206.28,1067 216.39,1075.3 229.01,1081.2 241.46,1085.3",
+ style=dotted];
+ Depiction -> CharacterState [pos="e,245.4,1031 94.508,868.75 111.09,902.04 151.33,973.97 206.28,1013 215.12,1019.3 225.47,1024.1 235.87,1027.9",
+ style=dotted];
+ Depiction -> CollectionObjectObservation [pos="e,225,967.98 100.72,868.09 121.76,891.74 162.9,934.31 206.28,959 209.32,960.73 212.47,962.35 215.71,963.89",
+ style=dotted];
+ Depiction -> Content [pos="e,264.05,923.97 114.38,864.85 138.48,876.39 174.21,892.84 206.28,905 221.7,910.85 239,916.43 254.04,920.99",
+ style=dotted];
+ Depiction -> Label [pos="e,266.55,874.57 128.46,856.53 166.18,861.46 220.8,868.59 256.55,873.27",
+ style=dotted];
+ Depiction -> Loan [pos="e,266.55,827.43 128.46,845.47 166.18,840.54 220.8,833.41 256.55,828.73",
+ style=dotted];
+ Depiction -> Person [pos="e,266.77,777.23 114.38,837.15 138.48,825.61 174.21,809.16 206.28,797 222.7,790.78 241.23,784.85 256.92,780.14",
+ style=dotted];
+ Depiction -> TaxonDetermination [pos="e,228.63,732.58 100.72,833.91 121.76,810.26 162.9,767.69 206.28,743 210.43,740.64 214.8,738.47 219.29,736.46",
+ style=dotted];
+ Citation -> Source [pos="e,435.56,441 124.23,441 196.79,441 353.97,441 425.28,441",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,247.72,484.01 119.34,449.84 151.29,458.34 200.16,471.35 237.89,481.39",
+ style=dotted];
+ Tag -> Keyword [pos="e,260.02,220 112.31,220 146.95,220 208.48,220 249.94,220",
+ style=dotted];
+ ProtocolRelationship -> Protocol [pos="e,262.5,166 170.49,166 198.75,166 228.97,166 252.3,166",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,544.23,437.56 489.88,439.89 502.45,439.35 518.18,438.68 533.92,438",
+ style=invis];
+ Source -> OriginCitation [pos="e,565.86,393.05 489.88,428.74 508.56,419.97 534.24,407.9 556.54,397.43",
+ style=invis];
+ Image -> Depiction [pos="e,91.014,832.84 281.64,300.27 264.23,335.52 230.13,406.6 206.28,469 156.57,599.11 111.09,759.53 93.659,823.14"];
+ Image -> Citation [pos="e,119.38,432.22 277.34,299.92 256.16,328.57 215.53,378.63 170.28,409 157.86,417.34 142.96,423.92 129.17,428.89"];
+ Image -> Identifier [pos="e,128.21,274.81 253.92,277.25 221.31,276.62 174.42,275.71 138.5,275.01"];
+ Image -> Tag [pos="e,110.25,226.77 255.21,267.45 216.68,256.64 157.27,239.96 120.11,229.53"];
+ Image -> Note [pos="e,111.43,375.67 268.95,295.52 244.98,312.52 206.49,338.14 170.28,355 154.66,362.28 136.53,368.37 121.12,372.91"];
+ Image -> ProtocolRelationship [pos="e,144.35,178.97 253.96,269.8 238.03,265.05 220.11,257.81 206.28,247 183.56,229.24 193.31,210.38 170.28,193 165.22,189.18 159.6,185.89 \
+153.73,183.05"];
+ Image -> Attribution [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,253.98,287.39 e,127.46,318 243.93,289.82 211.82,297.59 169.88,307.74 137.32,315.62"];
+ Image -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,312.42,298.9 e,435.76,422.9 319.04,306.54 342.84,333.85 380.79,375.56 417.28,408 420.61,410.96 424.19,413.92 427.81,416.79",
+ style=dotted];
+ Image -> PinboardItem [pos="e,426.46,144.26 333.54,271.59 350.04,267.13 368.4,259.61 381.28,247 413.26,215.71 388.62,187.34 417.28,153 417.78,152.4 418.3,151.81 \
+418.83,151.23"];
+ Image -> Role [pos="e,435.72,28.873 333.83,272.9 350.79,268.69 369.45,261.01 381.28,247 440.14,177.34 365.73,120.22 417.28,45 420.02,41.017 423.54,37.52 \
+427.42,34.481"];
+ Image -> SubsequentCitation [pos="e,554.37,416.96 318.88,295.37 343.04,312.34 381.67,338.28 417.28,357 458.59,378.71 507.29,398.86 544.64,413.25"];
+ Image -> VerifierRole [pos="e,425.61,90.281 333.88,272.45 350.64,268.15 369.12,260.52 381.28,247 426.56,196.67 377.29,153.62 417.28,99 417.65,98.499 418.03,\
+98.005 418.42,97.519"];
+ Image -> Creator [dir=back,
+ pos="s,330.89,266.57 340.5,263.53 405.64,242.9 523.19,205.68 576.57,188.77",
+ style=dashed];
+ Image -> Project [dir=back,
+ pos="s,333.86,267.9 343.49,264.63 356.3,260.04 369.74,254.2 381.28,247 400.22,235.19 400.18,226.33 417.28,212 422.83,207.36 429,202.65 \
+434.94,198.33",
+ style=dashed];
+ Image -> Updater [dir=back,
+ pos="s,332.25,288.8 342.02,291.16 385.64,301.31 451.99,311.67 508.28,299 595.09,279.46 687.15,226.28 731.8,198.09",
+ style=dashed];
+ Image -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,324.37,292.94 e,557.5,366.79 333.4,297.28 357.15,308.56 388.47,322.43 417.28,332 460.05,346.2 509.84,357.4 547.29,364.81"];
+ Image -> SledImage [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,333.94,276.59 e,425.16,273.32 343.98,276.23 366.42,275.43 392.86,274.48 415,273.68"];
+ CitationTopic -> Topic [pos="e,435.32,496 339.98,496 366.69,496 400.07,496 425.13,496",
+ style=dotted];
+ Role -> Verifier [pos="e,576.4,39.642 489.88,23.015 511.41,27.152 542.24,33.076 566.47,37.733",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,701.93,435 666.32,435 674.65,435 683.25,435 691.71,435",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,576.64,50.313 504.42,64.19 524.07,60.415 547.5,55.912 566.73,52.218",
+ style=dotted];
+ Creator -> Updater [pos="e,730.22,180 633.99,180 658.02,180 693.06,180 719.98,180",
+ style=invis];
+ Project -> Creator [pos="e,576.67,180 490.54,180 512.04,180 542.5,180 566.49,180",
+ style=invis];
+}
diff --git a/data/import_datasets_model_er.dot b/data/import_datasets_model_er.dot
new file mode 100644
index 00000000..64d61a35
--- /dev/null
+++ b/data/import_datasets_model_er.dot
@@ -0,0 +1,174 @@
+digraph ImportDataset {
+ graph [bb="0,0,594.66,484.91",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ ImportDataset [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#import-dataset",
+ label=ImportDataset,
+ pos="70.832,235.91",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.9675];
+ DatasetRecordField [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#dataset-record-field",
+ label=DatasetRecordField,
+ pos="239.66,466.91",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.7222];
+ DatasetRecord [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#dataset-record",
+ label=DatasetRecord,
+ pos="239.66,412.91",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3333];
+ OriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-relationship",
+ label=OriginRelationship,
+ pos="239.66,358.91",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="239.66,304.91",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ RelatedOriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-origin-relationship",
+ label=RelatedOriginRelationship,
+ pos="418.16,358.91",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2361];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="239.66,212.91",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="239.66,158.91",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="418.16,185.91",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="418.16,66.906",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="239.66,66.906",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="564.66,66.906",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ ImportDataset -> DatasetRecordField [pos="e,189.48,448.83 77.902,257.94 90.224,298.92 121.85,387.44 177.66,439.91 178.77,440.95 179.93,441.95 181.12,442.92"];
+ ImportDataset -> DatasetRecord [pos="e,191.5,395.2 82.544,258.1 98.997,290.16 133.29,349.54 177.66,385.91 179.24,387.2 180.89,388.44 182.6,389.64"];
+ ImportDataset -> OriginRelationship [pos="e,193.49,340.89 92.041,257.94 112.2,278.98 144.81,310.53 177.66,331.91 179.83,333.32 182.08,334.68 184.39,336.01"];
+ ImportDataset -> PinboardItem [pos="e,194.98,286.84 114.8,253.68 136.34,262.58 162.63,273.46 185.44,282.89"];
+ ImportDataset -> RelatedOriginRelationship [pos="e,397.09,340.7 141.67,240.82 188.41,245.98 250.49,256.5 301.66,277.91 334.46,291.63 367.21,315.83 389.41,334.22"];
+ ImportDataset -> Role [pos="e,212.34,216.53 141.62,226.29 162.52,223.4 184.59,220.36 202.39,217.91"];
+ ImportDataset -> VerifierRole [pos="e,197.91,176.78 111.18,217.04 131.05,207.57 155.58,196.01 177.66,185.91 181.23,184.27 184.93,182.6 188.65,180.92"];
+ ImportDataset -> Creator [dir=back,
+ pos="s,88.467,213.84 94.949,205.93 114.55,182.5 144.68,150.83 177.66,131.91 196.26,121.24 330.66,87.879 389.6,73.552",
+ style=dashed];
+ ImportDataset -> Project [dir=back,
+ pos="s,84.658,213.84 90.116,205.06 109.08,175.06 141.04,129.63 177.66,98.906 187.83,90.374 200.65,83.224 211.91,77.863",
+ style=dashed];
+ ImportDataset -> Updater [dir=back,
+ pos="s,76.11,213.75 78.473,203.75 89.853,157.96 117.89,75.562 177.66,39.906 300.19,-33.181 358.75,12.003 498.66,39.906 510.77,42.32 523.44,\
+47.032 534.34,51.853",
+ style=dashed];
+ OriginRelationship -> RelatedOriginRelationship [pos="e,337.36,358.91 299.93,358.91 308.75,358.91 318.01,358.91 327.3,358.91",
+ style=invis];
+ Role -> Verifier [pos="e,389.56,190.13 266.71,208.92 296.51,204.36 345.59,196.86 379.54,191.66",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,389.63,181.69 281.6,165.17 311.17,169.69 350.79,175.75 379.56,180.15",
+ style=dotted];
+ Creator -> Updater [pos="e,534.51,66.906 446.68,66.906 468.68,66.906 499.8,66.906 524.41,66.906",
+ style=invis];
+ Project -> Creator [pos="e,389.52,66.906 267.47,66.906 297.23,66.906 345.5,66.906 379.15,66.906",
+ style=invis];
+}
diff --git a/data/labels_model_er.dot b/data/labels_model_er.dot
new file mode 100644
index 00000000..7790e6bd
--- /dev/null
+++ b/data/labels_model_er.dot
@@ -0,0 +1,203 @@
+digraph Label {
+ graph [bb="0,0,613.74,328",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="45.496,212",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="45.496,100",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="45.496,156",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ Label [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#label",
+ label=Label,
+ pos="164.06,156",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.0296];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="164.06,214",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="164.06,98",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="330.93,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="330.93,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="330.93,202",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="489.24,229",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="489.24,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="330.93,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="583.74,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Depiction -> Image [pos="e,136.83,213.55 91.228,212.77 102.9,212.97 115.35,213.18 126.54,213.37",
+ style=dotted];
+ Tag -> Keyword [pos="e,130.31,98.562 72.654,99.551 86.64,99.311 104.21,99.01 120.14,98.736",
+ style=dotted];
+ Label -> Depiction [pos="e,75.01,198.3 134.03,169.95 118.96,177.19 100.37,186.12 84.203,193.88"];
+ Label -> Tag [pos="e,67.875,110.27 133.91,142 116.61,133.68 94.685,123.15 77.125,114.72"];
+ Label -> Note [pos="e,73.53,156 126.89,156 113.16,156 97.508,156 83.683,156"];
+ Label -> PinboardItem [pos="e,285.12,305.51 188.52,173.13 193.13,177.29 197.62,181.99 201.12,187 227.22,224.36 203.7,252.02 237.12,283 247.62,292.73 261.42,\
+298.98 275.17,302.98"];
+ Label -> Role [pos="e,303.84,252.54 186.9,173.84 191.71,178.02 196.69,182.56 201.12,187 218.49,204.4 216.46,215.68 237.12,229 254.18,240 275.83,246.63 \
+293.93,250.57"];
+ Label -> VerifierRole [pos="e,289.2,190.64 201.24,166.09 224.17,172.49 254.16,180.86 279.42,187.91"];
+ Label -> Creator [dir=back,
+ pos="s,201.34,157.06 211.35,157.15 263.84,157.42 351.63,154.7 424.74,137 436.85,134.07 449.6,129.06 460.47,124.15",
+ style=dashed];
+ Label -> Project [dir=back,
+ pos="s,201.24,145.91 210.99,143.18 240.73,134.89 278.41,124.37 303.3,117.43",
+ style=dashed];
+ Label -> Updater [dir=back,
+ pos="s,186.9,138.16 194.6,131.26 196.84,129.18 199.04,127.08 201.12,125 218.49,107.6 214.78,93.273 237.12,83 350.43,30.884 395.43,58.607 \
+517.74,83 529.85,85.414 542.52,90.126 553.42,94.947",
+ style=dashed];
+ "Objects with Labels" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with label",
+ label="Objects with Labels",
+ pos="330.93,18",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=2.6059];
+ Label -> "Objects with Labels" [dir=back,
+ pos="s,188.19,138.63 195.41,131.65 197.45,129.5 199.38,127.27 201.12,125 223.62,95.658 209.51,74.592 237.12,50 246.54,41.611 258.27,35.398 \
+270.18,30.804",
+ style=dashed];
+ Role -> Verifier [pos="e,460.68,233.76 358.09,251.48 383.41,247.11 422.03,240.44 450.64,235.5",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,460.59,224.22 372.59,209.02 396.7,213.19 427.06,218.43 450.61,222.5",
+ style=dotted];
+ Creator -> Updater [pos="e,553.58,110 517.75,110 525.77,110 534.7,110 543.32,110",
+ style=invis];
+ Project -> Creator [pos="e,460.54,110 358.45,110 383.63,110 421.75,110 450.17,110",
+ style=invis];
+}
diff --git a/data/languages_model_er.dot b/data/languages_model_er.dot
new file mode 100644
index 00000000..7288d1f4
--- /dev/null
+++ b/data/languages_model_er.dot
@@ -0,0 +1,143 @@
+digraph Language {
+ graph [bb="0,0,397.49,388.07",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="221.99,369.57",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ Language [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#language",
+ label=Language,
+ pos="53.244,179.57",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.479];
+ AlternateValueTranslation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-translation",
+ label=AlternateValueTranslation,
+ pos="221.99,314.57",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2083];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="221.99,260.57",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="221.99,206.57",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Serial [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#serial",
+ label=Serial,
+ pos="221.99,152.57",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="221.99,98.574",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="367.49,152.57",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="221.99,44.574",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="367.49,44.574",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Language -> Source [pos="e,194.91,365.23 60.629,201.72 71.706,236.35 97.696,303.28 142.49,341.57 154.55,351.89 170.69,358.5 185.2,362.7"];
+ Language -> AlternateValueTranslation [pos="e,157.74,296.38 67.067,201.71 82.196,226.01 109.51,264.6 142.49,287.57 144.41,288.91 146.4,290.19 148.45,291.41"];
+ Language -> PinboardItem [pos="e,176.31,247.09 82.374,198.97 99.285,210.07 121.53,223.7 142.49,233.57 150.17,237.19 158.48,240.58 166.72,243.64"];
+ Language -> Role [pos="e,194.97,202.36 106.55,188.04 132.06,192.17 162.09,197.04 184.99,200.75"];
+ Language -> Serial [pos="e,194.97,156.79 106.55,171.11 132.06,166.97 162.09,162.11 184.99,158.4"];
+ Language -> VerifierRole [pos="e,180.39,110.66 82.374,160.18 99.285,149.08 121.53,135.45 142.49,125.57 151.49,121.34 161.33,117.42 170.92,113.96"];
+ Language -> Creator [dir=back,
+ pos="s,67.067,157.43 72.46,148.99 88.239,124.89 113.12,92.037 142.49,71.574 157.74,60.947 177.56,54.174 193.46,50.069",
+ style=dashed];
+ Language -> Updater [dir=back,
+ pos="s,58.728,157.57 61.193,147.86 71.541,109.25 95.095,45.727 142.49,17.574 204.12,-19.034 292.1,10.493 337.27,30.309",
+ style=dashed];
+ Role -> Verifier [pos="e,338.81,164.52 249.3,197.98 264.62,192.87 284.24,186.12 301.49,179.57 310.65,176.1 320.44,172.16 329.58,168.37",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,338.81,140.63 263.5,111.97 275.76,116.17 289.23,120.92 301.49,125.57 310.65,129.05 320.44,132.99 329.58,136.77",
+ style=dotted];
+ Creator -> Updater [pos="e,337.43,44.574 250.66,44.574 272.37,44.574 302.87,44.574 327.12,44.574",
+ style=invis];
+}
diff --git a/data/loan_items_model_er.dot b/data/loan_items_model_er.dot
new file mode 100644
index 00000000..294651aa
--- /dev/null
+++ b/data/loan_items_model_er.dot
@@ -0,0 +1,202 @@
+digraph LoanItem {
+ graph [bb="0,0,712.43,382",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,240",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="59.145,130",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="59.145,186",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ LoanItem [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#loan-item",
+ label=LoanItem,
+ pos="207.53,187",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.479];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="207.53,129",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="410.1,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="410.1,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="410.1,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="587.93,283",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="587.93,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Loan [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan",
+ label=Loan,
+ pos="410.1,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="410.1,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="682.43,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Tag -> Keyword [pos="e,173.93,129.22 86.316,129.82 107.86,129.67 138.82,129.46 163.92,129.29",
+ style=dotted];
+ LoanItem -> DataAttribute [pos="e,97.844,226.35 165.88,201.72 147.75,208.28 126.27,216.06 107.43,222.88"];
+ LoanItem -> Tag [pos="e,83.018,138.91 167.3,171.73 143.94,162.63 114.65,151.22 92.594,142.63"];
+ LoanItem -> Note [pos="e,87.336,186.19 154,186.64 135.32,186.51 114.68,186.37 97.519,186.26"];
+ LoanItem -> PinboardItem [pos="e,364.33,361.4 215.31,209.15 226.63,242.26 252.59,304.27 296.78,337 313.32,349.25 334.64,356.02 354.26,359.73"];
+ LoanItem -> Role [pos="e,382.96,308.07 222.99,209.21 238.56,231.32 265.36,264.52 296.78,283 320.02,296.67 349.82,303.43 372.88,306.76"];
+ LoanItem -> VerifierRole [pos="e,368.45,245.68 244.65,203.29 260.48,210.13 279.38,217.9 296.78,224 316.74,231 339.08,237.61 358.55,242.98"];
+ LoanItem -> Creator [dir=back,
+ pos="s,254.32,199.81 264.46,202.15 330.09,216.79 440.48,231.37 523.43,191 550.1,178.02 568.88,147.81 578.79,128.18",
+ style=dashed];
+ LoanItem -> Loan [dir=back,
+ pos="s,260.97,180.99 271.34,179.8 308.98,175.48 354.84,170.22 383,166.99",
+ style=dashed];
+ LoanItem -> Project [dir=back,
+ pos="s,239.63,168.82 248.42,163.73 269.26,151.69 291.51,139.08 296.78,137 325.14,125.81 359.42,118.39 382.59,114.21",
+ style=dashed];
+ LoanItem -> Updater [dir=back,
+ pos="s,243.25,170.27 251.67,164.3 254.95,161.73 258.04,158.96 260.78,156 285.35,129.45 266.06,102.1 296.78,83 357.1,45.49 546.77,69.107 \
+616.43,83 628.53,85.414 641.2,90.126 652.11,94.947",
+ style=dashed];
+ "Objects with Loan items" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with loan item",
+ label="Objects with Loan items",
+ pos="410.1,18",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=3.1479];
+ LoanItem -> "Objects with Loan items" [dir=back,
+ pos="s,244.37,170.41 252.64,164.23 255.62,161.7 258.38,158.96 260.78,156 292.12,117.35 260.73,84.293 296.78,50 306.62,40.636 319.01,33.982 \
+331.93,29.26",
+ style=dashed];
+ Role -> Verifier [pos="e,559.26,287.25 437.42,305.96 467.12,301.4 515.64,293.95 549.32,288.77",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,559.24,278.75 451.88,262.26 481.25,266.77 520.57,272.81 549.21,277.21",
+ style=dotted];
+ Creator -> Updater [pos="e,652.26,110 616.43,110 624.46,110 633.39,110 642,110",
+ style=invis];
+ Project -> Creator [pos="e,559.39,110 437.81,110 467.45,110 515.54,110 549.06,110",
+ style=invis];
+}
diff --git a/data/loans_model_er.dot b/data/loans_model_er.dot
new file mode 100644
index 00000000..46468ddd
--- /dev/null
+++ b/data/loans_model_er.dot
@@ -0,0 +1,328 @@
+digraph Loan {
+ graph [bb="0,0,623.2,520.67",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,336.67",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="59.145,174.67",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="59.145,282.67",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="59.145,120.67",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="59.145,228.67",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ Loan [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#loan",
+ label=Loan,
+ pos="189.24,232.67",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=0.97094];
+ Documentation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#documentation",
+ label=Documentation,
+ pos="324.2,502.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4028];
+ Document [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#document",
+ label=Document,
+ pos="475.7,502.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="189.24,174.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="189.24,120.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ LoanItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan-item",
+ label=LoanItem,
+ pos="324.2,448.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ LoanRecipientRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan-recipient-role",
+ label=LoanRecipientRole,
+ pos="324.2,394.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ LoanRecipient [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan-recipient",
+ label=LoanRecipient,
+ pos="475.7,394.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3333];
+ LoanSupervisorRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan-supervisor-role",
+ label=LoanSupervisorRole,
+ pos="324.2,340.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.7778];
+ LoanSupervisor [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan-supervisor",
+ label=LoanSupervisor,
+ pos="475.7,340.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4306];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="324.2,286.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Person [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#person",
+ label=Person,
+ pos="475.7,286.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="475.7,178.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="324.2,232.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="475.7,232.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="324.2,178.67",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="475.7,48.666",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="324.2,48.666",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="593.2,48.666",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Depiction -> Image [pos="e,161.95,174.67 104.95,174.67 120.27,174.67 137.22,174.67 151.81,174.67",
+ style=dotted];
+ Tag -> Keyword [pos="e,155.67,120.67 86.376,120.67 103.38,120.67 125.92,120.67 145.47,120.67",
+ style=dotted];
+ Loan -> DataAttribute [pos="e,96.462,322.53 173.16,253.42 160.11,270.26 139.97,293.72 118.29,309.67 114.35,312.56 110.05,315.26 105.63,317.74"];
+ Loan -> Depiction [pos="e,89.855,188.12 159.58,219.69 141.74,211.61 118.57,201.12 99.085,192.3"];
+ Loan -> Identifier [pos="e,91.154,270.56 157.52,244.66 140.42,251.33 118.92,259.72 100.48,266.92"];
+ Loan -> Tag [pos="e,83.925,128.29 167.35,215.07 162.84,210.87 158.24,206.27 154.29,201.67 135.5,179.78 140.19,166.44 118.29,147.67 110.97,141.39 101.94,\
+136.27 93.201,132.24"];
+ Loan -> Note [pos="e,87.311,229.51 154.26,231.6 136.76,231.06 115.39,230.39 97.432,229.83"];
+ Loan -> Documentation [pos="e,273.5,486.64 190.54,254.75 192.34,301.32 202.82,410.66 260.2,475.67 261.73,477.41 263.4,479.04 265.17,480.57"];
+ Loan -> LoanItem [pos="e,289.03,439.78 192.75,254.88 198.22,293.57 214.63,373.74 260.2,421.67 265.67,427.43 272.58,432.02 279.8,435.66"];
+ Loan -> LoanRecipientRole [pos="e,272.09,376.55 196.5,254.71 205.86,284.09 226.17,336.04 260.2,367.67 261.31,368.7 262.48,369.71 263.68,370.67"];
+ Loan -> LoanSupervisorRole [pos="e,274.81,322.67 204.47,254.01 217.28,271.89 237.55,297.1 260.2,313.67 262.03,315.01 263.94,316.3 265.91,317.54"];
+ Loan -> Role [pos="e,297.18,276.1 220.41,244.92 240.39,253.03 266.67,263.71 287.66,272.23"];
+ Loan -> PinboardItem [pos="e,434.77,160.63 211.01,214.96 215.53,210.77 220.16,206.2 224.2,201.67 242.41,181.21 235.83,164.15 260.2,151.67 312.02,125.12 379.79,\
+140.66 425.16,157.03"];
+ Loan -> VerifierRole [pos="e,282.45,232.67 224.48,232.67 239,232.67 256.22,232.67 272.18,232.67"];
+ Loan -> Version [pos="e,294.97,190.13 220.41,220.41 239.73,212.57 264.94,202.33 285.56,193.95"];
+ Loan -> Creator [dir=back,
+ pos="s,212.57,216.07 219.66,208.35 221.35,206.21 222.89,203.98 224.2,201.67 264.32,130.63 197.1,73.39 260.2,21.666 314.04,-22.475 402.48,\
+11.53 447.1,33.608",
+ style=dashed];
+ Loan -> Project [dir=back,
+ pos="s,212.22,215.86 219.43,208.21 221.17,206.1 222.79,203.91 224.2,201.67 254,154.13 224.27,123.76 260.2,80.666 269.55,69.454 283.82,\
+61.751 296.41,56.717",
+ style=dashed];
+ Loan -> Updater [dir=back,
+ pos="s,211.51,215.37 218.95,207.88 220.81,205.85 222.58,203.77 224.2,201.67 245.29,174.25 232.66,153.6 260.2,132.67 356.79,59.221 411.35,\
+111.76 527.2,75.666 539.21,71.922 552.08,66.82 563.17,62.059",
+ style=dashed];
+ Documentation -> Document [pos="e,438.37,502.67 374.98,502.67 392.14,502.67 411.29,502.67 428.18,502.67",
+ style=dotted];
+ LoanRecipientRole -> LoanRecipient [pos="e,427.43,394.67 385.57,394.67 396.03,394.67 406.87,394.67 417.24,394.67",
+ style=dotted];
+ LoanSupervisorRole -> LoanSupervisor [pos="e,423.88,340.67 388.6,340.67 396.97,340.67 405.54,340.67 413.87,340.67",
+ style=dotted];
+ Role -> Person [pos="e,448.45,286.67 351.24,286.67 375.31,286.67 411.33,286.67 438.26,286.67",
+ style=dotted];
+ Role -> Verifier [pos="e,447.18,242.6 351.24,277.26 375.15,268.62 410.86,255.73 437.72,246.02",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,447.12,232.67 366.05,232.67 388.19,232.67 415.36,232.67 437,232.67",
+ style=dotted];
+ Version -> PinboardItem [pos="e,429.95,178.67 353.32,178.67 372.02,178.67 397.21,178.67 419.79,178.67",
+ style=invis];
+ Creator -> Updater [pos="e,563.15,48.666 504.36,48.666 518.92,48.666 537.03,48.666 553.01,48.666",
+ style=invis];
+ Project -> Creator [pos="e,447.19,48.666 351.92,48.666 375.65,48.666 410.57,48.666 437.11,48.666",
+ style=invis];
+}
diff --git a/data/namespaces_model_er.dot b/data/namespaces_model_er.dot
new file mode 100644
index 00000000..c31e6f82
--- /dev/null
+++ b/data/namespaces_model_er.dot
@@ -0,0 +1,133 @@
+digraph Namespace {
+ graph [bb="0,0,488.35,234.5",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,117.37",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ Namespace [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#namespace",
+ label=Namespace,
+ pos="182.07,117.37",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.6744];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="442.85,198.37",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="319.85,144.37",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="319.85,90.373",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="442.85,117.37",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="319.85,198.37",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="319.85,36.373",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="442.85,36.373",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Namespace -> Identifier [pos="e,85.799,117.37 122,117.37 113.34,117.37 104.47,117.37 95.961,117.37"];
+ Namespace -> PinboardItem [pos="e,403.9,216.5 194.99,139.83 210.3,166 239.61,207.89 278.35,225.37 315.11,241.96 360.63,232.29 394.3,220.14"];
+ Namespace -> Role [pos="e,292.6,139.15 239.87,128.67 254.32,131.54 269.46,134.55 282.57,137.16"];
+ Namespace -> VerifierRole [pos="e,277.97,98.502 239.87,106.08 249.16,104.23 258.74,102.33 267.88,100.51"];
+ Namespace -> Version [pos="e,290.59,181.51 215.25,136.57 235.29,148.52 261.12,163.94 281.98,176.38"];
+ Namespace -> Creator [dir=back,
+ pos="s,215.25,98.178 223.93,92.997 245.62,80.059 271.71,64.498 291.04,52.965",
+ style=dashed];
+ Namespace -> Updater [dir=back,
+ pos="s,194.99,94.918 200.3,86.16 216.59,60.183 243.69,25.015 278.35,9.3735 322.41,-10.509 379.05,7.3322 412.79,21.947",
+ style=dashed];
+ Role -> Verifier [pos="e,413.96,123.6 347.11,138.51 363.76,134.8 385.58,129.93 404.08,125.8",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,414.11,111.18 361.48,99.439 375.27,102.52 390.6,105.94 404.15,108.96",
+ style=dotted];
+ Version -> PinboardItem [pos="e,396.88,198.37 348.92,198.37 360.15,198.37 373.51,198.37 386.54,198.37",
+ style=invis];
+ Creator -> Updater [pos="e,412.53,36.373 348.61,36.373 364.44,36.373 384.55,36.373 402.04,36.373",
+ style=invis];
+}
diff --git a/data/notes_model_er.dot b/data/notes_model_er.dot
new file mode 100644
index 00000000..e3dafa1e
--- /dev/null
+++ b/data/notes_model_er.dot
@@ -0,0 +1,163 @@
+digraph Note {
+ graph [bb="0,0,475.12,382",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Note [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="34.25,187",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=0.95139];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="34.25,85",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="195.31,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="195.31,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="195.31,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="195.31,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="350.62,283",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="350.62,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="195.31,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="445.12,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Note -> Tag [pos="e,34.25,103.33 34.25,164.77 34.25,147.65 34.25,130.53 34.25,113.41"];
+ Note -> PinboardItem [pos="e,149.52,358.27 39.445,209.04 46.815,241.73 65.196,302.86 104.5,337 114.49,345.68 127.19,351.57 139.87,355.56"];
+ Note -> Role [pos="e,167.95,306.69 45.863,209.33 57.364,231.19 77.72,263.92 104.5,283 120.24,294.21 140.69,300.83 158.1,304.71"];
+ Note -> VerifierRole [pos="e,153.57,242.92 60.452,201.63 73.39,208.84 89.541,217.38 104.5,224 117.05,229.55 130.88,234.86 143.85,239.5"];
+ Note -> Creator [dir=back,
+ pos="s,68.543,192.04 78.761,193.32 129.21,199.35 214.59,205.58 286.12,191 298.33,188.51 311.1,183.59 321.95,178.62",
+ style=dashed];
+ Note -> Project [dir=back,
+ pos="s,68.594,182.18 78.676,180.72 107.1,176.61 143.33,171.37 167.59,167.86",
+ style=dashed];
+ Note -> Updater [dir=back,
+ pos="s,53.984,168.43 61.822,161.79 73.875,152.05 88.909,142.04 104.5,137 220.64,99.456 259.42,113.13 379.12,137 391.22,139.41 403.89,\
+144.13 414.8,148.95",
+ style=dashed];
+ "Objects with Notes" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with note",
+ label="Objects with Notes",
+ pos="195.31,72",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=2.5225];
+ Note -> "Objects with Notes" [dir=back,
+ pos="s,48.666,165.11 54.341,156.86 66.774,139.34 84.392,118.02 104.5,104 115.09,96.616 127.57,90.761 139.79,86.188",
+ style=dashed];
+ Tag -> Keyword [pos="e,161.66,25.858 54.03,72.554 67.619,63.951 86.658,52.711 104.5,45 119.58,38.483 136.72,32.909 151.96,28.547",
+ style=dotted];
+ Role -> Verifier [pos="e,321.93,287.88 222.32,305.42 246.86,301.1 283.94,294.57 311.76,289.67",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,321.84,278.11 236.99,263.16 260.22,267.26 289.16,272.35 311.88,276.35",
+ style=dotted];
+ Creator -> Updater [pos="e,414.95,164 379.12,164 387.15,164 396.08,164 404.69,164",
+ style=invis];
+ Project -> Creator [pos="e,321.93,164 223.01,164 247.58,164 284.28,164 311.85,164",
+ style=invis];
+}
diff --git a/data/observation_matrices_model_er.dot b/data/observation_matrices_model_er.dot
new file mode 100644
index 00000000..b5cd7d39
--- /dev/null
+++ b/data/observation_matrices_model_er.dot
@@ -0,0 +1,382 @@
+digraph ObservationMatrix {
+ graph [bb="0,0,1074.1,662.5",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="59.145,589.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,430.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="59.145,376.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="59.145,268.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="59.145,322.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="882.13,73.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Descriptor [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#descriptor",
+ label=Descriptor,
+ pos="1037.1,128.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="882.13,18.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="452.63,589.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ ObservationMatrix [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#observation-matrix",
+ label=ObservationMatrix,
+ pos="242.71,351.5",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.4561];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="242.71,644.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ObservationMatrixRow [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-row",
+ label=ObservationMatrixRow,
+ pos="669.13,128.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0278];
+ ObservationMatrixColumn [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-column",
+ label=ObservationMatrixColumn,
+ pos="882.13,128.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2778];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="242.71,268.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ ObservationMatrixColumnItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-column-item",
+ label=ObservationMatrixColumnItem,
+ pos="669.13,182.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.6389];
+ ObservationMatrixRowItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-row-item",
+ label=ObservationMatrixRowItem,
+ pos="452.63,144.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.375];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="452.63,90.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="452.63,274.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="669.13,512.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="882.13,512.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="452.63,644.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="452.63,328.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="669.13,301.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="669.13,420.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="452.63,420.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="882.13,420.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="669.13,581.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,425.54,589.5 98.395,589.5 173.95,589.5 341.39,589.5 415.33,589.5",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,196.71,630.87 92.187,599.21 118.37,607.14 155.97,618.53 186.92,627.9",
+ style=dotted];
+ Tag -> Keyword [pos="e,208.98,268.5 86.158,268.5 115.48,268.5 163.62,268.5 198.59,268.5",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,617.87,530.54 479.93,580.06 511.69,568.66 566.09,549.13 608.26,533.99",
+ style=invis];
+ Source -> OriginCitation [pos="e,621.22,583.25 479.93,588.52 512.38,587.31 568.47,585.22 611,583.63",
+ style=invis];
+ ObservationMatrix -> Citation [pos="e,73.202,572.38 224.91,373.52 191.12,417.82 115.11,517.45 79.385,564.28"];
+ ObservationMatrix -> DataAttribute [pos="e,93.87,415.83 196.18,371.31 167.76,383.68 131.38,399.51 103.39,411.68"];
+ ObservationMatrix -> Identifier [pos="e,100.44,370.95 158.01,363.02 141.73,365.27 125.14,367.55 110.36,369.59"];
+ ObservationMatrix -> Tag [pos="e,82.046,278.51 197.9,331.47 165.01,316.44 120.77,296.21 91.399,282.79"];
+ ObservationMatrix -> Note [pos="e,86.546,326.72 163,338.93 139.88,335.24 115.7,331.37 96.597,328.32"];
+ ObservationMatrix -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,251.44,373.57 e,425.3,583.97 255.07,383 272.61,427.47 310.29,508.57 367.13,556.5 380.99,568.19 399.47,576.04 415.61,581.14",
+ style=dotted];
+ ObservationMatrix -> ObservationMatrixRow [pos="e,642.45,110.26 289.66,331.81 305.17,322.92 321.09,310.9 331.13,295.5 388.09,208.08 287.89,131.39 367.13,63.5 444.32,-2.6415 572.91,\
+65.333 633.95,104.68"];
+ ObservationMatrix -> ObservationMatrixColumn [pos="e,861.8,146.62 283.28,330.27 299.08,320.78 316.87,308.75 331.13,295.5 350.67,277.35 343.87,260.55 367.13,247.5 444.42,204.13 680.89,\
+239.93 764.13,209.5 798.23,197.03 831.73,172.19 854.09,153.28"];
+ ObservationMatrix -> ObservationMatrixColumnItem [pos="e,573.94,182.45 286.2,331.02 301.87,321.86 318.8,309.86 331.13,295.5 356.8,265.61 335.28,237.69 367.13,214.5 397.76,192.2 489.41,\
+184.87 563.6,182.72"];
+ ObservationMatrix -> ObservationMatrixRowItem [pos="e,385.1,162.65 287.61,331.53 303.27,322.5 319.82,310.45 331.13,295.5 364.45,251.43 329.41,216.88 367.13,176.5 370.02,173.4 373.24,\
+170.61 376.69,168.08"];
+ ObservationMatrix -> PinboardItem [pos="e,406.74,95.696 289.28,331.56 304.75,322.64 320.74,310.67 331.13,295.5 376.72,228.9 313.27,177.62 367.13,117.5 375,108.72 385.72,\
+102.77 396.88,98.754"];
+ ObservationMatrix -> Role [pos="e,425.57,282.27 289.69,331.91 312.77,322.32 341.26,310.86 367.13,301.5 382.9,295.8 400.54,290.06 415.6,285.35"];
+ ObservationMatrix -> SubsequentCitation [pos="e,607.88,514.49 259.67,373.6 280.86,401.07 321,447.08 367.13,469.5 440.21,505.02 534.23,513.37 597.59,514.38"];
+ ObservationMatrix -> VerifierRole [pos="e,410.86,333.01 331.28,341.81 355.03,339.19 379.95,336.43 400.91,334.11"];
+ ObservationMatrix -> Creator [dir=back,
+ pos="s,263.35,373.76 270.37,380.97 293.39,404.05 328.9,434.38 367.13,447.5 463.16,480.45 585.98,448.16 640.24,430.43",
+ style=dashed];
+ ObservationMatrix -> Project [dir=back,
+ pos="s,297.52,369.36 307.09,372.53 346.61,385.65 395.41,401.84 424.99,411.66",
+ style=dashed];
+ ObservationMatrix -> Updater [dir=back,
+ pos="s,331.18,354.65 341.44,355.12 446.4,360 617.84,370.84 764.13,393.5 794.41,398.19 828.49,406.4 852.03,412.53",
+ style=dashed];
+ ObservationMatrix -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,255.43,373.77 e,621.5,573.3 260.51,382.61 281.03,417.61 319.03,473.59 367.13,504.5 407.27,530.3 535.7,557.22 611.21,571.38"];
+ CitationTopic -> Topic [pos="e,425.6,644.5 288.82,644.5 326.71,644.5 380.13,644.5 415.31,644.5",
+ style=dotted];
+ ObservationMatrixRow -> CollectionObject [pos="e,827.61,87.449 739.22,110.49 764.46,103.91 792.88,96.503 817.62,90.055",
+ style=dotted];
+ ObservationMatrixRow -> Otu [pos="e,854.96,25.439 694.47,110.36 719.83,92.101 761.21,64.057 800.13,45.5 814.34,38.723 830.7,32.921 844.98,28.452",
+ style=dotted];
+ ObservationMatrixRow -> ObservationMatrixColumn [pos="e,800.01,128.5 742.15,128.5 757.43,128.5 773.75,128.5 789.64,128.5",
+ style=invis];
+ ObservationMatrixColumn -> Descriptor [pos="e,999.97,128.5 964.56,128.5 973.19,128.5 981.74,128.5 989.76,128.5",
+ style=dotted];
+ ObservationMatrixRowItem -> ObservationMatrixRow [pos="e,596.08,133.87 538.4,138.18 554.06,137.01 570.39,135.79 585.97,134.63",
+ style=invis];
+ ObservationMatrixRowItem -> ObservationMatrixColumnItem [pos="e,574.06,165.84 538.4,159.52 546.82,161.01 555.43,162.54 564.01,164.06",
+ style=invis];
+ Role -> Verifier [pos="e,640.59,298.03 479.93,277.81 517.65,282.56 587.32,291.33 630.49,296.76",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,823.77,512.5 730.31,512.5 756.34,512.5 786.91,512.5 813.71,512.5",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,640.32,305 494.23,323.39 533.3,318.47 591.94,311.09 630.13,306.28",
+ style=dotted];
+ Creator -> Updater [pos="e,851.84,420.5 697.71,420.5 734.48,420.5 799.76,420.5 841.71,420.5",
+ style=invis];
+ Project -> Creator [pos="e,640.38,420.5 480.36,420.5 518.13,420.5 587.28,420.5 630.3,420.5",
+ style=invis];
+}
diff --git a/data/observation_matrix_column_items_model_er.dot b/data/observation_matrix_column_items_model_er.dot
new file mode 100644
index 00000000..e3195fe2
--- /dev/null
+++ b/data/observation_matrix_column_items_model_er.dot
@@ -0,0 +1,188 @@
+digraph ObservationMatrixColumnItem {
+ graph [bb="0,0,742.12,324.89",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,205.89",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="42.896,95.893",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="42.896,151.89",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ ObservationMatrixColumnItem [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#observation-matrix-column-item",
+ label=ObservationMatrixColumnItem,
+ pos="259.46,152.89",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.824];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="259.46,94.893",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="493.12,306.89",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="493.12,252.89",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="493.12,198.89",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="617.62,225.89",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="617.62,52.893",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ ObservationMatrix [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix",
+ label=ObservationMatrix,
+ pos="493.12,106.89",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="493.12,52.893",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="712.12,52.893",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Tag -> Keyword [pos="e,225.61,95.046 70.205,95.771 106.39,95.602 171.95,95.297 215.35,95.094",
+ style=dotted];
+ ObservationMatrixColumnItem -> Identifier [pos="e,80.293,196.9 181.32,171.95 150.78,179.49 116.68,187.91 90.093,194.48"];
+ ObservationMatrixColumnItem -> Tag [pos="e,66.888,104.23 173.2,134.93 156.1,130.94 138.31,126.51 121.79,121.89 106.77,117.69 90.351,112.33 76.482,107.57"];
+ ObservationMatrixColumnItem -> Note [pos="e,71.07,152.02 121.39,152.25 106.83,152.19 93.068,152.12 81.292,152.07"];
+ ObservationMatrixColumnItem -> PinboardItem [pos="e,449.68,288.75 286.78,174.93 319.66,201.81 378.27,247.63 433.12,279.89 435.58,281.34 438.13,282.76 440.72,284.15"];
+ ObservationMatrixColumnItem -> Role [pos="e,465.89,241.57 311.58,174.96 355.56,193.95 417.85,220.84 456.58,237.55"];
+ ObservationMatrixColumnItem -> VerifierRole [pos="e,451.6,190.85 348.7,170.42 380.11,176.65 414.39,183.46 441.55,188.85"];
+ ObservationMatrixColumnItem -> Creator [dir=back,
+ pos="s,376.51,166.69 386.51,166.88 440.59,167.43 502.77,160.45 553.12,133.89 579.2,120.14 598.04,90.465 608.14,71.108",
+ style=dashed];
+ ObservationMatrixColumnItem -> ObservationMatrix [dir=back,
+ pos="s,348.7,135.37 358.67,133.39 383.9,128.38 410.26,123.15 432.83,118.67",
+ style=dashed];
+ ObservationMatrixColumnItem -> Project [dir=back,
+ pos="s,362.92,137.3 372.4,133.88 381.04,130.51 389.39,126.55 397.12,121.89 418.17,109.2 413.48,94.687 433.12,79.893 442.84,72.573 454.86,\
+66.623 465.5,62.191",
+ style=dashed];
+ ObservationMatrixColumnItem -> Updater [dir=back,
+ pos="s,370.82,138.36 380,133.78 386.12,130.4 391.89,126.46 397.12,121.89 431.45,91.931 395.67,51.849 433.12,25.893 509.64,-27.137 627.76,\
+14.565 682.03,38.731",
+ style=dashed];
+ Role -> Verifier [pos="e,589.11,231.96 520.4,247.1 537.56,243.32 560.23,238.32 579.26,234.13",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,588.75,219.75 534.91,207.88 549.14,211.02 565.03,214.52 578.98,217.6",
+ style=dotted];
+ Creator -> Updater [pos="e,681.95,52.893 646.12,52.893 654.15,52.893 663.08,52.893 671.69,52.893",
+ style=invis];
+ Project -> Creator [pos="e,588.82,52.893 520.7,52.893 537.68,52.893 559.96,52.893 578.78,52.893",
+ style=invis];
+}
diff --git a/data/observation_matrix_columns_model_er.dot b/data/observation_matrix_columns_model_er.dot
new file mode 100644
index 00000000..c1fffaa4
--- /dev/null
+++ b/data/observation_matrix_columns_model_er.dot
@@ -0,0 +1,206 @@
+digraph ObservationMatrixColumn {
+ graph [bb="0,0,709.64,419.32",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="27.948,254.82",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="27.948,198.82",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Observation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#observation",
+ label=Observation,
+ pos="412.14,400.82",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Descriptor [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#descriptor",
+ label=Descriptor,
+ pos="412.14,345.82",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ }
+ subgraph supporting {
+ ObservationMatrixColumn [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#observation-matrix-column",
+ label=ObservationMatrixColumn,
+ pos="211.27,198.82",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.3159];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="211.27,256.82",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="412.14,290.82",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="412.14,198.82",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="412.14,144.82",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="553.64,171.82",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="553.64,52.824",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ ObservationMatrix [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix",
+ label=ObservationMatrix,
+ pos="553.64,322.82",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="412.14,52.824",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="679.64,52.824",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Tag -> Keyword [pos="e,177.74,256.47 55.313,255.11 84.687,255.44 132.61,255.97 167.4,256.35",
+ style=dotted];
+ Observation -> ObservationMatrix [pos="e,519.98,341.09 445.5,382.73 464.99,371.83 490.01,357.84 510.97,346.12",
+ style=invis];
+ ObservationMatrixColumn -> Tag [pos="e,51.137,245.24 136.3,216.71 121.5,220.71 106.13,225.15 91.895,229.82 81.588,233.21 70.536,237.4 60.613,241.37"];
+ ObservationMatrixColumn -> Note [pos="e,56.093,198.82 91.781,198.82 82.712,198.82 74.054,198.82 66.222,198.82"];
+ ObservationMatrixColumn -> Observation [pos="e,374.99,382.53 307.25,213.43 315.9,217.66 323.92,223.03 330.64,229.82 377.03,276.73 327.5,320.72 366.64,373.82 367.01,374.32 367.39,\
+374.82 367.78,375.3"];
+ ObservationMatrixColumn -> Descriptor [dir=back,
+ pos="s,304.82,213.79 313.86,218.23 319.87,221.52 325.54,225.36 330.64,229.82 362.43,257.67 339.46,285.47 366.64,317.82 369.69,321.46 \
+373.34,324.77 377.22,327.74",
+ style=dashed];
+ ObservationMatrixColumn -> PinboardItem [pos="e,385.55,272.79 294.17,215.42 306.71,219.33 319.26,224.08 330.64,229.82 348.99,239.08 350.29,246.38 366.64,258.82 370.05,261.42 \
+373.63,264.09 377.23,266.73"];
+ ObservationMatrixColumn -> Role [pos="e,385.09,198.82 330.54,198.82 346.57,198.82 361.92,198.82 374.85,198.82"];
+ ObservationMatrixColumn -> VerifierRole [pos="e,370.56,155.84 280.99,180.16 307.24,173.04 336.65,165.05 360.87,158.48"];
+ ObservationMatrixColumn -> Creator [dir=back,
+ pos="s,250.51,176.74 259.52,171.71 289.63,155.02 329.78,133.83 366.64,117.82 421.55,93.979 488.3,72.36 525.05,61.066",
+ style=dashed];
+ ObservationMatrixColumn -> ObservationMatrix [dir=back,
+ pos="s,297.84,214.89 307.88,217.15 354.2,227.77 409.98,243.19 457.64,263.82 482.94,274.78 509.4,291.73 527.95,304.66",
+ style=dashed];
+ ObservationMatrixColumn -> Project [dir=back,
+ pos="s,242.07,176.64 250.47,170.4 281.65,147.26 326.89,113.79 366.64,84.824 372.79,80.341 379.45,75.534 385.69,71.045",
+ style=dashed];
+ ObservationMatrixColumn -> Updater [dir=back,
+ pos="s,223.67,176.8 228.68,167.96 252.65,126.59 301.58,54.967 366.64,25.824 466.83,-19.051 505.98,4.3536 613.64,25.824 625.74,28.238 \
+638.41,32.95 649.32,37.771",
+ style=dashed];
+ Role -> Verifier [pos="e,525.09,177.16 439.38,193.75 460.79,189.6 491.3,183.7 515.26,179.06",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,524.91,166.46 453.86,152.71 473.14,156.44 496,160.86 514.88,164.52",
+ style=dotted];
+ Creator -> Updater [pos="e,649.47,52.824 582.16,52.824 598.94,52.824 620.66,52.824 639.24,52.824",
+ style=invis];
+ Project -> Creator [pos="e,524.74,52.824 439.71,52.824 460.92,52.824 490.91,52.824 514.66,52.824",
+ style=invis];
+}
diff --git a/data/observation_matrix_row_items_model_er.dot b/data/observation_matrix_row_items_model_er.dot
new file mode 100644
index 00000000..2466c369
--- /dev/null
+++ b/data/observation_matrix_row_items_model_er.dot
@@ -0,0 +1,291 @@
+digraph ObservationMatrixRowItem {
+ graph [bb="0,0,836.39,514",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph supporting {
+ ObservationMatrixRowItem [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#observation-matrix-row-item",
+ label=ObservationMatrixRowItem,
+ pos="246.09,272",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.4527];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="246.09,496",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="246.09,214",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="466.39,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="466.39,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="623.39,435",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="778.39,435",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="466.39,496",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="466.39,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="623.39,45",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="623.39,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ ObservationMatrix [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix",
+ label=ObservationMatrix,
+ pos="466.39,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="466.39,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="778.39,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="623.39,375",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="42.896,441",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,324",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="42.896,215",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="42.896,270",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="466.39,441",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ Citation -> Source [pos="e,439.16,441 82.044,441 162.65,441 349.4,441 428.71,441",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,199.77,483.61 77.119,450.08 107.72,458.45 153.73,471.02 189.86,480.9",
+ style=dotted];
+ Tag -> Keyword [pos="e,212.45,214.16 70.199,214.87 103.81,214.7 162.41,214.41 202.44,214.21",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,562.11,437.33 493.68,439.98 509.79,439.36 531.24,438.53 552,437.72",
+ style=invis];
+ Source -> OriginCitation [pos="e,579.85,393.11 493.68,429.8 514.68,420.86 544.76,408.05 570.56,397.07",
+ style=invis];
+ ObservationMatrixRowItem -> Citation [pos="e,62.463,425.4 218.71,294.16 180.12,326.58 108.69,386.58 70.161,418.94"];
+ ObservationMatrixRowItem -> Identifier [pos="e,79.866,314.7 173.18,290.59 145.36,297.77 114.35,305.79 89.679,312.17"];
+ ObservationMatrixRowItem -> Tag [pos="e,67.27,223.32 169.53,253.97 153.7,249.92 137.15,245.49 121.79,241 106.93,236.66 90.65,231.32 76.837,226.61"];
+ ObservationMatrixRowItem -> Note [pos="e,71.03,270.27 121.84,270.77 107.25,270.63 93.326,270.49 81.393,270.37"];
+ ObservationMatrixRowItem -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,269.93,294.04 e,439.17,427.77 277.38,301.03 308.39,329.97 358.66,374.76 406.39,408 413.87,413.21 422.26,418.31 430.3,422.87",
+ style=dotted];
+ ObservationMatrixRowItem -> PinboardItem [pos="e,423.5,144.1 343.94,257.04 353.51,252.9 362.56,247.64 370.39,241 401.04,214.98 379.23,187.65 406.39,158 409.06,155.09 412.05,152.38 \
+415.24,149.89"];
+ ObservationMatrixRowItem -> Role [pos="e,439.26,24.039 347.64,257.71 356.11,253.4 363.9,247.92 370.39,241 430.96,176.38 351.97,114.88 406.39,45 412.33,37.364 420.93,31.812 \
+429.74,27.805"];
+ ObservationMatrixRowItem -> SubsequentCitation [pos="e,562.2,417.14 282.88,294.09 314.59,313.09 362.53,340.44 406.39,360 453.98,381.22 509.56,400.4 552.42,414.05"];
+ ObservationMatrixRowItem -> VerifierRole [pos="e,424.6,84.778 346.57,257.55 355.36,253.28 363.51,247.86 370.39,241 416.47,195.01 364.7,149.01 406.39,99 409.15,95.691 412.4,92.767 \
+415.93,90.189"];
+ ObservationMatrixRowItem -> Creator [dir=back,
+ pos="s,339.42,256.48 348.81,252.72 356.41,249.42 363.7,245.54 370.39,241 393.04,225.62 382.02,203.48 406.39,191 467.94,159.47 551.87,\
+186.82 594.73,204.97",
+ style=dashed];
+ ObservationMatrixRowItem -> ObservationMatrix [dir=back,
+ pos="s,370.27,272 380.44,272 389.37,272 398.07,272 406.29,272",
+ style=dashed];
+ ObservationMatrixRowItem -> Project [dir=back,
+ pos="s,321,253.72 331.14,251.21 369.44,241.73 412.09,231.18 438.83,224.57",
+ style=dashed];
+ ObservationMatrixRowItem -> Updater [dir=back,
+ pos="s,330.67,288.88 340.76,290.57 362.24,294.07 385.03,297.2 406.39,299 459.53,303.47 473.7,307.29 526.39,299 609.39,285.94 702.36,249.98 \
+748.37,230.67",
+ style=dashed];
+ ObservationMatrixRowItem -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,298.38,293.77 e,575.51,367.94 307.69,297.5 337.1,309.18 373.18,322.51 406.39,332 459.59,347.21 521.68,358.96 565.59,366.31"];
+ CitationTopic -> Topic [pos="e,439.36,496 292.32,496 332.79,496 391.35,496 428.89,496",
+ style=dotted];
+ Role -> Verifier [pos="e,594.65,40.169 493.68,22.58 518.68,26.935 556.55,33.532 584.75,38.443",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,720.03,435 684.42,435 692.75,435 701.36,435 709.81,435",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,594.63,49.835 508.11,64.906 531.76,60.787 561.35,55.632 584.49,51.601",
+ style=dotted];
+ Creator -> Updater [pos="e,748.32,218 652.09,218 676.12,218 711.16,218 738.08,218",
+ style=invis];
+ Project -> Creator [pos="e,594.79,218 494.03,218 518.98,218 556.5,218 584.55,218",
+ style=invis];
+}
diff --git a/data/observation_matrix_rows_model_er.dot b/data/observation_matrix_rows_model_er.dot
new file mode 100644
index 00000000..7afa48b4
--- /dev/null
+++ b/data/observation_matrix_rows_model_er.dot
@@ -0,0 +1,319 @@
+digraph ObservationMatrixRow {
+ graph [bb="0,0,801.21,625",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="42.896,552",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,381",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="42.896,272",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="42.896,327",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="431.21,552",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="431.21,236",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="431.21,181",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ ObservationMatrixRow [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#observation-matrix-row",
+ label=ObservationMatrixRow,
+ pos="228.5,329",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.9642];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="228.5,607",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="228.5,271",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="431.21,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="431.21,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="588.21,546",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="743.21,546",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="431.21,607",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="431.21,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="588.21,45",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="588.21,329",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ ObservationMatrix [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix",
+ label=ObservationMatrix,
+ pos="431.21,383",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="431.21,329",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="743.21,329",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="588.21,486",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,404.04,552 81.995,552 156.56,552 320.87,552 393.94,552",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,182.34,593.47 76.299,561.71 102.87,569.66 141.07,581.11 172.42,590.5",
+ style=dotted];
+ Tag -> Keyword [pos="e,194.73,271.18 70.202,271.86 100.07,271.69 149.25,271.43 184.68,271.23",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,526.93,548.33 458.51,550.98 474.61,550.36 496.06,549.53 516.82,548.72",
+ style=invis];
+ Source -> OriginCitation [pos="e,544.67,504.11 458.51,540.8 479.51,531.86 509.59,519.05 535.39,508.07",
+ style=invis];
+ ObservationMatrixRow -> Citation [pos="e,57.696,535.24 209.28,351.13 174.78,393.03 100.17,483.65 64.158,527.39"];
+ ObservationMatrixRow -> Identifier [pos="e,78.863,371.1 163.31,347.18 138.71,354.15 111.19,361.94 88.773,368.29"];
+ ObservationMatrixRow -> Tag [pos="e,67.343,280.08 163.94,310.77 150.02,306.67 135.39,302.26 121.79,298 107.01,293.37 90.75,287.99 76.924,283.32"];
+ ObservationMatrixRow -> Note [pos="e,70.988,327.3 121.41,327.84 106.96,327.69 92.994,327.53 80.992,327.4"];
+ ObservationMatrixRow -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,241.87,351.3 e,404,540.35 247.07,360.17 271.04,400.64 317.25,471.68 371.21,519 378.34,525.25 386.84,530.84 395.15,535.57",
+ style=dotted];
+ ObservationMatrixRow -> CollectionObject [dir=back,
+ pos="s,301.23,312.13 310.79,308.75 319.22,305.59 327.52,302.02 335.21,298 353.42,288.48 354.19,280.5 371.21,269 378.9,263.81 387.46,258.68 \
+395.62,254.07",
+ style=dashed];
+ ObservationMatrixRow -> Otu [dir=back,
+ pos="s,310.68,313.7 319.69,309.12 325.27,305.94 330.52,302.26 335.21,298 367.09,269.02 341.5,239.2 371.21,208 380.07,198.7 392.74,192.33 \
+404.07,188.12",
+ style=dashed];
+ ObservationMatrixRow -> PinboardItem [pos="e,385.53,140.98 312.61,314.11 321.01,309.97 328.79,304.69 335.21,298 381.17,250.07 328.82,204.11 371.21,153 373.07,150.76 375.15,\
+148.71 377.39,146.81"];
+ ObservationMatrixRow -> Role [pos="e,404.2,23.795 314.07,314.34 322.04,310.14 329.33,304.8 335.21,298 409.54,212.12 303.25,136 371.21,45 377.12,37.096 385.88,31.44 \
+394.87,27.419"];
+ ObservationMatrixRow -> SubsequentCitation [pos="e,527.06,534.06 245.56,351.12 269.53,382.68 317.66,440.48 371.21,474 416.07,502.08 473.08,520.48 517.27,531.65"];
+ ObservationMatrixRow -> VerifierRole [pos="e,389.69,84.185 313.56,314.25 321.68,310.07 329.14,304.76 335.21,298 395.3,231.16 316.08,169.99 371.21,99 374.01,95.4 377.39,92.263 \
+381.11,89.533"];
+ ObservationMatrixRow -> Creator [dir=back,
+ pos="s,301.87,312.22 311.97,310.37 363.58,301.22 431.4,293.75 491.21,302 514.71,305.24 540.55,312.75 559.5,319.02",
+ style=dashed];
+ ObservationMatrixRow -> ObservationMatrix [dir=back,
+ pos="s,295.78,346.83 305.61,349.48 327.3,355.31 350.59,361.58 371.1,367.1",
+ style=dashed];
+ ObservationMatrixRow -> Project [dir=back,
+ pos="s,335.44,329 345.46,329 367.16,329 387.85,329 403.36,329",
+ style=dashed];
+ ObservationMatrixRow -> Updater [dir=back,
+ pos="s,257.66,351.04 266.1,357.05 293.41,376.14 332.54,399.73 371.21,410 497.37,443.51 650.31,376.73 713.14,344.75",
+ style=dashed];
+ ObservationMatrixRow -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,250.27,351.26 e,540.55,483.16 257.36,358.36 284.06,384.68 326.76,422.24 371.21,443 421.99,466.72 485.44,477.37 530.39,482.15"];
+ CitationTopic -> Topic [pos="e,404.06,607 274.55,607 310.53,607 360.3,607 393.79,607",
+ style=dotted];
+ Role -> Verifier [pos="e,559.48,40.169 458.51,22.58 483.51,26.935 521.37,33.532 549.57,38.443",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,684.86,546 649.24,546 657.58,546 666.18,546 674.64,546",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,559.46,49.835 472.94,64.906 496.58,60.787 526.17,55.632 549.32,51.601",
+ style=dotted];
+ Creator -> Updater [pos="e,713.15,329 616.92,329 640.94,329 675.98,329 702.9,329",
+ style=invis];
+ Project -> Creator [pos="e,559.61,329 458.86,329 483.8,329 521.33,329 549.37,329",
+ style=invis];
+}
diff --git a/data/observations_model_er.dot b/data/observations_model_er.dot
new file mode 100644
index 00000000..ab04844f
--- /dev/null
+++ b/data/observations_model_er.dot
@@ -0,0 +1,398 @@
+digraph Observation {
+ graph [bb="0,0,734.07,672.41",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="59.145,599.41",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="59.145,470.41",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,416.41",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="59.145,254.41",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="59.145,362.41",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="59.145,200.41",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="59.145,308.41",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Observation [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#observation",
+ label=Observation,
+ pos="216.68,337.41",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.7331];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="369.57,599.41",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="369.57,267.41",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Descriptor [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#descriptor",
+ label=Descriptor,
+ pos="369.57,212.41",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="369.57,157.41",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="216.68,654.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="216.68,470.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="216.68,254.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="216.68,200.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="369.57,102.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="369.57,360.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="521.07,591.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="676.07,591.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="369.57,654.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="369.57,468.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="521.07,418.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ CharacterState [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#character-state",
+ label=CharacterState,
+ pos="369.57,414.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3333];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="521.07,48.413",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="369.57,48.413",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="676.07,48.413",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="521.07,522.41",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,342.23,599.41 98.273,599.41 158.05,599.41 273.07,599.41 331.93,599.41",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,170.66,638.49 90.503,610.15 110.55,617.24 137.39,626.73 161.08,635.11",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,161.95,470.41 110.21,470.41 123.38,470.41 137.76,470.41 151.55,470.41",
+ style=dotted];
+ Depiction -> Image [pos="e,189.58,254.41 104.71,254.41 128.43,254.41 157.21,254.41 179.52,254.41",
+ style=dotted];
+ Tag -> Keyword [pos="e,183.07,200.41 86.178,200.41 109.8,200.41 145.06,200.41 172.84,200.41",
+ style=dotted];
+ Observation -> Citation [pos="e,70.591,581.82 202.48,359.64 173.94,407.72 106.58,521.2 75.879,572.91"];
+ Observation -> Confidence [pos="e,94.307,457.27 199.48,359.7 181.67,382.97 151.18,419.37 118.29,443.41 113.74,446.74 108.72,449.8 103.58,452.58"];
+ Observation -> DataAttribute [pos="e,92.895,401.59 181.22,356.42 162.69,366.48 139.39,378.89 118.29,389.41 113.06,392.02 107.52,394.7 102.03,397.3"];
+ Observation -> Depiction [pos="e,89.966,267.66 183.17,317.77 164.42,306.68 140.28,292.81 118.29,281.41 112.18,278.25 105.63,275.04 99.214,271.98"];
+ Observation -> Identifier [pos="e,99.393,356.1 154.34,347.27 139.45,349.67 123.73,352.19 109.48,354.48"];
+ Observation -> Tag [pos="e,83.925,208.04 189.56,316.09 178.12,306.14 164.91,293.78 154.29,281.41 135.5,259.53 140.19,246.19 118.29,227.41 110.97,221.14 101.94,\
+216.01 93.201,211.99"];
+ Observation -> Note [pos="e,86.178,313.27 156.25,326.33 136,322.56 114,318.45 96.156,315.13"];
+ Observation -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,232.74,359.74 e,342.49,588.33 238.27,368.37 251.3,388.98 267.76,417.02 279.07,443.41 301.5,495.77 280.53,521.12 315.07,566.41 \
+320.05,572.94 326.72,578.48 333.66,583.05",
+ style=dotted];
+ Observation -> CollectionObject [dir=back,
+ pos="s,255.76,319.75 265.05,315.44 285.86,305.78 309.99,294.59 329.72,285.44",
+ style=dashed];
+ Observation -> Descriptor [dir=back,
+ pos="s,242.82,315.74 250.54,308.8 259.97,300.22 270.13,290.64 279.07,281.41 296.18,263.76 295.72,254.58 315.07,239.41 320.39,235.24 326.46,\
+231.45 332.55,228.11",
+ style=dashed];
+ Observation -> Otu [dir=back,
+ pos="s,245.84,316.65 253.53,309.94 262.77,301.56 272.07,291.78 279.07,281.41 304.78,243.29 284.42,218.7 315.07,184.41 322.42,176.19 332.85,\
+170.15 342.56,165.89",
+ style=dashed];
+ Observation -> PinboardItem [pos="e,324.34,120.47 246.95,316.89 258.55,307.35 271.02,295.09 279.07,281.41 314.28,221.58 272.07,183.92 315.07,129.41 315.65,128.68 \
+316.25,127.97 316.88,127.27"];
+ Observation -> Role [pos="e,342.24,356.4 279.05,346.77 297.12,349.52 316.31,352.45 332.27,354.88"];
+ Observation -> SubsequentCitation [pos="e,459.83,577.5 231.56,359.77 244.5,380.96 264,413.86 279.07,443.41 296.97,478.51 285.82,498.02 315.07,524.41 335.34,542.71 399.05,\
+561.9 450.13,575.04"];
+ Observation -> VerifierRole [pos="e,328.76,450.32 234.45,359.47 252.51,382.13 282.99,417.39 315.07,441.41 316.66,442.61 318.32,443.77 320.01,444.91"];
+ Observation -> CharacterState [dir=back,
+ pos="s,253.27,355.76 262.21,360.35 278.79,368.88 297.78,378.61 315.07,387.41 320.73,390.29 326.72,393.33 332.58,396.29",
+ style=dashed];
+ Observation -> Creator [dir=back,
+ pos="s,247.6,317.25 255.32,310.63 264.48,302.3 273.3,292.38 279.07,281.41 306.23,229.8 271.09,59.725 315.07,21.413 364.87,-21.972 448.99,\
+10.957 492.36,32.912",
+ style=dashed];
+ Observation -> Project [dir=back,
+ pos="s,247.35,317.12 255.06,310.49 264.22,302.16 273.1,292.28 279.07,281.41 323.8,199.94 259.7,150.06 315.07,75.413 321.7,66.472 332.14,\
+60.288 342.04,56.119",
+ style=dashed];
+ Observation -> Updater [dir=back,
+ pos="s,279.02,333.74 289.03,332.57 330.44,327.37 382.46,316.63 424.07,294.41 534.68,235.36 629.45,112.6 662.53,66.461",
+ style=dashed];
+ Observation -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,230.7,359.65 e,473.45,527.15 235.86,368.41 262.31,413.28 308.92,491.43 315.07,495.41 359,523.86 419.4,528.66 463.24,527.53"];
+ Source -> SubsequentCitation [pos="e,459.9,594.63 396.61,598.02 411.43,597.23 430.78,596.19 449.74,595.18",
+ style=invis];
+ Source -> OriginCitation [pos="e,485.08,540.43 396.61,586 418.44,574.76 450.09,558.46 475.88,545.17",
+ style=invis];
+ CitationTopic -> Topic [pos="e,342.2,654.41 262.95,654.41 285.08,654.41 311.36,654.41 332.17,654.41",
+ style=dotted];
+ Role -> Verifier [pos="e,492.56,407.74 396.61,370.52 420.53,379.79 456.23,393.64 483.1,404.07",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,617.71,591.41 582.1,591.41 590.43,591.41 599.04,591.41 607.5,591.41",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,492.5,427.63 411.42,454.75 433.76,447.28 461.23,438.09 482.96,430.83",
+ style=dotted];
+ Creator -> Updater [pos="e,646.01,48.413 549.78,48.413 573.8,48.413 608.84,48.413 635.76,48.413",
+ style=invis];
+ Project -> Creator [pos="e,492.56,48.413 397.3,48.413 421.02,48.413 455.94,48.413 482.48,48.413",
+ style=invis];
+}
diff --git a/data/organizations_model_er.dot b/data/organizations_model_er.dot
new file mode 100644
index 00000000..6a452889
--- /dev/null
+++ b/data/organizations_model_er.dot
@@ -0,0 +1,188 @@
+digraph Organization {
+ graph [bb="0,0,506.2,445.51",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,238.51",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="42.896,184.51",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ Organization [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#organization",
+ label=Organization,
+ pos="187,211.51",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.8112];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="349.2,427.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="349.2,373.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="349.2,319.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="476.2,346.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ AreaServed [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#area-served",
+ label=AreaServed,
+ pos="349.2,265.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1111];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="349.2,211.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Department [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#department",
+ label=Department,
+ pos="349.2,157.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.125];
+ ParentOrganization [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#parent-organization",
+ label=ParentOrganization,
+ pos="349.2,103.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SameA [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#same-a",
+ label=SameA,
+ pos="349.2,49.515",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="476.2,211.51",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Organization -> Identifier [pos="e,82.351,231.21 125.04,223.1 114.06,225.18 102.76,227.33 92.205,229.34"];
+ Organization -> Note [pos="e,69.96,189.47 125,199.93 109.63,197.01 93.626,193.96 79.932,191.36"];
+ Organization -> PinboardItem [pos="e,303.49,411.49 194.47,233.71 206.78,272.37 236.99,352.51 288.2,400.51 290.31,402.49 292.59,404.34 294.98,406.07"];
+ Organization -> Role [pos="e,322.07,365.11 199.65,233.64 216.01,262.87 248.29,314.4 288.2,346.51 295.44,352.34 304.14,357.19 312.64,361.1"];
+ Organization -> VerifierRole [pos="e,307.45,302.89 211.79,233.7 231.31,251.14 260.19,275.29 288.2,292.51 291.4,294.49 294.78,296.4 298.22,298.23"];
+ Organization -> AreaServed [dir=back,
+ pos="s,234.76,227.28 244.37,230.52 265.71,237.71 289.52,245.74 308.95,252.29",
+ style=dashed];
+ Organization -> Creator [dir=back,
+ pos="s,252.23,211.51 262.31,211.51 282.98,211.51 304.16,211.51 320.32,211.51",
+ style=dashed];
+ Organization -> Department [dir=back,
+ pos="s,234.76,195.75 244.33,192.53 265.59,185.36 289.29,177.37 308.69,170.83",
+ style=dashed];
+ Organization -> ParentOrganization [dir=back,
+ pos="s,211.79,189.33 219.53,182.51 238.51,165.96 263.69,145.59 288.2,130.51 293.36,127.34 298.95,124.33 304.58,121.54",
+ style=dashed];
+ Organization -> SameA [dir=back,
+ pos="s,199.65,189.39 204.66,180.61 222.13,150.67 252.03,105.62 288.2,76.515 297.72,68.853 309.77,62.879 320.56,58.52",
+ style=dashed];
+ Organization -> Updater [dir=back,
+ pos="s,192.13,189.2 194.42,179.22 205.17,134.84 231.49,56.637 288.2,22.515 334.66,-5.4394 366.06,-8.9803 410.2,22.515 466.27,62.522 474.47,\
+154.12 475.32,193.25",
+ style=dashed];
+ Role -> Verifier [pos="e,447.29,352.54 376.4,367.85 394.08,364.04 417.69,358.94 437.4,354.68",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,447.45,340.52 390.78,328.28 405.84,331.53 422.85,335.21 437.63,338.4",
+ style=dotted];
+ Creator -> Updater [pos="e,445.79,211.51 377.94,211.51 394.93,211.51 416.95,211.51 435.74,211.51",
+ style=invis];
+}
diff --git a/data/origin_relationships_model_er.dot b/data/origin_relationships_model_er.dot
new file mode 100644
index 00000000..6f73d4ee
--- /dev/null
+++ b/data/origin_relationships_model_er.dot
@@ -0,0 +1,138 @@
+digraph OriginRelationship {
+ graph [bb="0,0,697.53,328",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ OriginRelationship [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#origin-relationship",
+ label=OriginRelationship,
+ pos="88.419,156",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.4561];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="360.68,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="360.68,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="360.68,202",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="573.03,229",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="573.03,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="360.68,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="667.53,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ OriginRelationship -> PinboardItem [pos="e,314.96,308.82 104.24,178.23 124.91,207.32 165.25,257.57 212.84,283 240.94,298.02 275.9,304.84 304.67,307.87"];
+ OriginRelationship -> Role [pos="e,333.48,253.98 119.84,178.14 143.92,194.61 179.03,216.35 212.84,229 249.11,242.57 293.05,249.5 323.36,252.91"];
+ OriginRelationship -> VerifierRole [pos="e,319.14,195.1 166.14,169.06 211.94,176.85 268.82,186.53 309.03,193.38"];
+ OriginRelationship -> Creator [dir=back,
+ pos="s,176.91,160.99 187.16,161.3 272.95,163.65 400.53,161.57 508.53,137 520.68,134.24 533.44,129.26 544.3,124.33",
+ style=dashed];
+ OriginRelationship -> Project [dir=back,
+ pos="s,166.14,142.94 176.15,141.24 230.56,131.98 297.03,120.66 333.17,114.51",
+ style=dashed];
+ OriginRelationship -> Updater [dir=back,
+ pos="s,116.85,133.89 125.08,127.91 148.55,111.27 180.76,91.777 212.84,83 379.47,37.41 432.11,49.213 601.53,83 613.63,85.414 626.3,90.126 \
+637.21,94.947",
+ style=dashed];
+ "Objects with Origin relationships" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with origin relationship",
+ label="Objects with Origin relationships",
+ pos="360.68,18",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=4.1068];
+ OriginRelationship -> "Objects with Origin relationships" [dir=back,
+ pos="s,108.89,133.66 115.97,126.14 139.16,101.94 174.97,68.862 212.84,50 229.42,41.741 248.1,35.602 266.44,31.042",
+ style=dashed];
+ Role -> Verifier [pos="e,544.48,232.54 387.9,252.64 424.75,247.9 492.09,239.26 534.32,233.84",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,544.34,225.45 402.24,207.21 440.43,212.11 497.19,219.39 534.4,224.17",
+ style=dotted];
+ Creator -> Updater [pos="e,637.36,110 601.53,110 609.56,110 618.49,110 627.1,110",
+ style=invis];
+ Project -> Creator [pos="e,544.27,110 388.32,110 425.22,110 492.06,110 534.14,110",
+ style=invis];
+}
diff --git a/data/otu_page_layout_sections_model_er.dot b/data/otu_page_layout_sections_model_er.dot
new file mode 100644
index 00000000..ce3ab7d1
--- /dev/null
+++ b/data/otu_page_layout_sections_model_er.dot
@@ -0,0 +1,151 @@
+digraph OtuPageLayoutSection {
+ graph [bb="0,0,533.79,364.65",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ OtuPageLayoutSection [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#otu-page-layout-section",
+ label=OtuPageLayoutSection,
+ pos="103.9,169.65",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.886];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="294.29,346.65",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="294.29,292.65",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="294.29,238.65",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="409.29,265.65",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="409.29,92.655",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ OtuPageLayout [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#otu-page-layout",
+ label=OtuPageLayout,
+ pos="294.29,146.65",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4028];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="294.29,92.655",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="294.29,38.655",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="503.79,92.655",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ OtuPageLayoutSection -> PinboardItem [pos="e,256.74,328.5 121.63,191.87 146,223.16 193.81,280.73 243.79,319.65 245.17,320.73 246.6,321.79 248.07,322.82"];
+ OtuPageLayoutSection -> Role [pos="e,267.05,279.01 134.9,191.76 162.62,211.85 205.23,241.9 243.79,265.65 248.31,268.44 253.14,271.26 257.94,273.97"];
+ OtuPageLayoutSection -> VerifierRole [pos="e,252.67,223.78 158.63,189.34 185.15,199.05 216.96,210.7 242.99,220.23"];
+ OtuPageLayoutSection -> Creator [dir=back,
+ pos="s,173.34,186.68 183.23,188.31 232.1,195.87 294.95,197.91 344.79,173.65 371.46,160.67 390.24,130.47 400.15,110.84",
+ style=dashed];
+ OtuPageLayoutSection -> OtuPageLayout [dir=back,
+ pos="s,202.13,157.78 212.22,156.55 223.15,155.22 233.84,153.91 243.69,152.71",
+ style=dashed];
+ OtuPageLayoutSection -> Project [dir=back,
+ pos="s,154.89,149.22 164.36,145.35 198.68,131.32 240.16,114.37 266.63,103.55",
+ style=dashed];
+ OtuPageLayoutSection -> Topic [dir=back,
+ pos="s,131.99,147.53 140.12,141.06 167.61,119.3 207.16,89.19 243.79,65.655 251.2,60.893 259.52,56.142 267.19,51.983",
+ style=dashed];
+ OtuPageLayoutSection -> Updater [dir=back,
+ pos="s,116.17,147.54 121.31,138.41 143.34,100.25 186.43,37.605 243.79,11.655 327.5,-26.211 433.96,40.607 479.94,74.6",
+ style=dashed];
+ Role -> Verifier [pos="e,380.65,272.26 321.5,286.39 336.05,282.92 354.4,278.53 370.48,274.69",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,380.63,259.05 336.09,248.4 347.41,251.11 359.65,254.03 370.78,256.69",
+ style=dotted];
+ Creator -> Updater [pos="e,473.63,92.655 437.79,92.655 445.82,92.655 454.75,92.655 463.36,92.655",
+ style=invis];
+ Project -> Creator [pos="e,380.52,92.655 322.07,92.655 336.53,92.655 354.61,92.655 370.48,92.655",
+ style=invis];
+}
diff --git a/data/otu_page_layouts_model_er.dot b/data/otu_page_layouts_model_er.dot
new file mode 100644
index 00000000..421eda72
--- /dev/null
+++ b/data/otu_page_layouts_model_er.dot
@@ -0,0 +1,162 @@
+digraph OtuPageLayout {
+ graph [bb="0,0,517.11,379.25",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ OtuPageLayout [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#otu-page-layout",
+ label=OtuPageLayout,
+ pos="75.053,172.25",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.0848];
+ OtuPageLayoutSection [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#otu-page-layout-section",
+ label=OtuPageLayoutSection,
+ pos="257.11,361.25",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.9722];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="257.11,307.25",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="257.11,253.25",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ StandardSection [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#standard-section",
+ label=StandardSection,
+ pos="257.11,145.25",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4583];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="392.61,145.25",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="257.11,199.25",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="392.61,226.25",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="392.61,53.246",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="257.11,53.246",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="487.11,53.246",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ OtuPageLayout -> OtuPageLayoutSection [pos="e,199.77,343.13 85.645,194.25 101.69,228.67 137.11,295.34 186.11,334.25 187.67,335.49 189.31,336.68 190.99,337.83"];
+ OtuPageLayout -> PinboardItem [pos="e,211.45,293.17 93.807,194.42 113.98,218.38 148.97,256.33 186.11,280.25 191.09,283.45 196.51,286.37 202.05,289.01"];
+ OtuPageLayout -> Role [pos="e,229.95,243.78 114.12,191.95 135.13,202.57 161.83,215.63 186.11,226.25 197.18,231.09 209.43,235.97 220.54,240.22"];
+ OtuPageLayout -> StandardSection [pos="e,204.57,152.97 149.03,161.3 164.16,159.03 179.95,156.67 194.62,154.47"];
+ OtuPageLayout -> VerifierRole [pos="e,215.6,193.17 149.03,183.19 168.01,186.04 188.05,189.04 205.59,191.67"];
+ OtuPageLayout -> Creator [dir=back,
+ pos="s,112.94,151.9 121.88,147.27 141.31,137.35 164.43,126.38 186.11,118.25 247.28,95.303 266.34,101.52 328.11,80.246 340,76.149 352.82,\
+70.87 363.8,66.069",
+ style=dashed];
+ OtuPageLayout -> Project [dir=back,
+ pos="s,100.57,150.03 108.29,143.36 129.46,125.27 158.28,102.26 186.11,85.246 199.79,76.88 216.02,69.326 229.41,63.661",
+ style=dashed];
+ OtuPageLayout -> Updater [dir=back,
+ pos="s,84.991,150 89.287,140.61 106,105.3 138.46,49.998 186.11,26.246 279.58,-20.35 318.68,5.8184 421.11,26.246 433.21,28.659 445.88,\
+33.371 456.79,38.192",
+ style=dashed];
+ Role -> Verifier [pos="e,363.77,231.87 284.16,247.98 304.04,243.96 331.69,238.36 353.96,233.86",
+ style=invis];
+ StandardSection -> Topic [pos="e,365.49,145.25 309.72,145.25 324.92,145.25 341.23,145.25 355.26,145.25",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,363.75,220.61 298.89,207.49 316.28,211.01 336.47,215.1 353.56,218.55",
+ style=dotted];
+ Creator -> Updater [pos="e,456.94,53.246 421.11,53.246 429.13,53.246 438.07,53.246 446.68,53.246",
+ style=invis];
+ Project -> Creator [pos="e,364.04,53.246 284.8,53.246 304.64,53.246 331.97,53.246 354.01,53.246",
+ style=invis];
+}
diff --git a/data/otus_model_er.dot b/data/otus_model_er.dot
new file mode 100644
index 00000000..8d6e6f40
--- /dev/null
+++ b/data/otus_model_er.dot
@@ -0,0 +1,715 @@
+digraph Otu {
+ graph [bb="0,0,1181.3,1343",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="59.145,1270",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="59.145,629",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,683",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="59.145,575",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="59.145,791",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="59.145,521",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="59.145,737",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Otu [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="208.79,687",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=0.86111];
+ AssertedDistribution [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#asserted-distribution",
+ label=AssertedDistribution,
+ pos="384.79,1008",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.7917];
+ BiologicalAssociation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#biological-association",
+ label=BiologicalAssociation,
+ pos="384.79,953",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.9028];
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="633.29,511",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ CollectingEvent [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collecting-event",
+ label=CollectingEvent,
+ pos="856.29,511",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ Observation [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#observation",
+ label=Observation,
+ pos="384.79,859",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Descriptor [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#descriptor",
+ label=Descriptor,
+ pos="633.29,859",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Sequence [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#sequence",
+ label=Sequence,
+ pos="1066.8,566",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.94444];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="384.79,1270",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ TaxonName [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#taxon-name",
+ label=TaxonName,
+ pos="384.79,711",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1667];
+ }
+ subgraph supporting {
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="208.79,1325",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ TaxonDetermination [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-determination",
+ label=TaxonDetermination,
+ pos="384.79,510",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8056];
+ CollectionProfile [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#collection-profile",
+ label=CollectionProfile,
+ pos="384.79,618",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ CommonName [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#common-name",
+ label=CommonName,
+ pos="384.79,564",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4028];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="208.79,629",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Content [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#content",
+ label=Content,
+ pos="384.79,456",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.81944];
+ ContentTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#content-topic",
+ label=ContentTopic,
+ pos="633.29,456",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ OriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-relationship",
+ label=OriginRelationship,
+ pos="384.79,348",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ DerivedExtract [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#derived-extract",
+ label=DerivedExtract,
+ pos="633.29,348",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.375];
+ DerivedSequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#derived-sequence",
+ label=DerivedSequence,
+ pos="633.29,402",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5556];
+ Extract [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#extract",
+ label=Extract,
+ pos="856.29,566",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.77778];
+ GeographicAreasFromAssertedDistribution [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-areas-from-asserted-distribution",
+ label=GeographicAreasFromAssertedDistribution,
+ pos="633.29,1008",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=3.5278];
+ GeographicAreasFromCollectingEvent [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#geographic-areas-from-collecting-event",
+ label=GeographicAreasFromCollectingEvent,
+ pos="1066.8,457",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=3.1806];
+ Georeference [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#georeference",
+ label=Georeference,
+ pos="1066.8,511",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2361];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="208.79,575",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="208.79,521",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ LoanItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan-item",
+ label=LoanItem,
+ pos="384.79,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ Loan [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#loan",
+ label=Loan,
+ pos="633.29,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ ObservationMatrixRow [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-row",
+ label=ObservationMatrixRow,
+ pos="633.29,766",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0278];
+ ObservationMatrix [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix",
+ label=ObservationMatrix,
+ pos="856.29,766",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ ObservationMatrixRowItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-row-item",
+ label=ObservationMatrixRowItem,
+ pos="384.79,766",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.375];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="633.29,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ RelatedBiologicalAssociation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-biological-association",
+ label=RelatedBiologicalAssociation,
+ pos="633.29,934",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.4722];
+ RelatedOriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-origin-relationship",
+ label=RelatedOriginRelationship,
+ pos="633.29,294",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2361];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="384.79,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="633.29,1264",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="856.29,1264",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="384.79,1325",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="384.79,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="633.29,45",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="384.79,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="633.29,1139",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="384.79,1139",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="856.29,1139",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="633.29,1204",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,357.51,1270 98.223,1270 161.09,1270 285.76,1270 347.46,1270",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,162.53,1308.1 90.023,1281.1 108.07,1287.9 131.63,1296.6 152.93,1304.6",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,154.06,629 110.13,629 120.96,629 132.55,629 143.82,629",
+ style=dotted];
+ Depiction -> Image [pos="e,181.7,575 104.84,575 126.24,575 151.52,575 171.67,575",
+ style=dotted];
+ Tag -> Keyword [pos="e,175.29,521 86.201,521 108.03,521 139.62,521 165.13,521",
+ style=dotted];
+ Otu -> Citation [pos="e,64.725,1251.9 202.19,709.1 179.28,799.59 92.6,1141.8 67.188,1242.2"];
+ Otu -> Confidence [pos="e,94.017,642.31 179.53,675.9 158.01,667.45 128.01,655.66 103.47,646.02"];
+ Otu -> DataAttribute [pos="e,118.07,684.57 177.63,686.18 163.3,685.79 145.54,685.31 128.2,684.84"];
+ Otu -> Depiction [pos="e,93.702,586.8 181.39,674.83 172.19,669.81 162.19,663.42 154.29,656 133.26,636.25 140.19,620.77 118.29,602 113.69,598.06 108.41,\
+594.57 102.96,591.52"];
+ Otu -> Identifier [pos="e,90.863,778.65 189.79,705.14 172.52,721.87 145.17,746.67 118.29,764 112.57,767.69 106.27,771.15 99.983,774.29"];
+ Otu -> Tag [pos="e,84.699,527.43 179.96,675.77 170.72,670.87 161.07,664.32 154.29,656 122.33,616.78 151.99,585.74 118.29,548 111.81,540.75 102.98,\
+535.3 94.157,531.27"];
+ Otu -> Note [pos="e,84.195,728.86 178.15,697.04 153.76,705.3 119.21,717 93.789,725.61"];
+ Otu -> AssertedDistribution [pos="e,319.87,994.36 210,709.14 211.71,763.09 223.66,902.57 299.29,980 302.75,983.54 306.67,986.64 310.88,989.34"];
+ Otu -> BiologicalAssociation [pos="e,319.76,934.82 212.32,709.12 218.65,754.66 239.25,859.62 299.29,920 302.78,923.51 306.7,926.66 310.87,929.48"];
+ Otu -> Observation [pos="e,357.9,840.94 224.52,706.81 241.4,728.93 270.48,765.27 299.29,793 314.79,807.92 333.52,822.83 349.41,834.68"];
+ Otu -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,210.53,709.11 e,357.61,1266.7 210.93,719.12 215.28,824.31 234.02,1156.3 299.29,1237 311.21,1251.7 330.6,1259.9 347.8,1264.4",
+ style=dotted];
+ Otu -> TaxonName [dir=back,
+ pos="s,240.1,691.18 250.27,692.58 278.07,696.42 314.83,701.49 342.75,705.34",
+ style=dashed];
+ Otu -> TaxonDetermination [pos="e,319.46,523.04 237.75,675.87 247,670.99 256.63,664.42 263.29,656 297.59,612.68 260.52,576.37 299.29,537 302.69,533.55 306.53,530.53 \
+310.65,527.91"];
+ Otu -> CollectionProfile [pos="e,335.43,636.03 237.12,675.45 254.8,668.04 278.34,658.29 299.29,650 307.86,646.61 316.94,643.09 325.86,639.67"];
+ Otu -> CommonName [pos="e,334.16,573.07 236.53,675.18 245.77,670.2 255.7,663.74 263.29,656 286.41,632.42 273.76,611.95 299.29,591 306.71,584.91 315.53,580.18 \
+324.63,576.52"];
+ Otu -> Content [pos="e,355.14,457.92 238.18,676.19 247.47,671.34 257.01,664.7 263.29,656 309.27,592.33 246.72,541.35 299.29,483 310.99,470.02 328.91,\
+463.24 345.25,459.72"];
+ Otu -> OriginRelationship [pos="e,357.21,366.06 238.41,676.36 247.72,671.52 257.22,664.85 263.29,656 321.09,571.78 251.95,519.52 299.29,429 311.05,406.51 331.44,\
+386.69 349.25,372.28"];
+ Otu -> LoanItem [pos="e,349.79,222.19 238.75,676.58 248.1,671.77 257.52,665.05 263.29,656 311.94,579.6 244.57,322.18 299.29,250 309.08,237.08 324.74,229.38 \
+339.94,224.78"];
+ Otu -> Loan [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,238.71,676.56 e,606.28,222.37 247.38,671.47 253.59,667.32 259.3,662.21 263.29,656 308.07,586.32 243.78,346.48 299.29,285 309.31,\
+273.91 512.41,238.34 596.41,224.04",
+ style=dotted];
+ Otu -> ObservationMatrixRow [pos="e,606.59,747.92 240.02,681.72 289.13,674.2 388.95,663.37 470.29,683 517.6,694.42 566.63,722.14 598.17,742.41"];
+ Otu -> ObservationMatrixRowItem [pos="e,324.13,747.88 232.68,701.73 250.39,712.7 275.76,727.52 299.29,738 304.23,740.2 309.4,742.32 314.64,744.35"];
+ Otu -> PinboardItem [pos="e,587.57,133.26 238.81,676.62 248.16,671.8 257.57,665.09 263.29,656 318.47,568.27 230.36,268.39 299.29,191 308.54,180.61 485.49,\
+150.16 577.58,134.91"];
+ Otu -> RelatedBiologicalAssociation [pos="e,544.1,925.7 212.77,709.23 219.68,751.24 240.89,842.01 299.29,886 317.89,900.02 442.61,915.2 533.98,924.66"];
+ Otu -> RelatedOriginRelationship [pos="e,552.5,289.28 238.66,676.52 248,671.7 257.44,665 263.29,656 304.09,593.22 245.66,373.25 299.29,321 332.71,288.44 455.64,286.14 \
+542.37,288.93"];
+ Otu -> Role [pos="e,357.66,72.9 238.87,676.66 248.23,671.85 257.63,665.12 263.29,656 328.66,550.59 222.94,196.76 299.29,99 310.78,84.288 330.33,77.454 \
+347.74,74.337"];
+ Otu -> SubsequentCitation [pos="e,572.22,1256 210.44,709.1 213.5,797.96 229.48,1127.8 299.29,1199 317.55,1217.6 469.93,1241.6 562.11,1254.6"];
+ Otu -> VerifierRole [pos="e,343.26,21.178 238.9,676.68 248.26,671.87 257.66,665.14 263.29,656 334.64,540.21 215.88,152.43 299.29,45 307.64,34.24 320.31,27.692 \
+333.32,23.73"];
+ Otu -> Version [pos="e,355.55,128.91 238.84,676.63 248.19,671.82 257.6,665.1 263.29,656 322.12,561.93 232.99,246.97 299.29,158 310.16,143.42 328.51,135.48 \
+345.34,131.16"];
+ Otu -> Creator [dir=back,
+ pos="s,211.89,709.06 212.93,719.16 221.68,802.05 249.06,1019.9 299.29,1069 310.37,1079.8 526.84,1119.9 604.69,1134",
+ style=dashed];
+ Otu -> Project [dir=back,
+ pos="s,211.74,709.27 212.71,719.46 221.25,807.51 248.77,1048.1 299.29,1107 313.8,1123.9 338.21,1131.9 357.08,1135.7",
+ style=dashed];
+ Otu -> Updater [dir=back,
+ pos="s,212.37,709.36 213.65,719.57 223.57,797.63 252.53,992.11 299.29,1035 308.86,1043.8 747.62,1109.2 760.29,1112 782.54,1117 807.31,\
+1124.1 825.98,1129.8",
+ style=dashed];
+ Otu -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,210.57,709.28 e,585.69,1205.2 211.01,719.43 215.39,817.01 233.73,1104.9 299.29,1166 338.17,1202.2 491.06,1206.1 575.5,1205.3"];
+ AssertedDistribution -> GeographicAreasFromAssertedDistribution [pos="e,506.06,1008 449.59,1008 464,1008 479.84,1008 495.98,1008",
+ style=dotted];
+ BiologicalAssociation -> RelatedBiologicalAssociation [pos="e,543.95,940.81 453.47,947.78 478.24,945.87 506.8,943.67 533.72,941.6",
+ style=invis];
+ CollectionObject -> CollectingEvent [pos="e,803.93,511 688.07,511 720.03,511 760.67,511 793.88,511",
+ style=dotted];
+ CollectionObject -> Extract [pos="e,828.2,559.26 688.07,524.38 728.42,534.43 782.62,547.91 818.23,556.78",
+ style=dotted];
+ CollectingEvent -> GeographicAreasFromCollectingEvent [pos="e,987.83,475.07 908.45,496.02 922.62,491.99 938.02,487.72 952.29,484 960.62,481.83 969.31,479.63 978.02,477.48",
+ style=dotted];
+ CollectingEvent -> Georeference [pos="e,1022,511 908.29,511 939.73,511 980,511 1012,511",
+ style=dotted];
+ Observation -> Descriptor [pos="e,595.95,859 426.49,859 470.26,859 539.73,859 585.66,859",
+ style=dotted];
+ Observation -> ObservationMatrix [pos="e,796.29,784.04 426.34,848.73 449.63,843.04 479.5,836.11 506.29,831 618.41,809.62 648.72,817.1 760.29,793 768.81,791.16 777.7,788.98 \
+786.47,786.68",
+ style=invis];
+ Source -> SubsequentCitation [pos="e,572.27,1265.5 412.17,1269.4 447.67,1268.5 512.13,1266.9 562.15,1265.7",
+ style=invis];
+ Source -> OriginCitation [pos="e,585.58,1216.1 412.09,1262.7 436.49,1256 473.81,1245.7 506.29,1237 529.02,1230.9 554.09,1224.3 575.84,1218.6",
+ style=invis];
+ CitationTopic -> Topic [pos="e,357.66,1325 255.05,1325 283.85,1325 320.65,1325 347.53,1325",
+ style=dotted];
+ TaxonDetermination -> CollectionObject [pos="e,578.49,510.78 449.91,510.26 486.42,510.41 532,510.59 568.46,510.74",
+ style=dotted];
+ Content -> ContentTopic [pos="e,587.47,456 414.55,456 454.35,456 527.01,456 577.39,456",
+ style=dotted];
+ OriginRelationship -> DerivedExtract [pos="e,583.66,348 444.83,348 483.8,348 534.64,348 573.54,348",
+ style=dotted];
+ OriginRelationship -> DerivedSequence [pos="e,577.07,390.28 444.91,361.36 464.44,365.75 486.29,370.62 506.29,375 526.02,379.32 547.5,383.95 567.04,388.14",
+ style=dotted];
+ OriginRelationship -> RelatedOriginRelationship [pos="e,552.62,310.96 444.91,334.64 464.44,330.25 486.29,325.38 506.29,321 518.1,318.41 530.54,315.71 542.82,313.06",
+ style=invis];
+ Extract -> Sequence [pos="e,1032.7,566 884.55,566 919.65,566 981.08,566 1022.6,566",
+ style=dotted];
+ LoanItem -> Loan [pos="e,606.15,218 419.81,218 466.1,218 548.58,218 596.02,218",
+ style=dotted];
+ ObservationMatrixRow -> ObservationMatrix [pos="e,796.24,766 706.35,766 731.92,766 760.63,766 785.97,766",
+ style=dotted];
+ ObservationMatrixRowItem -> ObservationMatrixRow [pos="e,560.03,766 470.62,766 496.32,766 524.49,766 550.01,766",
+ style=invis];
+ Role -> Verifier [pos="e,604.6,48.033 412.17,69.111 456,64.31 543.98,54.673 594.43,49.147",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,798.25,1264 694.39,1264 723.31,1264 758.11,1264 787.93,1264",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,604.55,41.962 426.49,22.459 473.18,27.572 549.11,35.889 594.52,40.863",
+ style=dotted];
+ Version -> PinboardItem [pos="e,587.72,126 414.07,126 453.82,126 527.02,126 577.61,126",
+ style=invis];
+ Creator -> Updater [pos="e,825.99,1139 661.83,1139 700.61,1139 771.51,1139 815.86,1139",
+ style=invis];
+ Project -> Creator [pos="e,604.72,1139 412.64,1139 456.67,1139 544.36,1139 594.6,1139",
+ style=invis];
+}
diff --git a/data/people_model_er.dot b/data/people_model_er.dot
new file mode 100644
index 00000000..51aa7e8a
--- /dev/null
+++ b/data/people_model_er.dot
@@ -0,0 +1,497 @@
+digraph Person {
+ graph [bb="0,0,980.39,802",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="63.694,522",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="63.694,468",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="63.694,306",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="63.694,414",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="63.694,252",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="63.694,360",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ CollectingEvent [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collecting-event",
+ label=CollectingEvent,
+ pos="614.89,675",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="785.89,675",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="614.89,219",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ Person [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#person",
+ label=Person,
+ pos="238.89,389",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.1468];
+ AlternateValueLanguage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-language",
+ label=AlternateValueLanguage,
+ pos="238.89,522",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0972];
+ AuthorRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#author-role",
+ label=AuthorRole,
+ pos="424.39,784",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1111];
+ AuthoredSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#authored-source",
+ label=AuthoredSource,
+ pos="614.89,784",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4583];
+ TaxonNameAuthorRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-name-author-role",
+ label=TaxonNameAuthorRole,
+ pos="424.39,730",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0556];
+ AuthoredTaxonName [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#authored-taxon-name",
+ label=AuthoredTaxonName,
+ pos="614.89,730",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.875];
+ CollectorRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#collector-role",
+ label=CollectorRole,
+ pos="424.39,675",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ DeterminerRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#determiner-role",
+ label=DeterminerRole,
+ pos="424.39,620",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ DwcOccurrence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#dwc-occurrence",
+ label=DwcOccurrence,
+ pos="928.39,675",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ EditorRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#editor-role",
+ label=EditorRole,
+ pos="424.39,566",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0556];
+ EditedSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#edited-source",
+ label=EditedSource,
+ pos="614.89,566",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2361];
+ GeoreferencerRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#georeferencer-role",
+ label=GeoreferencerRole,
+ pos="424.39,512",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6528];
+ Georeference [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#georeference",
+ label=Georeference,
+ pos="614.89,512",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2361];
+ SourceRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#source-role",
+ label=SourceRole,
+ pos="424.39,458",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1111];
+ HumanSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#human-source",
+ label=HumanSource,
+ pos="614.89,458",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="238.89,306",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="238.89,252",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ OriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-relationship",
+ label=OriginRelationship,
+ pos="424.39,366",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="614.89,274",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ RelatedOriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-origin-relationship",
+ label=RelatedOriginRelationship,
+ pos="614.89,366",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2361];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="424.39,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ TaxonDetermination [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-determination",
+ label=TaxonDetermination,
+ pos="614.89,620",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8056];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="424.39,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="614.89,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="424.39,274",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="424.39,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="614.89,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ User [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#user",
+ label=User,
+ pos="424.39,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ AlternateValue -> AlternateValueLanguage [pos="e,163.14,522 127.71,522 135.98,522 144.57,522 153.13,522",
+ style=dotted];
+ Depiction -> Image [pos="e,211.74,306 109.3,306 137.96,306 174.73,306 201.61,306",
+ style=dotted];
+ Tag -> Keyword [pos="e,205.11,252 90.999,252 118.58,252 162.36,252 194.96,252",
+ style=dotted];
+ CollectingEvent -> CollectionObject [pos="e,731.26,675 667.05,675 684.03,675 703.14,675 720.95,675",
+ style=dotted];
+ CollectionObject -> DwcOccurrence [pos="e,876.34,675 840.41,675 848.88,675 857.7,675 866.32,675",
+ style=dotted];
+ Person -> AlternateValue [pos="e,103.62,507.81 220.16,410.05 199.71,433.28 164.16,470.61 127.39,495 122.82,498.03 117.86,500.85 112.79,503.43"];
+ Person -> DataAttribute [pos="e,98.95,453.49 207.06,403.84 184.96,414.4 154.45,428.81 127.39,441 121.22,443.78 114.68,446.66 108.25,449.47"];
+ Person -> Depiction [pos="e,95.797,318.94 208.59,373.52 186.46,361.99 155.24,346.04 127.39,333 120.22,329.64 112.52,326.2 105.06,322.94"];
+ Person -> Identifier [pos="e,104.43,408.26 197.74,394.8 172.97,398.37 141.01,402.98 114.61,406.79"];
+ Person -> Tag [pos="e,88.81,258.73 211.31,372.29 196.24,362.05 177.61,348.05 163.39,333 143.58,312.04 149.55,297.47 127.39,279 118.9,271.93 108.28,266.43 \
+98.212,262.29"];
+ Person -> Note [pos="e,90.999,364.4 197.79,382.29 168.53,377.39 129.2,370.8 100.89,366.06"];
+ Person -> AuthorRole [pos="e,384.15,777.76 258.9,409.55 276.37,429.71 301.47,462.13 314.39,495 357.39,604.39 276.8,665.35 350.39,757 356.67,764.82 365.45,770.38 \
+374.75,774.33"];
+ Person -> TaxonNameAuthorRole [pos="e,361.19,711.87 258.64,409.66 275.92,429.89 300.88,462.37 314.39,495 350.1,581.28 291.07,629.88 350.39,702 351.36,703.18 352.38,\
+704.31 353.46,705.39"];
+ Person -> CollectorRole [pos="e,378.21,665.39 258.2,409.85 275.17,430.22 299.91,462.79 314.39,495 342.86,558.32 304.69,594.74 350.39,647 355.54,652.89 362.07,\
+657.55 369.11,661.23"];
+ Person -> DeterminerRole [pos="e,372.1,607.55 257.35,410.26 273.7,430.93 298.01,463.71 314.39,495 335.91,536.11 317.61,560.15 350.39,593 354.11,596.73 358.39,599.95 \
+362.98,602.73"];
+ Person -> EditorRole [pos="e,386.38,556.94 255.26,411.3 282.61,450.79 338.05,529.71 350.39,539 358.24,544.91 367.53,549.64 376.79,553.39"];
+ Person -> GeoreferencerRole [pos="e,367.79,493.87 258.93,409.44 279.7,430.74 314.75,463.89 350.39,485 353.04,486.57 355.79,488.07 358.61,489.51"];
+ Person -> SourceRole [pos="e,384.26,443.29 274.4,401.98 302.72,412.63 343.16,427.83 374.76,439.71"];
+ Person -> OriginRelationship [pos="e,364.05,373.44 280.16,383.95 301.76,381.24 329,377.83 353.91,374.71"];
+ Person -> PinboardItem [pos="e,569.36,284.51 269.77,373.68 291.66,362.9 322.33,348.72 350.39,339 370.04,332.19 487.93,303.86 559.2,286.92"];
+ Person -> RelatedOriginRelationship [pos="e,548.38,384.06 280.35,392.87 331.37,397 421.7,401.84 498.39,393 511.43,391.5 525.14,389.07 538.37,386.27"];
+ Person -> Role [pos="e,397.29,223.04 267.96,373.03 283.33,363.13 301.77,349.22 314.39,333 339.84,300.3 320.82,276.03 350.39,247 360.55,237.03 374.56,\
+230.36 387.59,225.97"];
+ Person -> VerifierRole [pos="e,382.51,171.53 269.27,373.47 284.87,363.8 303.09,349.97 314.39,333 350.46,278.8 306.85,239.41 350.39,191 356.56,184.14 364.63,179.02 \
+373.16,175.19"];
+ Person -> Version [pos="e,395.26,284.55 263.71,371.08 296.02,346.78 349.81,306.34 350.39,306 361.5,299.51 374.16,293.51 385.79,288.51"];
+ Person -> Creator [dir=back,
+ pos="s,269.89,373.86 278.57,368.3 291.97,359.22 305.77,347.34 314.39,333 367.45,244.69 287.48,185.59 350.39,104 361.37,89.753 380.03,\
+81.724 395.73,77.271",
+ style=dashed];
+ Person -> Updater [dir=back,
+ pos="s,269.71,373.76 278.38,368.18 291.75,359.09 305.59,347.22 314.39,333 360.98,257.68 289.67,201.48 350.39,137 354.48,132.66 516.97,\
+94.514 584.71,78.761",
+ style=dashed];
+ Person -> User [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,270.1,373.99 e,397.12,20.885 278.82,368.45 292.24,359.38 306,347.47 314.39,333 379.08,221.4 270.24,146.07 350.39,45 359.35,33.694 \
+373.54,27.122 387.03,23.303"];
+ AuthorRole -> AuthoredSource [pos="e,562.35,784 464.45,784 489.82,784 523.42,784 552.34,784",
+ style=dotted];
+ TaxonNameAuthorRole -> AuthoredTaxonName [pos="e,547.25,730 498.54,730 511.19,730 524.39,730 537.14,730",
+ style=dotted];
+ CollectorRole -> CollectingEvent [pos="e,562.79,675 470.54,675 495.17,675 526,675 552.75,675",
+ style=dotted];
+ DeterminerRole -> TaxonDetermination [pos="e,549.68,620 476.4,620 495.8,620 518.31,620 539.44,620",
+ style=dotted];
+ EditorRole -> EditedSource [pos="e,570.11,566 462.63,566 490.39,566 528.73,566 559.85,566",
+ style=dotted];
+ GeoreferencerRole -> Georeference [pos="e,570.29,512 484,512 508.29,512 536.28,512 560.04,512",
+ style=dotted];
+ SourceRole -> HumanSource [pos="e,567.22,458 464.45,458 491.17,458 527.03,458 556.92,458",
+ style=dotted];
+ OriginRelationship -> RelatedOriginRelationship [pos="e,534.24,366 484.51,366 497.08,366 510.61,366 524.02,366",
+ style=invis];
+ Role -> Source [pos="e,587.6,218.86 451.6,218.14 484.28,218.31 540.35,218.61 577.27,218.81",
+ style=dotted];
+ Role -> Verifier [pos="e,586.37,171.88 451.6,210.49 484.06,201.19 539.56,185.29 576.48,174.72",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,586.17,164 466.29,164 498.88,164 544.16,164 575.95,164",
+ style=dotted];
+ Version -> PinboardItem [pos="e,569.33,274 453.61,274 481.35,274 524.42,274 558.93,274",
+ style=invis];
+ Creator -> Updater [pos="e,584.72,72 453.2,72 485.27,72 538.2,72 574.5,72",
+ style=invis];
+}
diff --git a/data/preparation_types_model_er.dot b/data/preparation_types_model_er.dot
new file mode 100644
index 00000000..57f9bd4b
--- /dev/null
+++ b/data/preparation_types_model_er.dot
@@ -0,0 +1,160 @@
+digraph PreparationType {
+ graph [bb="0,0,520.55,312.18",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="27,175.68",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph core {
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="339.05,293.68",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ }
+ subgraph supporting {
+ PreparationType [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#preparation-type",
+ label=PreparationType,
+ pos="169.27,146.68",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.202];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="169.27,204.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="475.05,200.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="339.05,146.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="339.05,92.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="475.05,119.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="339.05,200.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="339.05,38.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="475.05,38.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Tag -> Keyword [pos="e,135.75,197.96 53.078,180.86 73.282,185.04 102.14,191.01 125.91,195.92",
+ style=dotted];
+ PreparationType -> Tag [pos="e,53.078,170.5 102.48,160.28 88.877,163.09 75.061,165.95 63.081,168.43"];
+ PreparationType -> CollectionObject [pos="e,301.73,275.5 226.58,162.64 234.6,166.64 242.25,171.58 248.55,177.68 277.43,205.65 258.23,230.28 284.55,260.68 287.28,263.84 290.39,\
+266.78 293.7,269.52"];
+ PreparationType -> PinboardItem [pos="e,435.91,218.71 224.27,163.32 232.86,167.27 241.28,172.02 248.55,177.68 270.15,194.51 260.18,215.2 284.55,227.68 328.95,250.42 386.44,\
+237.21 426.4,222.39"];
+ PreparationType -> Role [pos="e,311.73,146.68 248.76,146.68 267.19,146.68 285.97,146.68 301.52,146.68"];
+ PreparationType -> VerifierRole [pos="e,297.32,105.79 222.9,129.74 243.54,123.1 267.14,115.5 287.57,108.93"];
+ PreparationType -> Version [pos="e,310,191.65 222.9,163.62 248.01,171.7 277.49,181.19 300.33,188.54"];
+ PreparationType -> Creator [dir=back,
+ pos="s,199.06,124.46 207.12,118.44 229.06,102.17 257.76,81.808 284.55,65.68 292.75,60.742 301.96,55.866 310.41,51.646",
+ style=dashed];
+ PreparationType -> Updater [dir=back,
+ pos="s,181.11,124.46 186.14,115.28 204.69,82.481 238.78,32.901 284.55,11.68 337.31,-12.784 406.49,8.8158 444.98,24.934",
+ style=dashed];
+ Role -> Verifier [pos="e,446.11,125.31 366.2,141.41 386.15,137.39 413.91,131.8 436.27,127.29",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,446.35,114.1 380.62,100.85 398.39,104.43 419.12,108.61 436.53,112.12",
+ style=dotted];
+ Version -> PinboardItem [pos="e,429.38,200.68 368.14,200.68 382.96,200.68 401.66,200.68 419.22,200.68",
+ style=invis];
+ Creator -> Updater [pos="e,444.93,38.68 367.81,38.68 387.18,38.68 413.3,38.68 434.8,38.68",
+ style=invis];
+}
diff --git a/data/project_members_model_er.dot b/data/project_members_model_er.dot
new file mode 100644
index 00000000..0a21a18e
--- /dev/null
+++ b/data/project_members_model_er.dot
@@ -0,0 +1,138 @@
+digraph ProjectMember {
+ graph [bb="0,0,467.51,328",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ ProjectMember [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#project-member",
+ label=ProjectMember,
+ pos="75.756,156",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.1043];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="233.01,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="233.01,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="233.01,202",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="343.01,229",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="343.01,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="233.01,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="437.51,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ User [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#user",
+ label=User,
+ pos="233.01,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ ProjectMember -> PinboardItem [pos="e,199.59,291.97 92.619,178.05 112.68,204.95 149.23,250.79 187.51,283 188.68,283.98 189.89,284.95 191.12,285.91"];
+ ProjectMember -> Role [pos="e,205.56,240.17 108.54,177.4 130.57,192.12 160.65,212.01 187.51,229 190.51,230.89 193.62,232.84 196.76,234.78"];
+ ProjectMember -> VerifierRole [pos="e,191.46,189.99 130.62,171.96 147.16,176.86 165.29,182.23 181.58,187.06"];
+ ProjectMember -> Creator [dir=back,
+ pos="s,151.47,154.44 161.57,153.82 198,151.39 240.79,146.55 278.51,137 290.59,133.94 303.33,128.91 314.21,124.02",
+ style=dashed];
+ ProjectMember -> Project [dir=back,
+ pos="s,130.62,140.04 140.23,137.19 162.95,130.46 187.33,123.24 205.26,117.93",
+ style=dashed];
+ ProjectMember -> Updater [dir=back,
+ pos="s,100.98,133.92 108.85,127.51 129.68,110.99 158.3,91.761 187.51,83 265.84,59.508 291.31,67.006 371.51,83 383.62,85.414 396.29,90.126 \
+407.19,94.947",
+ style=dashed];
+ ProjectMember -> User [dir=back,
+ pos="s,97.984,133.94 105.28,126.55 127.06,104.6 158.22,74.349 187.51,50 193.22,45.256 199.58,40.432 205.67,36.017",
+ style=dashed];
+ Role -> Verifier [pos="e,314.22,235.95 260.16,249.46 273.45,246.14 289.83,242.04 304.45,238.39",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,314.38,222.09 274.53,212.13 284.4,214.6 294.9,217.22 304.61,219.65",
+ style=dotted];
+ Creator -> Updater [pos="e,407.35,110 371.52,110 379.54,110 388.47,110 397.09,110",
+ style=invis];
+ Project -> Creator [pos="e,314.5,110 260.71,110 273.88,110 289.99,110 304.38,110",
+ style=invis];
+}
diff --git a/data/project_sources_model_er.dot b/data/project_sources_model_er.dot
new file mode 100644
index 00000000..08ee3fc1
--- /dev/null
+++ b/data/project_sources_model_er.dot
@@ -0,0 +1,138 @@
+digraph ProjectSource {
+ graph [bb="0,0,453.44,319.92",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="218.94,301.42",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ ProjectSource [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#project-source",
+ label=ProjectSource,
+ pos="68.721,138.42",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.9089];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="218.94,246.42",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="218.94,192.42",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="218.94,138.42",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="328.94,165.42",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="328.94,46.424",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="218.94,46.424",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="423.44,46.424",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ ProjectSource -> Source [dir=back,
+ pos="s,83.125,160.45 88.617,168.98 107.62,198.1 138.98,242.04 173.44,273.42 178.98,278.46 185.53,283.15 191.88,287.19",
+ style=dashed];
+ ProjectSource -> PinboardItem [pos="e,187,228.3 96.361,160.64 116.93,177.44 146.37,200.73 173.44,219.42 175.06,220.54 176.72,221.66 178.41,222.78"];
+ ProjectSource -> Role [pos="e,191.75,182.88 115.81,155.21 137.18,163 162.2,172.12 182.13,179.38"];
+ ProjectSource -> VerifierRole [pos="e,177.39,138.42 137.76,138.42 147.71,138.42 157.8,138.42 167.32,138.42"];
+ ProjectSource -> Creator [dir=back,
+ pos="s,119.73,122.94 129.3,119.9 168.07,107.51 219.58,90.417 264.44,73.424 276.32,68.926 289.25,63.523 300.32,58.737",
+ style=dashed];
+ ProjectSource -> Project [dir=back,
+ pos="s,102.62,118.01 111.36,112.58 136.9,96.729 168.85,76.895 191.08,63.098",
+ style=dashed];
+ ProjectSource -> Updater [dir=back,
+ pos="s,81.19,116.19 86.385,107.29 103.79,78.435 134.05,37.344 173.44,19.424 247.88,-14.44 277.24,3.4298 357.44,19.424 369.55,21.838 382.22,\
+26.55 393.12,31.37",
+ style=dashed];
+ Role -> Verifier [pos="e,300.15,172.37 246.09,185.89 259.38,182.57 275.76,178.47 290.38,174.82",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,300.31,158.52 260.47,148.55 270.33,151.02 280.83,153.65 290.54,156.07",
+ style=dotted];
+ Creator -> Updater [pos="e,393.28,46.424 357.45,46.424 365.47,46.424 374.41,46.424 383.02,46.424",
+ style=invis];
+ Project -> Creator [pos="e,300.43,46.424 246.64,46.424 259.81,46.424 275.92,46.424 290.31,46.424",
+ style=invis];
+}
diff --git a/data/protocol_relationships_model_er.dot b/data/protocol_relationships_model_er.dot
new file mode 100644
index 00000000..e81dee02
--- /dev/null
+++ b/data/protocol_relationships_model_er.dot
@@ -0,0 +1,153 @@
+digraph ProtocolRelationship {
+ graph [bb="0,0,729.52,382",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ ProtocolRelationship [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#protocol-relationship",
+ label=ProtocolRelationship,
+ pos="96.158,187",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.671];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="384.42,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="384.42,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="384.42,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="605.02,283",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="605.02,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="384.42,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Protocol [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#protocol",
+ label=Protocol,
+ pos="384.42,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.86111];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="699.52,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ ProtocolRelationship -> PinboardItem [pos="e,338.66,364.02 109.61,209.06 129.83,242.65 173.14,305.97 228.32,337 258.71,354.09 297.33,360.86 328.43,363.34"];
+ ProtocolRelationship -> Role [pos="e,357.14,309.06 120.21,209.09 144.9,231.42 186.25,265.11 228.32,283 266.73,299.34 314.52,305.79 346.82,308.34"];
+ ProtocolRelationship -> VerifierRole [pos="e,342.74,248.43 156.66,204.76 179.04,211.18 204.75,218.25 228.32,224 262.99,232.46 302.39,240.57 332.8,246.51"];
+ ProtocolRelationship -> Creator [dir=back,
+ pos="s,192.42,190.25 202.63,190.5 211.32,190.7 219.97,190.87 228.32,191 367.06,193.12 404.56,218.71 540.52,191 552.73,188.51 565.5,183.59 \
+576.35,178.62",
+ style=dashed];
+ ProtocolRelationship -> Project [dir=back,
+ pos="s,192.48,179.34 202.74,178.52 258.25,174.06 321.86,168.95 356.85,166.13",
+ style=dashed];
+ ProtocolRelationship -> Protocol [dir=back,
+ pos="s,143.78,166.72 153.34,162.86 176.26,153.73 203.23,143.9 228.32,137 271.01,125.26 321.78,117.57 353.31,113.5",
+ style=dashed];
+ ProtocolRelationship -> Updater [dir=back,
+ pos="s,116.24,164.73 123.3,157.22 147.6,131.99 186.28,97.642 228.32,83 359.35,37.353 405.64,50.44 540.52,83 590.71,95.116 642.86,126.05 \
+672.92,146",
+ style=dashed];
+ "Objects with Protocol relationships" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with protocol relationship",
+ label="Objects with Protocol relationships",
+ pos="384.42,18",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=4.3362];
+ ProtocolRelationship -> "Objects with Protocol relationships" [dir=back,
+ pos="s,111.8,164.76 117.85,156.28 140.94,124.51 181.31,76.007 228.32,50 244.31,41.149 262.47,34.737 280.57,30.094",
+ style=dashed];
+ Role -> Verifier [pos="e,576.18,286.44 411.79,306.74 450.26,301.99 522,293.13 566.13,287.68",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,576.44,279.59 426.02,261.02 466.26,265.98 527.38,273.53 566.51,278.37",
+ style=dotted];
+ Creator -> Updater [pos="e,669.35,164 633.52,164 641.55,164 650.48,164 659.09,164",
+ style=invis];
+ Project -> Creator [pos="e,576.3,164 412.22,164 450.85,164 522.35,164 566.3,164",
+ style=invis];
+}
diff --git a/data/protocols_model_er.dot b/data/protocols_model_er.dot
new file mode 100644
index 00000000..18cd3048
--- /dev/null
+++ b/data/protocols_model_er.dot
@@ -0,0 +1,261 @@
+digraph Protocol {
+ graph [bb="0,0,748.52,514",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="85.142,441",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ ProtocolRelationship [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#protocol-relationship",
+ label=ProtocolRelationship,
+ pos="85.142,272",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=2.3651];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="388.02,441",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ Protocol [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#protocol",
+ label=Protocol,
+ pos="253.9,272",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.3227];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="253.9,496",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ Documentation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#documentation",
+ label=Documentation,
+ pos="388.02,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4028];
+ Document [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#document",
+ label=Document,
+ pos="535.52,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="388.02,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="388.02,272",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="535.52,375",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="690.52,375",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="388.02,496",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="388.02,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="535.52,245",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="535.52,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="388.02,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="690.52,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="535.52,435",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,360.7,441 124.25,441 182.6,441 293.35,441 350.64,441",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,207.83,481.13 117.51,451.35 140.2,458.83 171.44,469.13 198.19,477.96",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,494.74,393.04 415.03,429.2 434.59,420.33 461.96,407.92 485.57,397.2",
+ style=invis];
+ Source -> OriginCitation [pos="e,487.85,436.92 415.03,439.93 432.46,439.21 456.1,438.23 477.75,437.34",
+ style=invis];
+ Protocol -> Citation [pos="e,102.13,424.8 232.05,293.13 200.81,324.79 142.06,384.34 109.44,417.39"];
+ Protocol -> ProtocolRelationship [pos="e,170.5,272 206.19,272 198.08,272 189.4,272 180.54,272"];
+ Protocol -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,264.66,294.24 e,360.97,426.66 269.13,303.62 283.44,333.01 307.63,376.83 337.52,408 341.97,412.65 347.2,416.99 352.55,420.9",
+ style=dotted];
+ Protocol -> Documentation [pos="e,347.18,36.163 257.71,249.7 264.27,205.75 284.33,106.85 337.52,45 338.13,44.286 338.77,43.587 339.43,42.903"];
+ Protocol -> PinboardItem [pos="e,347.99,90.1 260.67,249.77 270.88,214.14 295.17,143.7 337.52,99 338.29,98.183 339.1,97.385 339.93,96.605"];
+ Protocol -> Role [pos="e,360.97,272 301.85,272 318,272 335.82,272 350.97,272"];
+ Protocol -> SubsequentCitation [pos="e,474.32,368.42 277.5,292.4 293.26,305.58 315.36,322.06 337.52,332 377.54,349.95 425.58,360.63 464.2,366.85"];
+ Protocol -> VerifierRole [pos="e,346.3,234.64 291,257.24 305.18,251.45 321.68,244.7 336.97,238.46"];
+ Protocol -> Creator [dir=back,
+ pos="s,272.43,249.9 279.01,242.35 294.24,225.28 315.2,204.59 337.52,191 366.51,173.34 459.61,146.45 506.7,133.49",
+ style=dashed];
+ Protocol -> Project [dir=back,
+ pos="s,267.44,249.99 272.84,241.14 288.01,216.73 311.41,182.75 337.52,158 344.35,151.52 352.66,145.57 360.51,140.6",
+ style=dashed];
+ Protocol -> Updater [dir=back,
+ pos="s,291.3,286.64 300.91,289.87 312.67,293.65 325.41,297.07 337.52,299 451.81,317.2 500.12,336.05 596.52,272 643.83,240.57 671.97,175.97 \
+683.46,144.31",
+ style=dashed];
+ Protocol -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,270.66,294.13 e,487.87,424.05 276.98,302.22 292.19,321.25 313.88,345.14 337.52,361 380.68,389.96 436.71,409.59 477.98,421.31"];
+ CitationTopic -> Topic [pos="e,360.98,496 300,496 316.52,496 334.99,496 350.65,496",
+ style=dotted];
+ Documentation -> Document [pos="e,498.39,18 438.68,18 454.76,18 472.51,18 488.32,18",
+ style=dotted];
+ Role -> Verifier [pos="e,507,250.11 415.03,267.17 437.8,262.95 471.17,256.75 496.87,251.99",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,632.16,375 596.55,375 604.88,375 613.49,375 621.95,375",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,506.63,239.83 429.55,225.52 450.55,229.42 476.05,234.15 496.65,237.97",
+ style=dotted];
+ Creator -> Updater [pos="e,660.46,126 564.23,126 588.25,126 623.29,126 650.21,126",
+ style=invis];
+ Project -> Creator [pos="e,507.01,126 415.7,126 438.49,126 471.52,126 496.97,126",
+ style=invis];
+}
diff --git a/data/ranged_lot_categories_model_er.dot b/data/ranged_lot_categories_model_er.dot
new file mode 100644
index 00000000..a5441dec
--- /dev/null
+++ b/data/ranged_lot_categories_model_er.dot
@@ -0,0 +1,136 @@
+digraph RangedLotCategory {
+ graph [bb="0,0,501.28,317.11",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ RangedLotCategory [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#ranged-lot-category",
+ label=RangedLotCategory,
+ pos="92.64,137.11",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.5733];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="266.78,299.11",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ RangedLot [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#ranged-lot",
+ label=RangedLot,
+ pos="266.78,245.11",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0694];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="266.78,191.11",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="266.78,137.11",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="376.78,164.11",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="376.78,45.109",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="266.78,45.109",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="471.28,45.109",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ RangedLotCategory -> PinboardItem [pos="e,233.48,280.93 111.5,159.42 134.84,187.72 177.87,237.05 221.28,272.11 222.47,273.07 223.69,274.02 224.94,274.95"];
+ RangedLotCategory -> RangedLot [pos="e,235.57,226.89 127.92,159.13 153.55,175.52 189.5,198.39 221.28,218.11 223.15,219.27 225.07,220.46 227.01,221.65"];
+ RangedLotCategory -> Role [pos="e,239.36,182.82 150.48,154.94 176.59,163.13 206.76,172.59 229.69,179.79"];
+ RangedLotCategory -> VerifierRole [pos="e,225.24,137.11 185.51,137.11 195.63,137.11 205.65,137.11 215,137.11"];
+ RangedLotCategory -> Creator [dir=back,
+ pos="s,156.45,120.47 166.24,117.75 209.11,105.77 264.23,89.404 312.28,72.109 324.23,67.808 337.17,62.44 348.23,57.626",
+ style=dashed];
+ RangedLotCategory -> Project [dir=back,
+ pos="s,133.57,115.77 142.6,110.94 173.98,94.171 213.5,73.049 239.19,59.32",
+ style=dashed];
+ RangedLotCategory -> Updater [dir=back,
+ pos="s,109.07,114.74 115.31,106.56 137.94,77.537 176.38,35.792 221.28,18.109 297.37,-11.859 325.08,2.1148 405.28,18.109 417.38,20.523 \
+430.05,25.235 440.96,30.055",
+ style=dashed];
+ Role -> Verifier [pos="e,347.99,171.06 293.92,184.57 307.21,181.25 323.6,177.15 338.22,173.5",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,348.15,157.2 308.3,147.24 318.16,149.71 328.67,152.33 338.38,154.76",
+ style=dotted];
+ Creator -> Updater [pos="e,441.11,45.109 405.28,45.109 413.31,45.109 422.24,45.109 430.85,45.109",
+ style=invis];
+ Project -> Creator [pos="e,348.26,45.109 294.48,45.109 307.65,45.109 323.76,45.109 338.15,45.109",
+ style=invis];
+}
diff --git a/data/repositories_model_er.dot b/data/repositories_model_er.dot
new file mode 100644
index 00000000..2b17dbd3
--- /dev/null
+++ b/data/repositories_model_er.dot
@@ -0,0 +1,244 @@
+digraph Repository {
+ graph [bb="0,0,555.39,332.5",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="63.694,288",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="63.694,234",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="63.694,180",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="63.694,126",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="63.694,18",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="63.694,72",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="404.89,314",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ }
+ subgraph supporting {
+ Repository [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#repository",
+ label=Repository,
+ pos="238.89,151",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.5963];
+ AlternateValueLanguage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-language",
+ label=AlternateValueLanguage,
+ pos="238.89,288",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0972];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="238.89,234",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Extract [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#extract",
+ label=Extract,
+ pos="404.89,259",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.77778];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="238.89,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="404.89,205",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="404.89,97",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="404.89,151",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="525.39,124",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="404.89,43",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="525.39,43",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ AlternateValue -> AlternateValueLanguage [pos="e,163.14,288 127.71,288 135.98,288 144.57,288 153.13,288",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,184.28,234 114.79,234 133.34,234 154.62,234 174.21,234",
+ style=dotted];
+ Tag -> Keyword [pos="e,205.11,18 90.999,18 118.58,18 162.36,18 194.96,18",
+ style=dotted];
+ Repository -> AlternateValue [pos="e,105.8,274.36 207.71,170.18 193.36,180.14 176.5,193.12 163.39,207 143.58,227.96 149.55,242.53 127.39,261 123.6,264.15 119.4,266.99 \
+115,269.54"];
+ Repository -> Confidence [pos="e,97.406,220.37 203.82,168.96 182.11,180.23 153.29,194.87 127.39,207 120.75,210.11 113.65,213.29 106.72,216.33"];
+ Repository -> DataAttribute [pos="e,116.19,171.38 181.45,160.45 163.81,163.4 144.26,166.68 126.28,169.69"];
+ Repository -> Identifier [pos="e,104.43,131.74 181.27,142.83 159.69,139.71 135.27,136.19 114.37,133.17"];
+ Repository -> Tag [pos="e,88.34,25.88 219.03,128.68 198.42,105.38 163.5,68.95 127.39,45 118.35,39.006 107.77,33.848 97.893,29.694"];
+ Repository -> Note [pos="e,87.409,81.567 201.7,133.6 180.19,123.35 152.33,110.23 127.39,99 117.5,94.546 106.67,89.827 96.839,85.601"];
+ Repository -> CollectionObject [pos="e,362.18,295.82 271.81,169.8 286.23,179.5 302.63,192.37 314.39,207 338.56,237.08 323.86,257.98 350.39,286 351.58,287.26 352.84,288.47 \
+354.15,289.63"];
+ Repository -> Extract [pos="e,376.75,246.39 267,171.67 294.08,192.17 333.96,221.93 350.39,232 355.86,235.35 361.8,238.66 367.67,241.75"];
+ Repository -> PinboardItem [pos="e,359.19,190.28 284.27,165.61 304.42,172.25 328.45,180.16 349.66,187.15"];
+ Repository -> Role [pos="e,377.42,105.71 284.27,136.39 310.45,127.77 343.16,117 367.76,108.9"];
+ Repository -> VerifierRole [pos="e,363.14,151 296.33,151 314.77,151 335.13,151 353.13,151"];
+ Repository -> Creator [dir=back,
+ pos="s,265.83,130.09 273.93,123.78 295.28,107.29 323.71,86.353 350.39,70 358.55,64.997 367.75,60.103 376.2,55.886",
+ style=dashed];
+ Repository -> Updater [dir=back,
+ pos="s,254.45,128.94 260.08,120.66 284.96,84.389 326.82,27.165 350.39,16 397.63,-6.3807 459.4,13.185 495.2,28.645",
+ style=dashed];
+ Role -> Verifier [pos="e,496.79,117.71 431.89,102.93 448.03,106.6 469.03,111.39 486.94,115.47",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,496.59,130.33 446.67,141.71 459.67,138.75 473.98,135.49 486.74,132.58",
+ style=dotted];
+ Creator -> Updater [pos="e,495.13,43 433.67,43 448.97,43 468.2,43 485.02,43",
+ style=invis];
+}
diff --git a/data/roles_model_er.dot b/data/roles_model_er.dot
new file mode 100644
index 00000000..d6e279b4
--- /dev/null
+++ b/data/roles_model_er.dot
@@ -0,0 +1,140 @@
+digraph Role {
+ graph [bb="0,0,379.21,382",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ Role [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="33.547,191",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=0.93185];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="193.15,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="193.15,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="349.21,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="193.15,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Organization [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#organization",
+ label=Organization,
+ pos="193.15,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2083];
+ Person [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#person",
+ label=Person,
+ pos="193.15,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="349.21,218",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Role -> Role [pos="e,59.006,206.19 8.0877,206.19 -2.0959,218.4 6.3904,231 33.547,231 53.702,231 63.573,224.06 63.159,215.49"];
+ Role -> PinboardItem [pos="e,147.32,358.03 39.004,213.24 46.57,245.24 64.972,304.03 103.09,337 112.83,345.42 125.14,351.22 137.47,355.21"];
+ Role -> VerifierRole [pos="e,151.26,300.54 47.077,213.19 59.14,232.72 79.065,260.69 103.09,278 114.57,286.27 128.4,292.59 141.71,297.35"];
+ Role -> Verifier [pos="e,320.48,297.14 53.025,209.46 65.985,221.36 84.294,236.2 103.09,245 177.2,279.67 205.07,258.76 283.21,283 292.38,285.84 302.05,289.49 \
+311.04,293.17",
+ style=invis];
+ Role -> Creator [dir=back,
+ pos="s,67.203,196.59 77.059,198.28 104.86,203.04 140.36,209.13 164.53,213.27",
+ style=dashed];
+ Role -> Organization [dir=back,
+ pos="s,67.203,185.41 77.11,183.71 99.516,179.87 126.92,175.18 149.36,171.33",
+ style=dashed];
+ Role -> Person [dir=back,
+ pos="s,53.569,172.81 61.421,166 73.451,155.86 88.251,144.74 103.09,137 123,126.61 147.55,119.55 165.83,115.26",
+ style=dashed];
+ Role -> Updater [dir=back,
+ pos="s,41.356,168.78 44.904,159.42 55.202,133.71 73.757,99.127 103.09,83 173.24,44.436 215.43,40.407 283.21,83 324.62,109.02 340.26,169.63 \
+345.65,199.99",
+ style=dashed];
+ "Objects with Roles" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with role",
+ label="Objects with Roles",
+ pos="193.15,18",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=2.5016];
+ Role -> "Objects with Roles" [dir=back,
+ pos="s,39.65,168.98 42.376,159.3 51.765,127.54 70.472,79.289 103.09,50 112.26,41.768 123.7,35.613 135.3,31.024",
+ style=dashed];
+ VerifierRole -> Verifier [pos="e,320.3,310 235.03,310 258.38,310 287.45,310 310.29,310",
+ style=dotted];
+ Creator -> Updater [pos="e,319.07,218 221.69,218 246.02,218 281.77,218 309.07,218",
+ style=invis];
+}
diff --git a/data/sequence_relationships_model_er.dot b/data/sequence_relationships_model_er.dot
new file mode 100644
index 00000000..38c793a3
--- /dev/null
+++ b/data/sequence_relationships_model_er.dot
@@ -0,0 +1,203 @@
+digraph SequenceRelationship {
+ graph [bb="0,0,656.55,373.38",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="42.896,231.38",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="42.896,121.38",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="42.896,177.38",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ SequenceRelationship [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#sequence-relationship",
+ label=SequenceRelationship,
+ pos="222.17,178.38",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.7883];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="222.17,120.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="413.05,355.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="413.05,301.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="413.05,247.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="532.05,274.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="532.05,101.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ ObjectSequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#object-sequence",
+ label=ObjectSequence,
+ pos="413.05,155.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="413.05,101.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ SubjectSequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subject-sequence",
+ label=SubjectSequence,
+ pos="413.05,47.376",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="626.55,101.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Tag -> Keyword [pos="e,188.58,120.56 70.054,121.23 98.595,121.07 144.72,120.81 178.52,120.62",
+ style=dotted];
+ SequenceRelationship -> Identifier [pos="e,78.497,221.03 160.45,196.53 136.72,203.62 110.02,211.61 88.169,218.14"];
+ SequenceRelationship -> Tag [pos="e,67.377,129.35 161.73,160.04 148.56,155.93 134.69,151.54 121.79,147.38 107.05,142.62 90.797,137.22 76.964,132.57"];
+ SequenceRelationship -> Note [pos="e,71.207,177.53 121.8,177.82 107.39,177.73 93.373,177.66 81.289,177.59"];
+ SequenceRelationship -> PinboardItem [pos="e,372.19,337.36 239,200.58 262.34,232.12 308.64,290.28 358.55,328.38 360.13,329.58 361.77,330.76 363.46,331.91"];
+ SequenceRelationship -> Role [pos="e,386.05,289.23 251.64,200.46 278.47,220.81 320.17,251.26 358.55,274.38 364.42,277.91 370.81,281.41 377.06,284.67"];
+ SequenceRelationship -> VerifierRole [pos="e,371.41,232.53 276.54,197.87 303.35,207.67 335.66,219.47 362,229.09"];
+ SequenceRelationship -> Creator [dir=back,
+ pos="s,290.22,195.21 300.36,196.94 350.49,204.95 415.88,207.52 467.55,182.38 494.22,169.4 513,139.19 522.91,119.56",
+ style=dashed];
+ SequenceRelationship -> ObjectSequence [dir=back,
+ pos="s,318.44,166.78 328.39,165.56 339.67,164.19 350.74,162.84 360.95,161.6",
+ style=dashed];
+ SequenceRelationship -> Project [dir=back,
+ pos="s,286.09,160.67 295.61,157.49 304.77,154.35 313.94,150.96 322.55,147.38 339.25,140.43 342.47,136.67 358.55,128.38 367.24,123.89 \
+376.76,119.06 385.33,114.74",
+ style=dashed];
+ SequenceRelationship -> SubjectSequence [dir=back,
+ pos="s,297.3,162.78 306.52,158.26 312.26,155.14 317.68,151.54 322.55,147.38 350.04,123.86 333.09,100.07 358.55,74.376 361.84,71.051 365.63,\
+68.06 369.64,65.389",
+ style=dashed];
+ SequenceRelationship -> Updater [dir=back,
+ pos="s,299.92,163.28 308.7,158.42 313.74,155.26 318.43,151.61 322.55,147.38 363.49,105.35 311.75,55.755 358.55,20.376 436.03,-38.191 \
+555.92,44.668 604.27,83.348",
+ style=dashed];
+ Role -> Verifier [pos="e,503.25,280.79 440.31,295.32 455.96,291.7 476.1,287.06 493.43,283.06",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,503.4,268 454.64,256.74 467.22,259.65 481.03,262.83 493.4,265.69",
+ style=dotted];
+ Creator -> Updater [pos="e,596.38,101.38 560.55,101.38 568.58,101.38 577.51,101.38 586.12,101.38",
+ style=invis];
+ Project -> Creator [pos="e,503.38,101.38 440.6,101.38 456.12,101.38 475.97,101.38 493.12,101.38",
+ style=invis];
+}
diff --git a/data/sequences_model_er.dot b/data/sequences_model_er.dot
new file mode 100644
index 00000000..5b5cc40e
--- /dev/null
+++ b/data/sequences_model_er.dot
@@ -0,0 +1,570 @@
+digraph Sequence {
+ graph [bb="0,0,1090.3,872.53",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="85.142,573.53",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="85.142,519.53",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="85.142,465.53",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="85.142,411.53",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="85.142,303.53",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="85.142,357.53",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ ProtocolRelationship [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#protocol-relationship",
+ label=ProtocolRelationship,
+ pos="85.142,249.53",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=2.3651];
+ }
+ subgraph core {
+ Sequence [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#sequence",
+ label=Sequence,
+ pos="281.78,411.53",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.4399];
+ }
+ subgraph supporting {
+ AlternateValueLanguage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-language",
+ label=AlternateValueLanguage,
+ pos="281.78,573.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0972];
+ BlastQuerySequenceRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#blast-query-sequence-relationship",
+ label=BlastQuerySequenceRelationship,
+ pos="525.78,854.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.75];
+ BlastQuerySequenceSequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#blast-query-sequence-sequence",
+ label=BlastQuerySequenceSequence,
+ pos="818.28,854.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.5278];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="281.78,519.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ OriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-relationship",
+ label=OriginRelationship,
+ pos="525.78,784.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ DerivedSequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#derived-sequence",
+ label=DerivedSequence,
+ pos="818.28,800.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5556];
+ Documentation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#documentation",
+ label=Documentation,
+ pos="525.78,692.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4028];
+ Document [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#document",
+ label=Document,
+ pos="818.28,692.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ ForwardPrimerRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#forward-primer-relationship",
+ label=ForwardPrimerRelationship,
+ pos="525.78,638.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.3333];
+ ForwardPrimerSequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#forward-primer-sequence",
+ label=ForwardPrimerSequence,
+ pos="818.28,638.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.1111];
+ GeneAttribute [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#gene-attribute",
+ label=GeneAttribute,
+ pos="525.78,584.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3056];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="281.78,303.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ RelatedOriginRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-origin-relationship",
+ label=RelatedOriginRelationship,
+ pos="818.28,746.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2361];
+ OriginExtract [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-extract",
+ label=OriginExtract,
+ pos="1034.3,692.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ OriginLot [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-lot",
+ label=OriginLot,
+ pos="1034.3,638.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.98611];
+ OriginRangedLot [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-ranged-lot",
+ label=OriginRangedLot,
+ pos="1034.3,854.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5556];
+ OriginSequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-sequence",
+ label=OriginSequence,
+ pos="1034.3,800.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ OriginSpecimen [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-specimen",
+ label=OriginSpecimen,
+ pos="1034.3,746.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4722];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="818.28,530.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Protocol [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#protocol",
+ label=Protocol,
+ pos="281.78,249.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.86111];
+ ReferenceSequenceForAssemblyRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#reference-sequence-for-assembly-relationship",
+ label=ReferenceSequenceForAssemblyRelationship,
+ pos="525.78,438.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=3.6806];
+ ReferenceSequenceForAssemblySequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#reference-sequence-for-assembly-sequence",
+ label=ReferenceSequenceForAssemblySequence,
+ pos="818.28,438.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=3.4444];
+ RelatedSequenceRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-sequence-relationship",
+ label=RelatedSequenceRelationship,
+ pos="525.78,384.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.4722];
+ RelatedSequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-sequence",
+ label=RelatedSequence,
+ pos="818.28,384.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5278];
+ ReversePrimerRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#reverse-primer-relationship",
+ label=ReversePrimerRelationship,
+ pos="525.78,330.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.3056];
+ ReversePrimerSequence [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#reverse-primer-sequence",
+ label=ReversePrimerSequence,
+ pos="818.28,330.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0694];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="525.78,222.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SequenceRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#sequence-relationship",
+ label=SequenceRelationship,
+ pos="525.78,168.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.9028];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="525.78,276.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="818.28,249.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="525.78,530.53",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="818.28,76.526",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="525.78,76.526",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="1034.3,76.526",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ AlternateValue -> AlternateValueLanguage [pos="e,206.2,573.53 149.07,573.53 164.01,573.53 180.19,573.53 195.94,573.53",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,226.94,519.53 136.01,519.53 160.58,519.53 190.47,519.53 216.71,519.53",
+ style=dotted];
+ Tag -> Keyword [pos="e,248.15,303.53 112.39,303.53 144.55,303.53 199.46,303.53 237.81,303.53",
+ style=dotted];
+ ProtocolRelationship -> Protocol [pos="e,250.58,249.53 170.38,249.53 194.71,249.53 220.14,249.53 240.46,249.53",
+ style=dotted];
+ Sequence -> AlternateValue [pos="e,137.32,563.13 259.26,433.05 243.84,448.92 222.93,471.34 206.28,492.53 188.47,515.21 193.31,529.15 170.28,546.53 163.26,551.83 \
+155.15,556.12 146.8,559.57"];
+ Sequence -> Confidence [pos="e,127,509.3 257.26,432.28 235.84,450.29 202.71,476 170.28,492.53 159.82,497.86 148.09,502.42 136.78,506.19"];
+ Sequence -> DataAttribute [pos="e,129.34,453.54 235.68,424.04 206.91,432.02 169.49,442.4 139.29,450.78"];
+ Sequence -> Identifier [pos="e,128.38,411.53 230,411.53 201.85,411.53 166.91,411.53 138.52,411.53"];
+ Sequence -> Tag [pos="e,110.9,309.22 257.26,390.77 235.84,372.76 202.71,347.06 170.28,330.53 154.7,322.58 136.31,316.36 120.7,311.9"];
+ Sequence -> Note [pos="e,111.19,364.48 235.77,399.04 200.83,389.34 153.09,376.1 121.02,367.2"];
+ Sequence -> ProtocolRelationship [pos="e,144.35,262.5 259.26,390 243.84,374.13 222.93,351.71 206.28,330.53 188.47,307.84 193.31,293.91 170.28,276.53 165.22,272.7 159.6,\
+269.41 153.73,266.58"];
+ Sequence -> BlastQuerySequenceRelationship [pos="e,426.59,836.69 308.34,431.68 325.25,446.56 346.26,468.36 357.28,492.53 386.89,557.43 348.23,756.22 393.28,811.53 400.01,819.78 \
+408.35,826.47 417.54,831.88"];
+ Sequence -> OriginRelationship [pos="e,465.54,784.34 307.79,431.45 324.67,446.38 345.88,468.33 357.28,492.53 407.04,598.04 315.07,665.97 393.28,752.53 409.07,769.99 \
+432.63,778.69 455.47,782.8"];
+ Sequence -> Documentation [pos="e,475.2,694.84 307.29,431.69 323.93,446.74 345.07,468.73 357.28,492.53 393.16,562.39 337.68,610.07 393.28,665.53 411.92,684.11 439.71,\
+691.56 464.94,694.07"];
+ Sequence -> ForwardPrimerRelationship [pos="e,441.6,635.21 306.64,432.04 322.99,447.25 344.02,469.3 357.28,492.53 384.68,540.51 352.47,574.28 393.28,611.53 404.12,621.42 417.59,\
+628.08 431.73,632.5"];
+ Sequence -> GeneAttribute [pos="e,478.63,584.41 304.84,432.65 320.53,448.32 341.53,470.67 357.28,492.53 376.6,519.31 366.67,537.97 393.28,557.53 414.83,573.36 443.46,\
+580.42 468.51,583.4"];
+ Sequence -> RelatedOriginRelationship [pos="e,737.62,752.79 307.64,431.52 324.45,446.48 345.64,468.45 357.28,492.53 401.76,584.49 317.75,650.76 393.28,719.53 440.49,762.5 617.71,\
+759.71 727.54,753.39"];
+ Sequence -> PinboardItem [pos="e,772.44,522.59 313.15,429.59 334.78,441.63 364.92,456.8 393.28,465.53 507.01,500.52 540.73,485.12 658.28,503.53 692.95,508.95 731.79,\
+515.54 762.4,520.85"];
+ Sequence -> ReferenceSequenceForAssemblyRelationship [pos="e,392.84,423.81 333.52,417.19 348.23,418.83 365.07,420.71 382.51,422.65"];
+ Sequence -> RelatedSequenceRelationship [pos="e,436.45,394.38 333.52,405.87 360.4,402.87 394.38,399.08 426.21,395.52"];
+ Sequence -> ReversePrimerRelationship [pos="e,442.56,344.08 313.8,393.74 335.46,381.98 365.39,367.03 393.28,357.53 405.77,353.27 419.15,349.58 432.44,346.41"];
+ Sequence -> Role [pos="e,498.63,221.2 305.77,390.48 321.7,375.02 342.61,352.89 357.28,330.53 378.9,297.59 362.59,274.22 393.28,249.53 420.13,227.93 459.83,\
+222.27 488.58,221.35"];
+ Sequence -> SequenceRelationship [pos="e,457.03,160.06 301.12,389.43 318.1,372.33 342.85,347.82 357.28,321.53 387.17,267.09 348.12,229.14 393.28,186.53 407.86,172.78 427.48,\
+165.22 447.1,161.58"];
+ Sequence -> VerifierRole [pos="e,484.24,278.9 302.75,389.24 328.53,360.96 372.56,314.54 393.28,303.53 418.07,290.36 448.63,283.61 474.05,280.15"];
+ Sequence -> Version [pos="e,496.66,527.23 304.11,432.97 325.06,452.83 358.81,481.75 393.28,498.53 422.85,512.91 459.38,521.13 486.43,525.63"];
+ Sequence -> Creator [dir=back,
+ pos="s,308.22,391.32 315.96,384.24 331.1,369.89 347.74,351.03 357.28,330.53 383.84,273.45 346.03,91.118 393.28,49.526 508.18,-51.588 \
+715.38,28.952 789.77,63.099",
+ style=dashed];
+ Sequence -> Project [dir=back,
+ pos="s,307.61,391.53 315.34,384.41 330.49,369.99 347.33,351.02 357.28,330.53 400.96,240.62 325.41,181.91 393.28,108.53 420.01,79.634 \
+468.06,74.851 498.09,74.997",
+ style=dashed];
+ Sequence -> Updater [dir=back,
+ pos="s,307.41,391.43 315.1,384.29 330.19,369.84 347.05,350.88 357.28,330.53 395.7,254.13 329.33,198.29 393.28,141.53 439.02,100.94 882.11,\
+114.4 942.28,103.53 963.37,99.717 986.5,92.814 1004.2,86.942",
+ style=dashed];
+ BlastQuerySequenceRelationship -> BlastQuerySequenceSequence [pos="e,726.86,854.53 625.13,854.53 654.58,854.53 686.91,854.53 716.51,854.53",
+ style=dotted];
+ OriginRelationship -> DerivedSequence [pos="e,762.16,797.49 585.92,787.78 634.19,790.44 702.31,794.19 752.14,796.94",
+ style=dotted];
+ OriginRelationship -> RelatedOriginRelationship [pos="e,737.58,756.95 585.92,776.79 626.65,771.46 681.51,764.29 727.59,758.26",
+ style=invis];
+ Documentation -> Document [pos="e,781.19,692.53 576.39,692.53 630.93,692.53 717.86,692.53 771.03,692.53",
+ style=dotted];
+ ForwardPrimerRelationship -> ForwardPrimerSequence [pos="e,741.97,638.53 610.03,638.53 648.2,638.53 693.4,638.53 731.83,638.53",
+ style=dotted];
+ RelatedOriginRelationship -> OriginExtract [pos="e,988.57,706.49 898.88,729.94 913.37,726.67 928.31,723.13 942.28,719.53 954.13,716.47 966.75,712.92 978.71,709.42",
+ style=dotted];
+ RelatedOriginRelationship -> OriginLot [pos="e,998.68,652.05 899.07,738.33 914.3,734.26 929.47,728.28 942.28,719.53 966.1,703.25 956.59,684.54 978.28,665.53 981.75,662.49 985.63,\
+659.7 989.66,657.17",
+ style=dotted];
+ RelatedOriginRelationship -> OriginRangedLot [pos="e,990.68,836.51 899.07,754.73 914.3,758.79 929.47,764.77 942.28,773.53 966.1,789.8 956.59,808.52 978.28,827.53 979.58,828.66 980.93,\
+829.76 982.32,830.82",
+ style=dotted];
+ RelatedOriginRelationship -> OriginSequence [pos="e,981.97,784.6 898.88,763.12 913.37,766.39 928.31,769.92 942.28,773.53 951.98,776.03 962.2,778.86 972.14,781.73",
+ style=dotted];
+ RelatedOriginRelationship -> OriginSpecimen [pos="e,981.13,746.53 898.97,746.53 922.78,746.53 948.51,746.53 971.03,746.53",
+ style=dotted];
+ ReferenceSequenceForAssemblyRelationship -> ReferenceSequenceForAssemblySequence [pos="e,694.06,438.53 658.44,438.53 666.87,438.53 675.36,438.53 683.8,438.53",
+ style=dotted];
+ RelatedSequenceRelationship -> RelatedSequence [pos="e,763.1,384.53 615.13,384.53 659.6,384.53 712.53,384.53 753.07,384.53",
+ style=dotted];
+ ReversePrimerRelationship -> ReversePrimerSequence [pos="e,743.34,330.53 608.87,330.53 647.68,330.53 693.96,330.53 733.05,330.53",
+ style=dotted];
+ Role -> Verifier [pos="e,789.51,246.94 552.82,224.95 604.32,229.73 719.39,240.43 779.33,246",
+ style=invis];
+ SequenceRelationship -> Sequence [pos="e,313.06,393.34 457.03,176.97 434.25,180.84 410.32,188.45 393.28,204.53 348.12,247.14 387.17,285.09 357.28,339.53 347.83,356.75 \
+333.95,373.2 320.73,386.14",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,789.5,252.11 567.48,272.74 623.82,267.51 724.78,258.12 779.51,253.04",
+ style=dotted];
+ Version -> PinboardItem [pos="e,772.66,530.53 554.9,530.53 602.69,530.53 700.55,530.53 762.32,530.53",
+ style=invis];
+ Creator -> Updater [pos="e,1004.1,76.526 846.82,76.526 884.26,76.526 951.44,76.526 994.11,76.526",
+ style=invis];
+ Project -> Creator [pos="e,789.63,76.526 553.33,76.526 605.13,76.526 719.8,76.526 779.5,76.526",
+ style=invis];
+}
diff --git a/data/serial_chronologies_model_er.dot b/data/serial_chronologies_model_er.dot
new file mode 100644
index 00000000..7a799908
--- /dev/null
+++ b/data/serial_chronologies_model_er.dot
@@ -0,0 +1,136 @@
+digraph SerialChronology {
+ graph [bb="0,0,408.99,332.68",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ SerialChronology [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#serial-chronology",
+ label=SerialChronology,
+ pos="83.495,152.68",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.3193];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="257.99,314.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="257.99,260.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="257.99,206.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="378.99,233.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="257.99,152.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ PrecedingSerial [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#preceding-serial",
+ label=PrecedingSerial,
+ pos="257.99,98.683",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4167];
+ SucceedingSerial [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#succeeding-serial",
+ label=SucceedingSerial,
+ pos="257.99,44.683",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5278];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="378.99,152.68",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ SerialChronology -> PinboardItem [pos="e,216.43,296.59 99.954,175.16 120.72,204.08 160.02,254.54 202.99,287.68 204.55,288.88 206.16,290.05 207.83,291.19"];
+ SerialChronology -> Role [pos="e,230.79,248.47 114.44,174.83 137.97,191.81 171.84,215.37 202.99,233.68 208.94,237.18 215.4,240.67 221.72,243.91"];
+ SerialChronology -> VerifierRole [pos="e,216.44,193.99 139.07,169.77 160.72,176.54 185.45,184.29 206.65,190.92"];
+ SerialChronology -> Creator [dir=back,
+ pos="s,167.21,152.68 177.22,152.68 196.33,152.68 215.01,152.68 229.49,152.68",
+ style=dashed];
+ SerialChronology -> PrecedingSerial [dir=back,
+ pos="s,139.07,135.6 148.66,132.59 167.89,126.58 188.68,120.07 206.86,114.37",
+ style=dashed];
+ SerialChronology -> SucceedingSerial [dir=back,
+ pos="s,114.44,130.53 122.82,124.53 145.61,108.28 175.37,87.925 202.99,71.683 208.14,68.654 213.67,65.635 219.16,62.773",
+ style=dashed];
+ SerialChronology -> Updater [dir=back,
+ pos="s,95.955,130.44 101,121.67 120.44,88.848 156.12,38.907 202.99,17.683 247.52,-2.4847 271.59,-8.3295 312.99,17.683 354.4,43.703 370.04,\
+104.31 375.43,134.67",
+ style=dashed];
+ Role -> Verifier [pos="e,350.28,239.97 285.1,254.76 301.31,251.08 322.4,246.3 340.38,242.22",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,350.28,227.4 299.61,215.9 312.79,218.89 327.34,222.19 340.29,225.13",
+ style=dotted];
+ Creator -> Updater [pos="e,348.88,152.68 286.59,152.68 302.06,152.68 321.6,152.68 338.65,152.68",
+ style=invis];
+}
diff --git a/data/serials_model_er.dot b/data/serials_model_er.dot
new file mode 100644
index 00000000..bd2f8763
--- /dev/null
+++ b/data/serials_model_er.dot
@@ -0,0 +1,315 @@
+digraph Serial {
+ graph [bb="0,0,741.39,601.35",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="63.694,408.85",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="63.694,246.85",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="63.694,354.85",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="63.694,192.85",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="63.694,300.85",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="437.89,582.85",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ Serial [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#serial",
+ label=Serial,
+ pos="238.89,300.85",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.0491];
+ AlternateValueLanguage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-language",
+ label=AlternateValueLanguage,
+ pos="238.89,408.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0972];
+ SucceedingSerialChronology [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#succeeding-serial-chronology",
+ label=SucceedingSerialChronology,
+ pos="437.89,527.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.4306];
+ ImmediatelyPrecedingSerial [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#immediately-preceding-serial",
+ label=ImmediatelyPrecedingSerial,
+ pos="651.39,527.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.3889];
+ PrecedingSerialChronology [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#preceding-serial-chronology",
+ label=PrecedingSerialChronology,
+ pos="437.89,473.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.3194];
+ ImmediatelySucceedingSerial [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#immediately-succeeding-serial",
+ label=ImmediatelySucceedingSerial,
+ pos="651.39,473.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.5];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="238.89,192.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="651.39,381.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="437.89,219.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Translation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#translation",
+ label=Translation,
+ pos="437.89,327.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0833];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="437.89,273.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="651.39,246.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="437.89,381.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="437.89,165.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Language [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#language",
+ label=Language,
+ pos="437.89,111.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.97222];
+ TranslatedFromSerial [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#translated-from-serial",
+ label=TranslatedFromSerial,
+ pos="437.89,57.848",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.875];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="651.39,165.85",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ AlternateValue -> AlternateValueLanguage [pos="e,163.14,408.85 127.71,408.85 135.98,408.85 144.57,408.85 153.13,408.85",
+ style=dotted];
+ Tag -> Keyword [pos="e,205.11,192.85 90.999,192.85 118.58,192.85 162.36,192.85 194.96,192.85",
+ style=dotted];
+ Serial -> AlternateValue [pos="e,102.17,394.35 216.46,318.83 194.89,336.37 160.22,363.07 127.39,381.85 122.31,384.75 116.87,387.54 111.38,390.15"];
+ Serial -> DataAttribute [pos="e,105.74,259.65 202.98,289.97 177.85,282.13 143.56,271.44 115.41,262.66"];
+ Serial -> Identifier [pos="e,98.499,344.31 202.98,311.73 175.62,320.26 137.4,332.18 108.08,341.32"];
+ Serial -> Tag [pos="e,87.632,201.28 216.46,282.86 194.89,265.33 160.22,238.63 127.39,219.85 117.9,214.42 107.11,209.4 97.185,205.19"];
+ Serial -> Note [pos="e,91.756,300.85 201.05,300.85 171.88,300.85 131.29,300.85 102,300.85"];
+ Serial -> Source [pos="e,410.83,581.23 261.93,318.81 278.9,333.86 301.56,356.86 314.39,381.85 350.26,451.71 297.93,496.4 350.39,554.85 363.17,569.09 383.24,\
+576.12 400.83,579.58"];
+ Serial -> SucceedingSerialChronology [pos="e,361.44,509.71 261.33,319.13 277.97,334.37 300.47,357.46 314.39,381.85 341.78,429.84 311.49,461.61 350.39,500.85 351.32,501.79 \
+352.29,502.7 353.29,503.58"];
+ Serial -> PrecedingSerialChronology [pos="e,372.74,455.83 259.44,319.84 275.2,335.67 297.46,359.2 314.39,381.85 333.01,406.75 326.45,422 350.39,441.85 354.44,445.21 358.89,\
+448.24 363.55,450.96"];
+ Serial -> PinboardItem [pos="e,605.78,398.29 257.41,321.34 282.48,350.05 328.03,399.74 350.39,408.85 431.29,441.82 534.36,420.26 596.22,401.3"];
+ Serial -> Role [pos="e,410.79,226.87 267.52,285.89 289.55,274.31 321.42,258.37 350.39,246.85 366.7,240.36 385.22,234.4 400.93,229.74"];
+ Serial -> Translation [pos="e,398.81,322.63 276.48,305.86 308.04,310.19 353.87,316.47 388.46,321.21"];
+ Serial -> VerifierRole [pos="e,396.07,279.44 276.48,295.83 307.24,291.62 351.54,285.55 385.79,280.85"];
+ Serial -> Version [pos="e,408.86,374.27 267.52,315.81 289.55,327.38 321.42,343.33 350.39,354.85 366.1,361.1 383.86,366.86 399.18,371.44"];
+ Serial -> Creator [dir=back,
+ pos="s,258.27,280.75 265.31,273.2 291.65,245.08 331.55,204.1 350.39,192.85 368.49,182.04 391.34,175.15 409.01,171.04",
+ style=dashed];
+ Serial -> Language [dir=back,
+ pos="s,260.52,282.07 268.09,274.67 283.16,259.65 301.26,239.84 314.39,219.85 336.01,186.92 320.97,165.05 350.39,138.85 364.84,125.98 \
+385.37,119.24 402.81,115.72",
+ style=dashed];
+ Serial -> TranslatedFromSerial [dir=back,
+ pos="s,261.55,282.69 268.93,275.84 284.48,261.01 302.77,241.01 314.39,219.85 344.27,165.42 307.41,129.67 350.39,84.848 355.94,79.057 \
+362.72,74.502 370,70.92",
+ style=dashed];
+ Serial -> Updater [dir=back,
+ pos="s,262.04,282.95 269.52,276.15 285.26,261.42 303.55,241.41 314.39,219.85 352.8,143.45 284.51,85.364 350.39,30.848 410.31,-18.737 \
+454.12,-0.29138 525.39,30.848 580.42,54.891 622.04,116.43 640.26,147.42",
+ style=dashed];
+ SucceedingSerialChronology -> ImmediatelyPrecedingSerial [pos="e,565.26,527.85 525.52,527.85 535.26,527.85 545.22,527.85 555.06,527.85",
+ style=dotted];
+ PrecedingSerialChronology -> ImmediatelySucceedingSerial [pos="e,561.12,473.85 521.57,473.85 531.2,473.85 541.1,473.85 550.93,473.85",
+ style=dotted];
+ Role -> Verifier [pos="e,622.69,243.31 465.25,223.21 502.38,227.95 570.3,236.62 612.74,242.04",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,622.86,250.36 479.67,268.64 518.18,263.73 575.46,256.41 612.87,251.64",
+ style=dotted];
+ Version -> PinboardItem [pos="e,605.54,381.85 466.97,381.85 499.6,381.85 554.22,381.85 595.39,381.85",
+ style=invis];
+ Creator -> Updater [pos="e,621.38,165.85 466.54,165.85 503.49,165.85 569.2,165.85 611.23,165.85",
+ style=invis];
+}
diff --git a/data/sled_images_model_er.dot b/data/sled_images_model_er.dot
new file mode 100644
index 00000000..1ad8899c
--- /dev/null
+++ b/data/sled_images_model_er.dot
@@ -0,0 +1,203 @@
+digraph SledImage {
+ graph [bb="0,0,556.52,366.88",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="45.496,324.38",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="45.496,195.38",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="45.496,139.38",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="183.75,348.38",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ }
+ subgraph supporting {
+ SledImage [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#sled-image",
+ label=SledImage,
+ pos="183.75,139.38",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.5767];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="322.02,301.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="183.75,197.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="322.02,247.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="322.02,193.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="322.02,139.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="432.02,166.38",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="432.02,47.377",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="322.02,47.377",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="526.52,47.377",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Depiction -> CollectionObject [pos="e,128.78,338.87 87.378,331.58 97.239,333.32 108.01,335.21 118.65,337.09",
+ style=dotted];
+ Tag -> Keyword [pos="e,149.81,196.89 72.768,195.76 91.728,196.04 117.75,196.42 139.72,196.75",
+ style=dotted];
+ SledImage -> Tag [pos="e,68.996,186.13 143.67,155.44 122.97,163.95 97.863,174.27 78.356,182.28"];
+ SledImage -> Note [pos="e,73.742,139.38 127.11,139.38 112.59,139.38 97.282,139.38 83.954,139.38"];
+ SledImage -> Image [dir=back,
+ pos="s,222.97,155.64 231.24,161.46 234.64,164.16 237.79,167.13 240.52,170.38 271.96,207.84 245.78,236.32 276.52,274.38 281.4,280.42 288.02,\
+285.45 294.67,289.47",
+ style=dashed];
+ SledImage -> PinboardItem [pos="e,287.85,229.34 221.11,156.53 227.93,160.57 234.72,165.22 240.52,170.38 260.97,188.58 256.41,201.79 276.52,220.38 277.59,221.37 \
+278.71,222.35 279.87,223.31"];
+ SledImage -> Role [pos="e,294.76,182.97 224.53,155.14 243.8,162.78 266.74,171.87 285.43,179.27"];
+ SledImage -> VerifierRole [pos="e,280.51,139.38 240.57,139.38 250.39,139.38 260.57,139.38 270.25,139.38"];
+ SledImage -> Creator [dir=back,
+ pos="s,228.23,124.74 237.73,121.48 274.38,108.87 324.17,91.283 367.52,74.377 379.35,69.763 392.27,64.341 403.35,59.571",
+ style=dashed];
+ SledImage -> Project [dir=back,
+ pos="s,213.65,119.87 222.12,114.15 245.05,98.665 273.87,79.209 294.47,65.3",
+ style=dashed];
+ SledImage -> Updater [dir=back,
+ pos="s,194.2,117.23 198.75,107.98 213.5,79.23 239.71,38.475 276.52,20.377 349.9,-15.705 380.32,4.3832 460.52,20.377 472.62,22.791 485.29,\
+27.503 496.2,32.324",
+ style=dashed];
+ Image -> Depiction [pos="e,90.298,320.71 294.76,303.58 250.24,307.31 159.09,314.94 100.48,319.85",
+ style=dotted];
+ Role -> Verifier [pos="e,403.23,173.32 349.16,186.84 362.45,183.52 378.84,179.42 393.45,175.77",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,403.38,159.47 363.54,149.51 373.4,151.97 383.9,154.6 393.61,157.03",
+ style=dotted];
+ Creator -> Updater [pos="e,496.35,47.377 460.52,47.377 468.54,47.377 477.48,47.377 486.09,47.377",
+ style=invis];
+ Project -> Creator [pos="e,403.5,47.377 349.71,47.377 362.88,47.377 378.99,47.377 393.39,47.377",
+ style=invis];
+}
diff --git a/data/sources_model_er.dot b/data/sources_model_er.dot
new file mode 100644
index 00000000..3c8d4103
--- /dev/null
+++ b/data/sources_model_er.dot
@@ -0,0 +1,313 @@
+digraph Source {
+ graph [bb="0,0,767.39,447.73",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="63.694,391.73",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="63.694,298.73",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="63.694,233.73",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="63.694,179.73",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="63.694,71.733",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="63.694,125.73",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Source [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="238.89,173.73",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.1663];
+ AssertedDistribution [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#asserted-distribution",
+ label=AssertedDistribution,
+ pos="238.89,298.73",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.7917];
+ }
+ subgraph supporting {
+ AlternateValueLanguage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-language",
+ label=AlternateValueLanguage,
+ pos="238.89,429.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0972];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="238.89,375.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ Documentation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#documentation",
+ label=Documentation,
+ pos="400.89,267.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4028];
+ Document [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#document",
+ label=Document,
+ pos="532.89,267.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0278];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="238.89,71.733",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="532.89,213.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ ProjectSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project-source",
+ label=ProjectSource,
+ pos="400.89,321.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="532.89,321.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="400.89,121.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="400.89,375.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="400.89,67.733",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="532.89,94.733",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="400.89,213.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="642.89,321.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="737.39,321.73",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ AlternateValue -> AlternateValueLanguage [pos="e,163.09,413.32 114.79,402.72 126.81,405.36 139.98,408.25 153.1,411.13",
+ style=dotted];
+ Citation -> AssertedDistribution [pos="e,174.1,298.73 102.7,298.73 120.67,298.73 142.77,298.73 163.85,298.73",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,197.21,357.65 92.521,311.1 118.17,322.51 156.85,339.7 187.86,353.49",
+ style=dotted];
+ Tag -> Keyword [pos="e,205.11,71.733 90.999,71.733 118.58,71.733 162.36,71.733 194.96,71.733",
+ style=dotted];
+ Source -> AlternateValue [pos="e,82.864,374.28 220.93,195.24 205.57,214.91 182.49,244.93 163.39,271.73 146.65,295.23 145.39,303.19 127.39,325.73 115.87,340.15 \
+101.82,355.15 89.939,367.2"];
+ Source -> Citation [pos="e,88.946,284.97 215.23,192.91 193.32,211.12 158.9,238.9 127.39,260.73 117.94,267.28 107.35,273.94 97.602,279.82"];
+ Source -> DataAttribute [pos="e,103.56,220.27 201.81,186.23 176.12,195.13 141.32,207.19 113.2,216.93"];
+ Source -> Identifier [pos="e,106.62,178.28 196.65,175.16 172.75,175.99 142.43,177.04 116.88,177.92"];
+ Source -> Tag [pos="e,87.527,80.349 213.73,155.36 191.89,139.24 158.49,115.79 127.39,98.733 117.8,93.477 106.98,88.503 97.066,84.29"];
+ Source -> Note [pos="e,89.878,132.71 198.57,162.84 168.88,154.61 128.48,143.41 99.852,135.48"];
+ Source -> Documentation [pos="e,366.22,249.64 266.93,190.6 289.17,204.37 321.61,224.17 350.39,240.73 352.62,242.01 354.91,243.32 357.22,244.62"];
+ Source -> PinboardItem [pos="e,487.32,196.47 281.23,173.09 324.16,173.17 393.07,175.37 451.39,186.73 460.01,188.41 468.98,190.77 477.66,193.41"];
+ Source -> ProjectSource [pos="e,363.32,303.61 256.39,195.88 276.52,221.83 312.56,265.06 350.39,294.73 351.77,295.81 353.19,296.87 354.65,297.91"];
+ Source -> Role [pos="e,373.47,130.32 277,161.67 303.08,153.2 337.79,141.91 363.67,133.5"];
+ Source -> VerifierRole [pos="e,365.49,85.79 263.88,155.29 285.88,138.69 319.62,114.02 350.39,94.733 352.34,93.507 354.36,92.279 356.4,91.058"];
+ Source -> Version [pos="e,371.78,206.7 280.68,183.93 305.63,190.17 337.34,198.1 361.79,204.21"];
+ Source -> Creator [dir=back,
+ pos="s,261.44,154.52 268.73,147.67 283.25,133.84 300.63,116.14 314.39,98.733 333.2,74.929 323.88,55.481 350.39,40.733 439.56,-8.8724 \
+504.97,-3.1295 578.39,67.733 612.81,100.96 633.56,251.28 639.85,303.66",
+ style=dashed];
+ Source -> Updater [dir=back,
+ pos="s,262.98,155.08 270.48,148.4 285.29,134.88 302.42,117.24 314.39,98.733 338.68,61.163 313.53,30.086 350.39,4.7326 364.48,-4.9568 \
+569.85,3.2894 578.39,8.7326 687.47,78.252 724.33,248.02 733.7,303.71",
+ style=dashed];
+ CitationTopic -> Topic [pos="e,373.83,375.73 285.31,375.73 310.15,375.73 340.49,375.73 363.71,375.73",
+ style=dotted];
+ Documentation -> Document [pos="e,495.85,267.73 451.41,267.73 462.61,267.73 474.46,267.73 485.53,267.73",
+ style=dotted];
+ ProjectSource -> Project [pos="e,505.06,321.73 446.99,321.73 462.57,321.73 479.84,321.73 494.71,321.73",
+ style=dotted];
+ Project -> Creator [pos="e,614.37,321.73 560.59,321.73 573.75,321.73 589.86,321.73 604.26,321.73",
+ style=invis];
+ Role -> Verifier [pos="e,504.27,100.47 428.2,116.27 447.2,112.32 473.13,106.94 494.31,102.54",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,504.01,88.942 442.66,76.201 459.03,79.601 477.8,83.498 493.88,86.838",
+ style=dotted];
+ Version -> PinboardItem [pos="e,487.38,213.73 430.1,213.73 443.82,213.73 460.8,213.73 476.94,213.73",
+ style=invis];
+ Creator -> Updater [pos="e,707.22,321.73 671.39,321.73 679.42,321.73 688.35,321.73 696.96,321.73",
+ style=invis];
+}
diff --git a/data/tagged_section_keywords_model_er.dot b/data/tagged_section_keywords_model_er.dot
new file mode 100644
index 00000000..81f8b876
--- /dev/null
+++ b/data/tagged_section_keywords_model_er.dot
@@ -0,0 +1,152 @@
+digraph TaggedSectionKeyword {
+ graph [bb="0,0,583.23,377.42",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ }
+ subgraph core {
+ }
+ subgraph supporting {
+ TaggedSectionKeyword [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#tagged-section-keyword",
+ label=TaggedSectionKeyword,
+ pos="108.12,182.42",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.0032];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="323.23,359.42",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="323.23,305.42",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="323.23,251.42",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="458.73,278.42",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="458.73,51.417",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="323.23,159.42",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ OtuPageLayoutSection [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#otu-page-layout-section",
+ label=OtuPageLayoutSection,
+ pos="323.23,105.42",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.9722];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="323.23,51.417",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="553.23,51.417",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ TaggedSectionKeyword -> PinboardItem [pos="e,277.45,345.54 125.02,204.45 149.21,236.57 198.2,296.35 252.23,332.42 257.16,335.71 262.55,338.68 268.07,341.34"];
+ TaggedSectionKeyword -> Role [pos="e,296.03,296.88 137.81,204.46 165.89,225.35 210.43,256.68 252.23,278.42 263.05,284.04 275.31,289.16 286.52,293.39"];
+ TaggedSectionKeyword -> VerifierRole [pos="e,281.72,238.3 168.48,201.64 201.04,212.18 240.98,225.11 271.98,235.15"];
+ TaggedSectionKeyword -> Creator [dir=back,
+ pos="s,169.97,201.31 179.98,203.69 241.51,217.71 330.49,226.88 394.23,186.42 435.13,160.46 450.16,100.39 455.29,69.895",
+ style=dashed];
+ TaggedSectionKeyword -> Keyword [dir=back,
+ pos="s,213.8,171.12 223.82,170.04 248,167.43 271.61,164.88 289.65,162.93",
+ style=dashed];
+ TaggedSectionKeyword -> OtuPageLayoutSection [dir=back,
+ pos="s,164.28,162.49 173.9,159.01 205.54,147.58 243.03,134.03 272.4,123.42",
+ style=dashed];
+ TaggedSectionKeyword -> Project [dir=back,
+ pos="s,135.16,160.27 143.04,153.85 171.02,131.27 212.45,100.06 252.23,78.417 265.96,70.947 282.2,64.547 295.58,59.856",
+ style=dashed];
+ TaggedSectionKeyword -> Updater [dir=back,
+ pos="s,120.91,160.28 125.99,151.63 148.86,113.49 193.66,50.391 252.23,24.417 347.71,-17.923 384.81,3.9894 487.23,24.417 499.34,26.83 \
+512.01,31.542 522.91,36.363",
+ style=dashed];
+ Role -> Verifier [pos="e,429.9,284.05 350.29,300.15 370.16,296.13 397.82,290.53 420.09,286.03",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,429.87,272.78 365.01,259.66 382.41,263.18 402.6,267.27 419.69,270.72",
+ style=dotted];
+ Creator -> Updater [pos="e,523.07,51.417 487.24,51.417 495.26,51.417 504.2,51.417 512.81,51.417",
+ style=invis];
+ Project -> Creator [pos="e,430.17,51.417 350.93,51.417 370.77,51.417 398.09,51.417 420.14,51.417",
+ style=invis];
+}
diff --git a/data/tags_model_er.dot b/data/tags_model_er.dot
new file mode 100644
index 00000000..9d6aa02c
--- /dev/null
+++ b/data/tags_model_er.dot
@@ -0,0 +1,166 @@
+digraph Tag {
+ graph [bb="0,0,461.11,437.5",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Tag [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="31,210",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=0.86111];
+ }
+ subgraph core {
+ ControlledVocabularyTerm [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#controlled-vocabulary-term",
+ label=ControlledVocabularyTerm,
+ pos="185.06,419",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=2.3056];
+ }
+ subgraph supporting {
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="185.06,364",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="185.06,310",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="185.06,256",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="336.61,283",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="336.61,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="185.06,164",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="185.06,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="431.11,110",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ }
+ Tag -> ControlledVocabularyTerm [dir=back,
+ pos="s,33.921,232.28 35.229,242.36 40.942,282.61 56.474,350.91 98,391 101.96,394.82 106.44,398.12 111.23,400.97",
+ style=dashed];
+ Tag -> PinboardItem [pos="e,139.17,356.99 37.779,232.19 46.285,260.53 64.869,309.22 98,337 107,344.55 118.12,349.99 129.34,353.91"];
+ Tag -> Role [pos="e,158.04,305.59 45.961,230.73 57.977,247.09 76.709,269.36 98,283 113.03,292.63 131.75,299.04 147.88,303.19"];
+ Tag -> VerifierRole [pos="e,143.43,243.71 62.042,219.09 82.504,225.28 110.09,233.62 133.85,240.81"];
+ Tag -> Creator [dir=back,
+ pos="s,62.207,214.97 72.311,216.21 122.35,221.9 208.82,224.96 272.11,191 298.09,177.06 316.96,147.44 327.09,128.14",
+ style=dashed];
+ Tag -> Keyword [dir=back,
+ pos="s,62.042,200.91 71.87,197.94 96.664,190.44 128.15,180.91 151.45,173.87",
+ style=dashed];
+ Tag -> Project [dir=back,
+ pos="s,45.961,189.27 52.069,181.22 63.893,166.16 80.036,148.51 98,137 116.06,125.43 139.44,118.51 157.27,114.58",
+ style=dashed];
+ Tag -> Updater [dir=back,
+ pos="s,36.178,187.96 38.628,178.22 46.847,147.79 64.13,103.57 98,83 199.47,21.378 248.69,59.781 365.11,83 377.22,85.414 389.89,90.126 \
+400.79,94.947",
+ style=dashed];
+ "Objects with Tags" [color="#dedede",
+ fillcolor="#cdabef",
+ group=polymorphic,
+ height=0.5,
+ href="/develop/Data/models.html#objects with tag",
+ label="Objects with Tags",
+ pos="185.06,18",
+ shape=hexagon,
+ style=filled,
+ target=_top,
+ width=2.4182];
+ Tag -> "Objects with Tags" [dir=back,
+ pos="s,35.337,187.99 37.292,178.08 44.808,142.33 61.894,84.855 98,50 106.6,41.697 117.55,35.512 128.73,30.917",
+ style=dashed];
+ Role -> Verifier [pos="e,308.09,287.97 212.11,305.3 235.82,301.02 271.12,294.64 297.92,289.81",
+ style=invis];
+ VerifierRole -> Verifier [pos="e,308.03,278.02 226.92,263.38 249.07,267.38 276.26,272.28 297.9,276.19",
+ style=dotted];
+ Creator -> Updater [pos="e,400.95,110 365.12,110 373.14,110 382.08,110 390.69,110",
+ style=invis];
+ Project -> Creator [pos="e,308.1,110 212.79,110 236.53,110 271.46,110 298.01,110",
+ style=invis];
+}
diff --git a/data/taxon_determinations_model_er.dot b/data/taxon_determinations_model_er.dot
new file mode 100644
index 00000000..1e29546c
--- /dev/null
+++ b/data/taxon_determinations_model_er.dot
@@ -0,0 +1,397 @@
+digraph TaxonDetermination {
+ graph [bb="0,0,908.19,678",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="85.142,605",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="85.142,310",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="85.142,419",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="85.142,255",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="85.142,365",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ ProtocolRelationship [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#protocol-relationship",
+ label=ProtocolRelationship,
+ pos="85.142,201",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=2.3651];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="515.69,605",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="515.69,289",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ TaxonDetermination [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#taxon-determination",
+ label=TaxonDetermination,
+ pos="301.74,367",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=2.6515];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="301.74,660",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="301.74,309",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ DeterminerRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#determiner-role",
+ label=DeterminerRole,
+ pos="515.69,234",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.4444];
+ Determiner [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#determiner",
+ label=Determiner,
+ pos="695.19,234",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.0972];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="301.74,255",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Label [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#label",
+ label=Label,
+ pos="515.69,180",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="515.69,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Protocol [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#protocol",
+ label=Protocol,
+ pos="301.74,201",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.86111];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="515.69,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="695.19,512",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="850.19,512",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="515.69,660",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="515.69,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="695.19,45",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ BiologicalCollectionObject [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#biological-collection-object",
+ label=BiologicalCollectionObject,
+ pos="515.69,512",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.2917];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="695.19,344",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="515.69,344",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="850.19,344",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="695.19,581",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,488.43,605 124.17,605 206.02,605 397.95,605 478.31,605",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,255.49,648.4 119.67,613.59 153.36,622.23 205.85,635.68 245.66,645.88",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,247.11,309.25 135.91,309.77 165.97,309.63 204.57,309.45 236.86,309.3",
+ style=dotted];
+ Depiction -> Image [pos="e,274.62,255 130.87,255 170.44,255 227.48,255 264.33,255",
+ style=dotted];
+ ProtocolRelationship -> Protocol [pos="e,270.56,201 170.34,201 201.27,201 234.88,201 260.23,201",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,659.66,530.1 542.88,591.28 571.18,576.45 616.74,552.58 650.48,534.9",
+ style=invis];
+ Source -> OriginCitation [pos="e,647.55,587.31 542.88,601.46 567.68,598.11 605.74,592.96 637.49,588.67",
+ style=invis];
+ TaxonDetermination -> Citation [pos="e,101.23,588.26 280.8,389.12 240.53,433.78 149.78,534.43 107.98,580.78"];
+ TaxonDetermination -> Confidence [pos="e,126.25,320.65 237.21,350.13 204.92,341.55 166.26,331.28 136.12,323.28"];
+ TaxonDetermination -> DataAttribute [pos="e,131.92,407.91 233.85,383.21 204.35,390.36 170.07,398.66 141.97,405.47"];
+ TaxonDetermination -> Depiction [pos="e,126.4,262.67 232.98,350.86 223.5,346.91 214.28,342.02 206.28,336 183.54,318.87 192.99,300.18 170.28,283 160.31,275.45 148.19,269.88 \
+136.29,265.78"];
+ TaxonDetermination -> Note [pos="e,113.32,365.25 206.28,366.12 177.08,365.85 146.58,365.56 123.63,365.35"];
+ TaxonDetermination -> ProtocolRelationship [pos="e,147.93,213.24 228.98,351.61 220.61,347.56 212.77,342.45 206.28,336 170.43,300.31 206.26,263.58 170.28,228 166.33,224.09 161.81,\
+220.75 156.96,217.89"];
+ TaxonDetermination -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,311.45,389.31 e,488.65,598.91 315.46,398.74 334.73,443.16 375.33,523.81 433.19,572 446.38,582.98 463.69,590.68 478.97,595.86",
+ style=dotted];
+ TaxonDetermination -> Otu [dir=back,
+ pos="s,362.01,349.25 371.46,345.96 380.21,342.84 388.97,339.49 397.19,336 413.85,328.93 416.59,324.18 433.19,317 451.32,309.16 472.42,\
+301.96 488.61,296.83",
+ style=dashed];
+ TaxonDetermination -> DeterminerRole [pos="e,463.52,244.02 372.79,351.26 381.63,347.26 390.06,342.26 397.19,336 424.99,311.61 405.43,285.42 433.19,261 439.32,255.61 446.55,\
+251.29 454.14,247.83"];
+ TaxonDetermination -> Label [pos="e,488.53,182.3 375.27,351.68 383.41,347.62 390.99,342.49 397.19,336 438.33,292.97 392.12,250.08 433.19,207 445,194.61 462.62,187.9 \
+478.46,184.27"];
+ TaxonDetermination -> PinboardItem [pos="e,470.07,131.88 376.22,351.89 384.11,347.79 391.36,342.59 397.19,336 452.1,273.9 378.38,215.18 433.19,153 440.44,144.78 450.24,139.06 \
+460.54,135.07"];
+ TaxonDetermination -> Role [pos="e,488.33,73.726 376.5,352.13 384.34,347.99 391.51,342.72 397.19,336 466.01,254.66 364.49,180.43 433.19,99 444.31,85.823 462.02,79.041 \
+478.09,75.566"];
+ TaxonDetermination -> SubsequentCitation [pos="e,634.07,494.9 335.54,389.15 361.19,405.65 398.25,427.71 433.19,442 503.33,470.7 525.05,465.18 598.19,485 606.63,487.29 615.48,489.72 \
+624.24,492.16"];
+ TaxonDetermination -> VerifierRole [pos="e,473.86,22.364 377.14,352.03 384.77,347.91 391.71,342.66 397.19,336 479.98,235.36 350.54,145.76 433.19,45 441.02,35.456 452.31,\
+29.262 464.01,25.248"];
+ TaxonDetermination -> BiologicalCollectionObject [dir=back,
+ pos="s,323.55,389.09 330.87,396.45 355.87,421.32 394.39,456.53 433.19,480 441.78,485.19 451.35,489.83 460.84,493.86",
+ style=dashed];
+ TaxonDetermination -> Creator [dir=back,
+ pos="s,397.33,375.48 407.38,376.04 464.1,379.03 535.27,379.68 598.19,371 621.69,367.76 647.53,360.25 666.48,353.98",
+ style=dashed];
+ TaxonDetermination -> Project [dir=back,
+ pos="s,397.25,356.74 407.37,355.65 437.28,352.4 467.33,349.14 487.99,346.9",
+ style=dashed];
+ TaxonDetermination -> Updater [dir=back,
+ pos="s,376.97,381.72 386.95,383.32 402.28,385.68 418.17,387.74 433.19,389 576.47,401 615.22,399.28 756.19,371 777.95,366.63 802,359.59 \
+820.19,353.79",
+ style=dashed];
+ TaxonDetermination -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,312.68,389.28 e,647.66,577.67 317.09,398.27 337.09,438 377.27,505.42 433.19,539 466.71,559.13 571.23,571.07 637.39,576.8"];
+ CitationTopic -> Topic [pos="e,488.56,660 347.95,660 386.9,660 442.39,660 478.47,660",
+ style=dotted];
+ DeterminerRole -> Determiner [pos="e,655.66,234 568.03,234 592.38,234 621.33,234 645.35,234",
+ style=dotted];
+ Role -> Verifier [pos="e,666.43,49.223 542.88,68.016 572.86,63.456 622.21,55.95 656.36,50.755",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,791.84,512 756.22,512 764.56,512 773.16,512 781.62,512",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,666.63,40.808 557.42,24.194 587.22,28.729 627.38,34.836 656.46,39.26",
+ style=dotted];
+ Creator -> Updater [pos="e,820.13,344 723.9,344 747.92,344 782.96,344 809.88,344",
+ style=invis];
+ Project -> Creator [pos="e,666.56,344 543.27,344 573.33,344 622.52,344 656.53,344",
+ style=invis];
+}
diff --git a/data/taxon_name_classifications_model_er.dot b/data/taxon_name_classifications_model_er.dot
new file mode 100644
index 00000000..e3e8593c
--- /dev/null
+++ b/data/taxon_name_classifications_model_er.dot
@@ -0,0 +1,251 @@
+digraph TaxonNameClassification {
+ graph [bb="0,0,781.3,501.24",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="38.997,428.24",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="38.997,243.24",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="425.8,428.24",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ TaxonName [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#taxon-name",
+ label=TaxonName,
+ pos="425.8,96.243",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.1667];
+ }
+ subgraph supporting {
+ TaxonNameClassification [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#taxon-name-classification",
+ label=TaxonNameClassification,
+ pos="229.14,243.24",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.1987];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="229.14,483.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="425.8,41.243",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="425.8,297.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="568.3,351.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="723.3,351.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="425.8,483.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="425.8,243.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="568.3,274.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="568.3,151.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="425.8,151.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="723.3,151.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="568.3,420.24",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,398.79,428.24 78.299,428.24 152.77,428.24 316.12,428.24 388.75,428.24",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,182.86,470 72.34,437.7 99.953,445.77 140.27,457.56 172.97,467.12",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,534.4,369.27 452.89,413.94 473.21,402.81 501.81,387.13 525.34,374.24",
+ style=invis];
+ Source -> OriginCitation [pos="e,520.58,422.9 452.89,426.76 469.05,425.84 490.43,424.62 510.34,423.49",
+ style=invis];
+ TaxonNameClassification -> Citation [pos="e,56.693,411.83 205.74,265.27 170.07,300.35 100.65,368.61 63.993,404.65"];
+ TaxonNameClassification -> Note [pos="e,66.954,243.24 113.68,243.24 100.63,243.24 88.129,243.24 77.252,243.24"];
+ TaxonNameClassification -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,250.05,265.44 e,398.86,410.05 257.02,273.06 286.14,304.72 334.59,355.57 380.3,395.24 383.66,398.16 387.25,401.1 390.9,403.96",
+ style=dotted];
+ TaxonNameClassification -> TaxonName [dir=back,
+ pos="s,256.33,221.07 264.35,214.39 294.26,189.58 339.22,153.31 380.3,124.24 384.92,120.97 389.91,117.65 394.82,114.48",
+ style=dashed];
+ TaxonNameClassification -> PinboardItem [pos="e,392.35,59.249 245.56,221.1 270.84,185.83 323.97,116.02 380.3,68.243 381.46,67.256 382.66,66.283 383.9,65.324"];
+ TaxonNameClassification -> Role [pos="e,398.76,290.02 297.13,261.83 328.01,270.39 363.4,280.21 389.08,287.34"];
+ TaxonNameClassification -> SubsequentCitation [pos="e,507.12,347.93 262.9,265.31 292.33,284.04 337.41,310.07 380.3,324.24 417.72,336.6 461.2,343.31 496.81,346.95"];
+ TaxonNameClassification -> VerifierRole [pos="e,384.01,243.24 344.5,243.24 354.72,243.24 364.68,243.24 373.92,243.24"];
+ TaxonNameClassification -> Creator [dir=back,
+ pos="s,236.78,220.93 240.07,211.14 258.22,158.73 302.26,56.392 380.3,14.243 415.88,-4.9773 435.42,-4.426 471.3,14.243 519.99,39.58 549.11,\
+102.18 561.02,133.21",
+ style=dashed];
+ TaxonNameClassification -> Project [dir=back,
+ pos="s,276.77,221.21 285.9,216.89 322.69,199.5 369.25,177.5 398.02,163.9",
+ style=dashed];
+ TaxonNameClassification -> Updater [dir=back,
+ pos="s,315.04,227.57 325.12,225.77 343.42,222.52 362.44,219.21 380.3,216.24 490.73,197.89 519.97,202.35 629.3,178.24 650.97,173.46 675.02,\
+166.44 693.23,160.75",
+ style=dashed];
+ TaxonNameClassification -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,257.34,265.32 e,520.58,405.78 265.26,271.49 294.73,294.26 338.58,326.05 380.3,348.24 422.31,370.59 472.81,389.61 510.73,402.48"];
+ CitationTopic -> Topic [pos="e,398.72,483.24 275.29,483.24 309.7,483.24 356.46,483.24 388.47,483.24",
+ style=dotted];
+ Role -> Verifier [pos="e,539.41,278.81 452.89,292.97 474.42,289.45 505.25,284.4 529.48,280.43",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,664.94,351.24 629.33,351.24 637.66,351.24 646.27,351.24 654.72,351.24",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,539.65,268.14 467.44,252.21 487.08,256.54 510.51,261.71 529.74,265.96",
+ style=dotted];
+ Creator -> Updater [pos="e,693.23,151.24 597,151.24 621.03,151.24 656.07,151.24 682.99,151.24",
+ style=invis];
+ Project -> Creator [pos="e,539.68,151.24 453.55,151.24 475.05,151.24 505.52,151.24 529.5,151.24",
+ style=invis];
+}
diff --git a/data/taxon_name_relationships_model_er.dot b/data/taxon_name_relationships_model_er.dot
new file mode 100644
index 00000000..6dd8c096
--- /dev/null
+++ b/data/taxon_name_relationships_model_er.dot
@@ -0,0 +1,264 @@
+digraph TaxonNameRelationship {
+ graph [bb="0,0,806.85,555.77",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="434.35,482.77",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ TaxonNameRelationship [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#taxon-name-relationship",
+ label=TaxonNameRelationship,
+ pos="224.92,266.77",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=3.0814];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="224.92,537.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="434.35,243.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="434.35,189.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="593.85,335.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="748.85,335.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="434.35,537.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="434.35,135.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="593.85,162.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="593.85,43.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ ObjectTaxonName [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#object-taxon-name",
+ label=ObjectTaxonName,
+ pos="434.35,389.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="434.35,43.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ SubjectTaxonName [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subject-taxon-name",
+ label=SubjectTaxonName,
+ pos="434.35,335.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.7361];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="748.85,43.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="593.85,458.77",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="38.997,482.77",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="38.997,266.77",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ Citation -> Source [pos="e,407.08,482.77 78.071,482.77 153.78,482.77 322.35,482.77 396.8,482.77",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,178.82,524.28 72.034,492.35 98.688,500.32 137.24,511.85 168.83,521.3",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,573.38,353.94 454.67,464.74 482.53,438.74 534.14,390.57 565.79,361.03",
+ style=invis];
+ Source -> OriginCitation [pos="e,546.11,465.89 461.36,478.81 481.65,475.72 510.58,471.31 536.14,467.41",
+ style=invis];
+ TaxonNameRelationship -> Citation [pos="e,54.429,465.82 204.98,289.02 170.33,329.71 96.986,415.84 60.918,458.2"];
+ TaxonNameRelationship -> Note [pos="e,67.136,266.77 114.02,266.77 100.84,266.77 88.171,266.77 77.155,266.77"];
+ TaxonNameRelationship -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,239.29,288.88 e,407.07,471.59 244.92,297.73 270.13,336.91 317.83,404.72 371.85,449.77 379.66,456.28 388.95,462.06 397.92,466.9",
+ style=dotted];
+ TaxonNameRelationship -> PinboardItem [pos="e,388.61,248.73 331.16,255.1 347.46,253.29 363.71,251.49 378.3,249.87"];
+ TaxonNameRelationship -> Role [pos="e,407.27,199.45 280.42,246.54 317.52,232.77 365.55,214.94 397.8,202.97"];
+ TaxonNameRelationship -> SubsequentCitation [pos="e,532.96,317.73 325.86,279.33 377.23,286.53 440.69,296.56 496.85,308.77 505.4,310.63 514.31,312.8 523.1,315.1"];
+ TaxonNameRelationship -> VerifierRole [pos="e,392.74,152.18 253.3,244.65 281.81,222.26 328.3,187.5 371.85,162.77 375.56,160.66 379.47,158.61 383.43,156.63"];
+ TaxonNameRelationship -> Creator [dir=back,
+ pos="s,231.01,244.46 233.58,234.7 248.9,178.63 289.18,64.239 371.85,16.77 433.7,-18.741 521.19,10.958 565.24,30.317",
+ style=dashed];
+ TaxonNameRelationship -> ObjectTaxonName [dir=back,
+ pos="s,256.3,288.93 264.84,294.96 293.62,315.16 334.18,342.3 371.85,362.77 377.49,365.83 383.54,368.82 389.57,371.64",
+ style=dashed];
+ TaxonNameRelationship -> Project [dir=back,
+ pos="s,238.45,244.49 243.62,235.79 268.15,194.97 315.88,122.83 371.85,75.77 382.17,67.095 395.23,59.886 406.66,54.52",
+ style=dashed];
+ TaxonNameRelationship -> SubjectTaxonName [dir=back,
+ pos="s,284.53,286.27 294.12,289.46 321.73,298.64 353.16,309.09 379.16,317.74",
+ style=dashed];
+ TaxonNameRelationship -> Updater [dir=back,
+ pos="s,239.05,244.69 244.76,235.82 269.11,198.83 315.19,138.22 371.85,108.77 484.46,50.248 530.68,96.978 654.85,70.77 676.57,66.186 700.62,\
+59.151 718.82,53.411",
+ style=dashed];
+ TaxonNameRelationship -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,240.66,289 e,546.15,457.97 246.63,297.36 271.92,332.13 318.02,387.81 371.85,416.77 423.02,444.29 489.34,454.01 535.93,457.32"];
+ CitationTopic -> Topic [pos="e,407.1,537.77 270.93,537.77 308.62,537.77 361.73,537.77 396.82,537.77",
+ style=dotted];
+ Role -> Verifier [pos="e,565.22,167.51 461.36,185.31 486.89,180.94 526.09,174.22 555.05,169.25",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,690.5,335.77 654.89,335.77 663.22,335.77 671.82,335.77 680.28,335.77",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,565.32,158.05 475.91,142.72 500.37,146.91 531.31,152.22 555.22,156.32",
+ style=dotted];
+ Creator -> Updater [pos="e,718.79,43.77 622.56,43.77 646.59,43.77 681.63,43.77 708.55,43.77",
+ style=invis];
+ Project -> Creator [pos="e,565.21,43.77 462.07,43.77 487.63,43.77 526.43,43.77 555.13,43.77",
+ style=invis];
+}
diff --git a/data/taxon_names_model_er.dot b/data/taxon_names_model_er.dot
new file mode 100644
index 00000000..42b342b3
--- /dev/null
+++ b/data/taxon_names_model_er.dot
@@ -0,0 +1,658 @@
+digraph TaxonName {
+ graph [bb="0,0,871.39,1363.5",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ AlternateValue [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value",
+ label=AlternateValue,
+ pos="63.694,1318.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.7693];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="63.694,1236.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="63.694,647.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="63.694,809.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Depiction [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#depiction",
+ label=Depiction,
+ pos="63.694,593.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.2638];
+ Identifier [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#identifier",
+ label=Identifier,
+ pos="63.694,755.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.1916];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="63.694,539.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="63.694,701.5",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ TaxonName [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#taxon-name",
+ label=TaxonName,
+ pos="238.89,705.5",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.7526];
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="813.39,18.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Otu [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#otu",
+ label=Otu,
+ pos="451.89,18.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="451.89,1236.5",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ }
+ subgraph supporting {
+ AlternateValueLanguage [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#alternate-value-language",
+ label=AlternateValueLanguage,
+ pos="238.89,1345.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0972];
+ AncestorHierarchy [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#ancestor-hierarchy",
+ label=AncestorHierarchy,
+ pos="451.89,759.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6528];
+ Child [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#child",
+ label=Child,
+ pos="451.89,705.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="238.89,1291.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ClassifiedAsUnavailableOrInvalid [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#classified-as-unavailable-or-invalid",
+ label=ClassifiedAsUnavailableOrInvalid,
+ pos="451.89,651.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.8194];
+ TaxonDetermination [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-determination",
+ label=TaxonDetermination,
+ pos="654.39,18.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8056];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="238.89,647.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ DescendantHierarchy [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#descendant-hierarchy",
+ label=DescendantHierarchy,
+ pos="451.89,597.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.8611];
+ HistoricalTaxonName [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#historical-taxon-name",
+ label=HistoricalTaxonName,
+ pos="451.89,543.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.9028];
+ Image [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#image",
+ label=Image,
+ pos="238.89,593.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="238.89,539.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ ObservationMatrixRowItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix-row-item",
+ label=ObservationMatrixRowItem,
+ pos="451.89,489.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.375];
+ ObservationMatrix [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#observation-matrix",
+ label=ObservationMatrix,
+ pos="654.39,489.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6667];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="654.39,435.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ RelatedTaxonNameRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#related-taxon-name-relationship",
+ label=RelatedTaxonNameRelationship,
+ pos="451.89,343.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.6944];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="451.89,235.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SelfAndAncestor [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#self-and-ancestor",
+ label=SelfAndAncestor,
+ pos="654.39,759.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5278];
+ SelfAndDescendant [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#self-and-descendant",
+ label=SelfAndDescendant,
+ pos="654.39,597.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.7361];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="654.39,1230.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="813.39,1230.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ TaxonNameAuthorRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-name-author-role",
+ label=TaxonNameAuthorRole,
+ pos="451.89,181.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.0556];
+ TaxonNameAuthor [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-name-author",
+ label=TaxonNameAuthor,
+ pos="654.39,181.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ TaxonNameClassification [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-name-classification",
+ label=TaxonNameClassification,
+ pos="451.89,127.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.1944];
+ TaxonNameRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#taxon-name-relationship",
+ label=TaxonNameRelationship,
+ pos="451.89,73.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.1111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="451.89,1291.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="451.89,289.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="654.39,262.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Version [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#version",
+ label=Version,
+ pos="451.89,435.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.80556];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="654.39,959.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Parent [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#parent",
+ label=Parent,
+ pos="451.89,1067.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="451.89,959.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="813.39,959.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ ValidTaxonName [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#valid-taxon-name",
+ label=ValidTaxonName,
+ pos="451.89,1013.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5694];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="654.39,1170.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ SourceClassifiedA [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#source-classified-a",
+ label=SourceClassifiedA,
+ pos="451.89,905.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.625];
+ SourceClassifiedAsRelationship [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#source-classified-as-relationship",
+ label=SourceClassifiedAsRelationship,
+ pos="451.89,851.5",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=2.6528];
+ }
+ AlternateValue -> AlternateValueLanguage [pos="e,163.23,1333.9 119.97,1327.1 130.61,1328.8 141.99,1330.5 153.31,1332.3",
+ style=dotted];
+ Citation -> Source [pos="e,424.73,1236.5 102.78,1236.5 177.33,1236.5 341.58,1236.5 414.63,1236.5",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,192.62,1277.1 96.461,1246.6 120.57,1254.2 154.31,1265 182.79,1274",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,184.28,647.5 114.79,647.5 133.34,647.5 154.62,647.5 174.21,647.5",
+ style=dotted];
+ Depiction -> Image [pos="e,211.74,593.5 109.3,593.5 137.96,593.5 174.73,593.5 201.61,593.5",
+ style=dotted];
+ Tag -> Keyword [pos="e,205.11,539.5 90.999,539.5 118.58,539.5 162.36,539.5 194.96,539.5",
+ style=dotted];
+ TaxonName -> AlternateValue [pos="e,90.357,1302.1 238.43,727.75 239.39,806.63 234.32,1078.1 127.39,1263.5 120.24,1275.9 109.27,1286.9 98.494,1295.8"];
+ TaxonName -> Citation [pos="e,70.556,1218.5 230.63,727.75 202.96,812.58 104.12,1115.6 73.684,1208.9"];
+ TaxonName -> Confidence [pos="e,101.42,659.8 191.94,690.11 166.96,681.75 136.13,671.42 111.07,663.03"];
+ TaxonName -> DataAttribute [pos="e,100.77,795.44 210.74,726.74 188.97,743.19 157.22,765.91 127.39,782.5 121.88,785.56 115.96,788.52 110.03,791.28"];
+ TaxonName -> Depiction [pos="e,99.906,604.5 190.21,690.59 180.74,686.31 171.29,681 163.39,674.5 141.12,656.17 149.55,638.97 127.39,620.5 122.01,616.01 115.77,\
+612.16 109.35,608.89"];
+ TaxonName -> Identifier [pos="e,99.743,745.38 188.12,719.87 163.28,727.04 133.46,735.65 109.35,742.61"];
+ TaxonName -> Tag [pos="e,89.582,545 187.25,691.37 178.42,687.09 169.97,681.58 163.39,674.5 128.93,637.45 161.62,603.76 127.39,566.5 119.86,558.3 109.41,\
+552.48 99.195,548.4"];
+ TaxonName -> Note [pos="e,91.756,702.12 175.48,704.06 150.78,703.49 123.21,702.85 101.76,702.36"];
+ TaxonName -> Otu [pos="e,424.53,17.927 292.87,692.28 301.27,687.93 308.96,682.16 314.39,674.5 395.25,560.48 262.69,155.35 350.39,46.5 365.59,27.627 392.36,\
+20.834 414.45,18.648"];
+ TaxonName -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,241.92,727.69 e,424.78,1234.9 242.9,737.7 252.78,836.64 287.22,1133.8 350.39,1203.5 366.7,1221.5 393.01,1229.7 414.62,1233.4",
+ style=dotted];
+ TaxonName -> AncestorHierarchy [pos="e,392.03,744.44 292.32,718.92 319.51,725.88 353.07,734.47 382.3,741.95"];
+ TaxonName -> Child [pos="e,424.7,705.5 302.05,705.5 338.59,705.5 383.52,705.5 414.4,705.5"];
+ TaxonName -> ClassifiedAsUnavailableOrInvalid [pos="e,380.4,669.54 292.32,692.08 315.91,686.04 344.29,678.78 370.48,672.08"];
+ TaxonName -> DescendantHierarchy [pos="e,384.77,608.33 287.39,690.37 296.88,686.11 306.38,680.85 314.39,674.5 335.84,657.48 327.86,640.07 350.39,624.5 357.92,619.3 366.41,\
+615.09 375.18,611.7"];
+ TaxonName -> HistoricalTaxonName [pos="e,383.22,551.98 290.47,691.31 299.3,687.04 307.77,681.54 314.39,674.5 347.9,638.87 314.6,603.84 350.39,570.5 357.14,564.21 365.19,\
+559.36 373.75,555.62"];
+ TaxonName -> ObservationMatrixRowItem [pos="e,366.26,504.4 291.48,691.69 300.12,687.39 308.25,681.78 314.39,674.5 360.8,619.43 300.45,568.4 350.39,516.5 352.71,514.09 355.21,\
+511.89 357.87,509.88"];
+ TaxonName -> PinboardItem [pos="e,617.43,417.42 292.4,691.93 300.84,687.61 308.67,681.94 314.39,674.5 387.11,579.93 260.55,487 350.39,408.5 422.03,345.9 542.88,\
+384.77 608.21,413.3"];
+ TaxonName -> RelatedTaxonNameRelationship [pos="e,366.49,361.64 292.49,691.99 300.92,687.67 308.72,681.98 314.39,674.5 395.2,567.8 265.07,478.63 350.39,375.5 352.74,372.66 355.33,\
+370.07 358.13,367.71"];
+ TaxonName -> Role [pos="e,424.7,234.77 292.69,692.14 301.1,687.81 308.85,682.07 314.39,674.5 368.67,600.34 291.34,332.93 350.39,262.5 365.92,243.98 392.67,\
+237.44 414.67,235.42"];
+ TaxonName -> SubsequentCitation [pos="e,593.17,1217.6 242.2,727.68 251.25,810.34 286.95,1098.9 350.39,1161.5 354.6,1165.6 495.03,1196.5 583.22,1215.5"];
+ TaxonName -> TaxonNameAuthorRole [pos="e,377.79,189.57 292.75,692.19 301.16,687.85 308.88,682.1 314.39,674.5 375.31,590.38 284.06,288.42 350.39,208.5 355.46,202.39 361.75,\
+197.58 368.69,193.81"];
+ TaxonName -> TaxonNameClassification [pos="e,372.52,137.79 292.8,692.23 301.2,687.88 308.91,682.12 314.39,674.5 381.96,580.42 276.77,243.93 350.39,154.5 354.21,149.85 358.75,\
+145.96 363.73,142.7"];
+ TaxonName -> TaxonNameRelationship [pos="e,375.43,82.413 292.84,692.25 301.24,687.91 308.94,682.14 314.39,674.5 388.6,570.45 269.48,199.44 350.39,100.5 354.85,95.05 360.27,\
+90.634 366.28,87.062"];
+ TaxonName -> VerifierRole [pos="e,410.36,289.95 292.61,692.08 301.03,687.75 308.8,682.04 314.39,674.5 409.68,546.08 246.85,438.37 350.39,316.5 362.73,301.98 381.96,\
+294.84 400.31,291.47"];
+ TaxonName -> Version [pos="e,422.85,435.24 291.81,691.96 300.42,687.63 308.46,681.95 314.39,674.5 373.91,599.73 286.07,533.19 350.39,462.5 366.06,445.27 391.43,\
+438.55 412.76,436.12"];
+ TaxonName -> Creator [dir=back,
+ pos="s,263.36,727.63 270.96,734.21 291.9,751.98 320.97,773.76 350.39,786.5 434.61,822.99 475.58,775.81 553.39,824.5 599.38,853.28 631.33,\
+911.5 645.36,941.19",
+ style=dashed];
+ TaxonName -> Parent [dir=back,
+ pos="s,240.34,727.62 240.85,737.92 244.62,804.61 262.91,957.8 350.39,1040.5 370.34,1059.4 402.03,1065.3 424.49,1067.1",
+ style=dashed];
+ TaxonName -> Project [dir=back,
+ pos="s,244.26,727.7 246.54,737.53 258.5,786.92 288.38,881.31 350.39,932.5 371.29,949.75 402.2,956.06 424.22,958.32",
+ style=dashed];
+ TaxonName -> Updater [dir=back,
+ pos="s,242.71,727.68 244.09,737.81 255.9,823.09 292.37,1050.7 350.39,1094.5 422.38,1148.9 465.76,1116 553.39,1094.5 646.47,1071.7 743.28,\
+1009 787.58,977.72",
+ style=dashed];
+ TaxonName -> ValidTaxonName [dir=back,
+ pos="s,241.93,727.53 243.19,737.65 250.94,796.06 275.69,919.75 350.39,986.5 362.78,997.58 379.25,1004.2 395.26,1008.1",
+ style=dashed];
+ TaxonName -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,242.46,727.55 e,606.7,1170 243.72,737.62 255.04,826.89 291.3,1074.8 350.39,1127.5 385.79,1159 519.12,1167.5 596.61,1169.7"];
+ TaxonName -> SourceClassifiedA [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,247.81,727.55 e,393.37,897.74 251.56,736.87 267.73,775.98 300.7,842.09 350.39,878.5 360.18,885.68 371.75,890.94 383.5,894.81",
+ style=dotted];
+ TaxonName -> SourceClassifiedAsRelationship [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,255.78,727.55 e,378.94,833.41 261.95,735.48 282.28,761.15 314.66,797.36 350.39,819.5 356.44,823.25 362.96,826.59 369.68,829.57"];
+ Otu -> TaxonDetermination [pos="e,589.2,18.5 479.1,18.5 504.41,18.5 543.95,18.5 578.98,18.5",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,593.02,1232.3 479.1,1235.7 505.28,1234.9 546.69,1233.7 582.57,1232.6",
+ style=invis];
+ Source -> OriginCitation [pos="e,606.83,1185.8 479.1,1227.9 508.95,1218 558.57,1201.7 597.26,1189",
+ style=invis];
+ AncestorHierarchy -> SelfAndAncestor [pos="e,599.25,759.5 511.42,759.5 535.8,759.5 564.19,759.5 589.15,759.5",
+ style=dotted];
+ CitationTopic -> Topic [pos="e,424.87,1291.5 284.89,1291.5 323.67,1291.5 378.91,1291.5 414.83,1291.5",
+ style=dotted];
+ TaxonDetermination -> CollectionObject [pos="e,758.45,18.5 719.7,18.5 729.15,18.5 738.89,18.5 748.34,18.5",
+ style=dotted];
+ DescendantHierarchy -> SelfAndDescendant [pos="e,591.66,597.5 519.1,597.5 539.1,597.5 561.15,597.5 581.51,597.5",
+ style=dotted];
+ ObservationMatrixRowItem -> ObservationMatrix [pos="e,594.16,489.5 537.63,489.5 553.09,489.5 569.05,489.5 583.99,489.5",
+ style=dotted];
+ Role -> Verifier [pos="e,625.88,258.8 479.1,239.03 513.98,243.73 575.89,252.06 615.76,257.43",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,755.14,1230.5 715.64,1230.5 725.27,1230.5 735.28,1230.5 745.06,1230.5",
+ style=dotted];
+ TaxonNameAuthorRole -> TaxonNameAuthor [pos="e,593.17,181.5 526.12,181.5 544.72,181.5 564.65,181.5 583.1,181.5",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,625.75,266.22 493.46,284.04 529.14,279.23 580.66,272.29 615.5,267.6",
+ style=dotted];
+ Version -> PinboardItem [pos="e,608.62,435.5 481.19,435.5 511.48,435.5 560.3,435.5 598.23,435.5",
+ style=invis];
+ Creator -> Updater [pos="e,783.36,959.5 683.1,959.5 708.07,959.5 745.08,959.5 773.11,959.5",
+ style=invis];
+ Project -> Creator [pos="e,625.69,959.5 479.51,959.5 514.42,959.5 575.88,959.5 615.59,959.5",
+ style=invis];
+}
diff --git a/data/type_materials_model_er.dot b/data/type_materials_model_er.dot
new file mode 100644
index 00000000..46365b54
--- /dev/null
+++ b/data/type_materials_model_er.dot
@@ -0,0 +1,331 @@
+digraph TypeMaterial {
+ graph [bb="0,0,745.33,570",
+ label="",
+ outputorder=edgesfirst,
+ rankdir=LR
+ ];
+ node [label="\N"];
+ subgraph annotator_cluster {
+ graph [rank=min];
+ Citation [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#citation",
+ label=Citation,
+ pos="59.145,497",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.0832];
+ Confidence [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#confidence",
+ label=Confidence,
+ pos="59.145,248",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.4082];
+ DataAttribute [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#data-attribute",
+ label=DataAttribute,
+ pos="59.145,303",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=1.6429];
+ Tag [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#tag",
+ label=Tag,
+ pos="59.145,194",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.75];
+ Note [color="#dddeee",
+ fillcolor="#abcdef",
+ group=annotator,
+ height=0.5,
+ href="/develop/Data/models.html#note",
+ label=Note,
+ pos="59.145,357",
+ shape=oval,
+ style=filled,
+ target=_top,
+ width=0.77632];
+ }
+ subgraph core {
+ Source [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#source",
+ label=Source,
+ pos="380.83,497",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=0.75];
+ CollectionObject [color="#dddeee",
+ fillcolor="#fedcba",
+ group=core,
+ height=0.51389,
+ href="/develop/Data/models.html#collection-object",
+ label=CollectionObject,
+ pos="380.83,181",
+ shape=Mrecord,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ }
+ subgraph supporting {
+ TypeMaterial [color="#dedede",
+ fillcolor="#cdefab",
+ group=target,
+ height=0.61111,
+ href="/develop/Data/models.html#type-material",
+ label=TypeMaterial,
+ pos="222.31,305",
+ shape=doubleoctagon,
+ style=filled,
+ target=_top,
+ width=1.8894];
+ CitationTopic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#citation-topic",
+ label=CitationTopic,
+ pos="222.31,552",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2778];
+ ConfidenceLevel [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#confidence-level",
+ label=ConfidenceLevel,
+ pos="222.31,247",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.5139];
+ Keyword [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#keyword",
+ label=Keyword,
+ pos="222.31,193",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.93056];
+ PinboardItem [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#pinboard-item",
+ label=PinboardItem,
+ pos="380.83,126",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.2639];
+ Role [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#role",
+ label=Role,
+ pos="380.83,72",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ SubsequentCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-citation",
+ label=SubsequentCitation,
+ pos="532.33,491",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6944];
+ SubsequentSource [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#subsequent-source",
+ label=SubsequentSource,
+ pos="687.33,491",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.6111];
+ Topic [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#topic",
+ label=Topic,
+ pos="380.83,552",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.75];
+ VerifierRole [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier-role",
+ label=VerifierRole,
+ pos="380.83,18",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.1528];
+ Verifier [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#verifier",
+ label=Verifier,
+ pos="532.33,45",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Creator [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#creator",
+ label=Creator,
+ pos="532.33,236",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.79167];
+ Project [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#project",
+ label=Project,
+ pos="380.83,236",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.76389];
+ Protonym [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#protonym",
+ label=Protonym,
+ pos="380.83,328",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.98611];
+ Updater [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#updater",
+ label=Updater,
+ pos="687.33,236",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=0.83333];
+ OriginCitation [color="#dddeee",
+ fillcolor="#eeefff",
+ group=supporting,
+ height=0.5,
+ href="/develop/Data/models.html#origin-citation",
+ label=OriginCitation,
+ pos="532.33,431",
+ shape=box,
+ style=filled,
+ target=_top,
+ width=1.3194];
+ }
+ Citation -> Source [pos="e,353.57,497 98.388,497 160.46,497 282.31,497 343.27,497",
+ style=dotted];
+ Citation -> CitationTopic [pos="e,176,536.54 91.219,507.6 112.46,514.85 141.18,524.66 166.24,533.21",
+ style=dotted];
+ Confidence -> ConfidenceLevel [pos="e,167.6,247.33 110.25,247.69 125.19,247.6 141.76,247.49 157.44,247.4",
+ style=dotted];
+ Tag -> Keyword [pos="e,188.66,193.2 86.397,193.84 111.26,193.68 149.04,193.45 178.31,193.27",
+ style=dotted];
+ Source -> SubsequentCitation [pos="e,471.16,493.41 407.87,495.95 422.69,495.36 442.03,494.58 461,493.82",
+ style=invis];
+ Source -> OriginCitation [pos="e,490.37,449.08 407.87,485.5 428.04,476.6 456.61,463.99 481.18,453.14",
+ style=invis];
+ TypeMaterial -> Citation [pos="e,74.165,480.3 202.81,327.03 172.51,363.13 112.51,434.61 80.84,472.35"];
+ TypeMaterial -> Confidence [pos="e,95.912,260.65 174.92,288.59 153.12,280.88 127.22,271.72 105.54,264.06"];
+ TypeMaterial -> DataAttribute [pos="e,118.33,303.72 154.17,304.17 145.71,304.06 137.04,303.95 128.56,303.85"];
+ TypeMaterial -> Tag [pos="e,83.893,201.66 176.02,288.17 168.32,284.19 160.74,279.47 154.29,274 132.58,255.58 139.99,239.44 118.29,221 110.94,214.75 101.9,\
+209.64 93.165,205.61"];
+ TypeMaterial -> Note [pos="e,84.622,349.1 172.53,320.74 147.23,328.9 116.94,338.67 94.188,346.02"];
+ TypeMaterial -> Source [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,233.69,327.23 e,353.68,483.99 238.25,336.33 255.78,370.67 287.42,425.95 326.33,464 331.8,469.35 338.28,474.25 344.82,478.53",
+ style=dotted];
+ TypeMaterial -> CollectionObject [dir=back,
+ pos="s,269.37,288.46 278.04,283.41 282.43,280.59 286.61,277.46 290.33,274 314.51,251.51 302.7,232.07 326.33,209 330.08,205.34 334.4,202.04 \
+338.94,199.1",
+ style=dashed];
+ TypeMaterial -> PinboardItem [pos="e,336.05,144.03 271.48,288.93 278.51,284.93 285.12,280.01 290.33,274 327.04,231.57 290.34,196.05 326.33,153 326.94,152.27 327.58,\
+151.55 328.24,150.85"];
+ TypeMaterial -> Role [pos="e,353.7,79.691 271.93,289.31 278.91,285.26 285.39,280.23 290.33,274 339.65,211.77 278.07,162.06 326.33,99 331.02,92.865 337.49,88.018 \
+344.31,84.227"];
+ TypeMaterial -> SubsequentCitation [pos="e,471.2,478.3 238.23,327.35 256.3,352.84 289.01,394.18 326.33,419 367.33,446.27 419.81,464.45 461.41,475.72"];
+ TypeMaterial -> VerifierRole [pos="e,339.17,33.067 272.52,289.3 279.34,285.27 285.61,280.24 290.33,274 352.41,191.78 265.65,128.27 326.33,45 327.72,43.087 329.29,41.301 \
+330.99,39.634"];
+ TypeMaterial -> Creator [dir=back,
+ pos="s,287.61,293.62 297.49,291.78 338.32,284.14 389.81,273.89 435.33,263 458.56,257.44 484.64,250.03 503.75,244.38",
+ style=dashed];
+ TypeMaterial -> Project [dir=back,
+ pos="s,264.02,287.05 273.51,282.87 299.95,271.21 331.31,257.39 353.08,247.79",
+ style=dashed];
+ TypeMaterial -> Protonym [dir=back,
+ pos="s,290.59,314.89 300.74,316.38 316.24,318.66 331.78,320.94 344.93,322.87",
+ style=dashed];
+ TypeMaterial -> Updater [dir=back,
+ pos="s,255.76,325.47 264.89,330.5 283.05,340.21 305.04,350.11 326.33,355 373.54,365.85 388.06,365.64 435.33,355 522.13,335.46 614.19,\
+282.28 658.84,254.09",
+ style=dashed];
+ TypeMaterial -> OriginCitation [arrowhead=obox,
+ arrowtail=obox,
+ dir=both,
+ pos="s,244.5,327.19 e,484.56,427.47 251.79,334.17 271.16,352.34 298.29,374.72 326.33,388 373.38,410.3 431.94,421.1 474.4,426.3"];
+ CitationTopic -> Topic [pos="e,353.71,552 268.58,552 292.43,552 321.28,552 343.63,552",
+ style=dotted];
+ Role -> Verifier [pos="e,503.81,49.969 407.87,67.297 431.57,63.015 466.86,56.643 493.64,51.806",
+ style=invis];
+ SubsequentCitation -> SubsequentSource [pos="e,628.97,491 593.36,491 601.69,491 610.29,491 618.75,491",
+ style=dotted];
+ VerifierRole -> Verifier [pos="e,503.75,40.02 422.68,25.378 444.82,29.376 471.99,34.284 493.62,38.191",
+ style=dotted];
+ Creator -> Updater [pos="e,657.26,236 561.03,236 585.06,236 620.1,236 647.02,236",
+ style=invis];
+ Project -> Creator [pos="e,503.82,236 408.55,236 432.28,236 467.2,236 493.74,236",
+ style=invis];
+}
diff --git a/develop/Data/index.html b/develop/Data/index.html
new file mode 100644
index 00000000..fbc6016b
--- /dev/null
+++ b/develop/Data/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Overview | TaxonWorks Docs
+
+
+
+
+
+ Addresses the questions: "What does the data-store in TaxonWorks look like, and what is the thought process behind its development? Who are the target audiences for these docs?"
To understand the data model used in TaxonWorks, in addition to the discussion below, there are series of linked resources here.
Graphical entity-relationship ("ER" ) figures. We use er
in the "modelling a domain sense", not particularly a 1:1 description of the links between model and database (though there are numerous times where this is the case). Algorithmically drawn, their purpose is to provide an overview of how data in TaxonWorks are modelled at a generalized level. To draw these figures certain constraints are used, this means that they are cleaner looking, and not cluttered, but also that they may not completely illustrate all pertinent entities or relationships as defined for that model. Follow the er
links or see the Model
section. Most nodes can be clicked to navigate onwards. A description of the database table for each model. Tables are named as seen in the headers. Many (but not all) related tables are linked in the column name. Follow the table
links or see theTables
section. A text description of each model/class. This is provided in the context of the code for that model on a separate website . That website is generated with each code commit, it includes the full documentation for the TaxonWorks code-base, so it is easy to get lost for the uninitiated. Follow the rdoc
links from the respective tables and models. Using this site as a basis for exploring rdoc
can keep you from getting lost therein. Direct links (api
) to the resources behind the models as represented by TaxonWorks external facing API. For now see documentation at https://api.taxonworks.org . Some models do not yet have a corresponding resource. Some models properties and attributes are accessible by related API endpoints. There are various target audiences for this information, some served more than others. TaxonWorks users may belong to more than one of these roles, they are not exclusive of one-another. With some small exceptions no one resource here fully meets the needs of these audiences, but with a little imagination they have a role. Those who might make use include:
Developers - The obvious target group. All resources (er
, table
, rdoc
, api
) are routinely referenced during developmentTaxonWorks' scientists - TaxonWorks has many facets, browsing the er
diagrams can illuminate data types that you might not have known existed, or give you a better understanding of how some of interfaces relate to one-anotherScientists migrating or evolving personal databases - Perhaps looking for how they might migrate their data into TaxonWorks, table
documentation is a potential start for those who seek to migrate their data by scriptsOntology curators - While not a true ontology, many of the models illustrated in the er
must be represented in ontologies and all need to be abstracted if ontologies are to represent core needs of biodiversity informaticsStandards builders - Software and tools guide standards development, and vice-versa. Because standards take a long time to develop tools often "predict" what might need to be standardized. Tools may directly implement standards or serialize to them. All of the entities, and their attributes here, potentially contribute to the broader standards discussion.High-level data modellers - E.g. those considering archival or indexing resources, er
diagrams self-describe their domain, and can be used to get a quick over-view of the kinds of data that data-aggregators might need to integrate at a broader scaleStudents - Students are perhaps first exposed to taxonomy via specimens in natural history collections, reading papers in print, and in their course work or textbooks. There is whole layer of data-science (biodiversity informatics) behind taxonomy, the illustrations and documentation here can act as a resource for learning about how we describe and classify the Earth's species.Scientists - In addition to all the science being done, scientists are constantly being asked to do more, differently. How should I organize my data? How might I integrate the diversity of my research program? I'm told to get out of Excel, how might that look? They want Identifiers for People ? A majority of the data types represented here are accessible via an externally-facing API well suited for all the data/information science running in parallel to the observation capture going on in labs, the field, and throughout the scientific process.Semantic web enthusiasts - A challenge is to turn the generalized er
models into RDF, for example how might we see TaxonWorks data in Wikidata ? This challenge shares many concerns with ontology builders. What are the universals? Properties? Classes? An "object graph", exported from TaxonWorks for a collection object, illustrating a serialization of TaxonWorks that begins to approximate that required in RDF representations. Notice Identifiers (orange triangles), People, Names (pink squares) and Taxon Concepts (green hexagons) are all their own classes of data, among numerous other types. The figure layout was post-processed in Illustrator. At its core TaxonWorks' data model is a handful of straightforward, yet broad core
concepts (orange rounded ovals below):
Taxon names - about nomenclatureCollection objects - about specimensCollecting events - who, where, when, and how some thing was collectedOTUs - like species or taxon concepts, but even broader, a place to link all the bits that aren't nomenclature, a useful biological unit permitting meaningful workObservations - data about CollectionObjects or OTUs, e.g. characters or measurementsDescriptors - classes of Observations, like quantitative, qualitative, or statisticalAsserted distributions - the low-resolution distribution of OTUs according to the literatureBiological associations - biological relationships, like host-parasiteSequence - curated chunks of the genomeSource - a referenceThe other types of data are loosely classified as annotations
(blue ovals) and supporting
(light-blue rectangles). Annotations can be thought of as ways to customize the data-model. Supporting data are the bits of information that link to and across core
classes, for example a Citation links a Source to nearly anything. This organization, core, supporting, annotation, is echoed in the UI by clicking the "Data" tab in the hub.
Key data classes in TaxonWorks. 1) Nodes. Orange, rounded rectangles: 'core' data; light-blue rectangles: 'supporting' data; blue ovals: 'annotators'x. 2) Edges. Solid lines: key relationships; dashed lines: examples, i.e. not all relationships to the class being pointed at are shown. Arrows point to the many side of the relationship, for example one OTU has many Identifiers. Click to navigate to that class. TaxonWorks uses an "ontology-based, graph-aware, relational database" approach to representing and storing data. Practically, this means several things:
Each data table corresponds to a class of data. A record in that table asserts that an single instance of that class exists. This is the "Ontology" bit. In various cases data are organized into graph patterns (network-based, i.e. nodes, edges, and their attributes) amenable to down-stream migration into graph databases (e.g.TaxonName
and Biological associations ) or serialization into formats like RDF. Tables are named exactly as the class is named, in a pluralized format, for example the class TaxonName
is stored in table taxon_names
). Some classes of data have subclasses (e.g. BiologicalCollectionObject
is a subclass of CollectionObject and Specimen
is a subclass of BiologicalCollectionObject
. Each subclass adds assertions as to what the thing being represented is. Subclass assertions are stored in the field type
(e.g. CollectionObject . Some classes of data are "polymorphic", particularly annotators (see below). This means that one table references many other tables by a combination of <object>_type
and <object>_id
. For example see the fields note_object_id
and note_object_type
in Notes . There are well known arguments as to when/how each aspect of this approach breaks down or fails in certain circumstances. Our approach is to try and balance the semantics of the data models with the understanding and needs of the scientists using them. Too much semantics and there is a disconnect between what they actually do and the model, too little and things like identifiers, citations, provenance and attribution are not supported.
In addition to the individual table-class approach there are several higher-level classes, used to carefully isolate the differences between users, the data they curator, and how those data are displayed and presented:
Data - The properties of things in TaxonWorks. When designing our data-store we strive to eliminate, or minimize all fields that describe how we display or see Data (see below). Data are further classified, more for the purposes of utility than meaning, into three categories: Core - the basic categories most useful for describing life Supporting - the data that link or extend core classes Annotation - General classes of of data that can be applied to most core and supporting classes Project - Describes Users, and Projects, i.e. manages who can curate what data. UI/Display/Layout - Tables that define how we display, visualize, or present Data. When customizing or adapting TaxonWorks to your needs, maintaining this separate of concerns will facilitate the long term integrity of your data. For example, you can create custom attributes for Data classes via DataAttributes , these attributes should describe the things they are tied to, not just what "I want to see on some page".
There are various constraints (in ontology-speak "universals") on TaxonWorks models/concepts. For example if you create a CollectionObject instance then we assume some very specific things are true in addition to the data you provide. Definitions, and assumptions are encapsulated in the model via code, in the ways we serialize data (e.g. DwC exports), and in the textual descriptions (viewable in rdoc
), this partitioning is not optimal, but perhaps reflect the reality of how things get built. These assumptions must be further formalized both for computers (e.g. in RDF serialization, or ontology representation) and for human understanding. That is, people will use tools however they can, not however they should, the best way to prevent this "drift" away from intent is education as to why it is important to "follow the rules".
As noted the database model is mirrored almost exactly in code, for example the otus table
is represented by an OTU model
in a otu.rb file
. This is broadly a convention from Rails , the back-end software used by TaxonWorks.
TaxonWorks uses PostgreSQL with PostGIS extensions. For an auto-generated schema in text format see db/schema.rb .
Prev
Coding
+
+
+
diff --git a/develop/Data/models.html b/develop/Data/models.html
new file mode 100644
index 00000000..40851c20
--- /dev/null
+++ b/develop/Data/models.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Models | TaxonWorks Docs
+
+
+
+
+
+ This file auto-generated 2022-02-08 10:47:07 -0600 via 'rake tw:docs:model_ers'. Do not hand-edit.
Algorithmically generated ER diagrams. Node shapes: green octagons- the target model the ER perspective is drawn from; orange rounded rectangles- core models; light purple rectangles- supporting models; blue ovals- annotating models; purple diamonds- polymorphic models (matches to many other models). Node edges (arrow points to many side): solid arrows- 'has many'; dotted arrows- target model 'has many' through one side model; dashed arrows: target model 'has one'; dotted squared arrows: target model 'has one', but through a corresponding dotted relationship. See also description in Overview . Click a node to navigate (not all are linked).
Alternate value , Asserted distribution , Attribution , Biocuration classification , Biological association , Biological associations biological associations graph , Biological associations graph , Biological relationship type , Biological relationship , Character state , Citation topic , Citation , Collecting event , Collection object observation , Collection object , Collection profile , Common name , Confidence , Container item , Container , Content , Controlled vocabulary term , Data attribute , Dataset record field , Dataset record , Depiction , Derived collection object , Descriptor , Documentation , Document , Extract , Gene attribute , Geographic area type , Geographic area , Geographic areas geographic item , Geographic item , Georeference , Identifier , Image , Import dataset , Label , Language , Loan item , Loan , Namespace , Note , Observation matrix , Observation matrix column item , Observation matrix column , Observation matrix row item , Observation matrix row , Observation , Organization , Origin relationship , Otu page layout section , Otu page layout , Otu , Person , Preparation type , Project member , Project source , Protocol relationship , Protocol , Ranged lot category , Repository , Role , Sequence relationship , Sequence , Serial chronology , Serial , Sled image , Source , Tagged section keyword , Tag , Taxon determination , Taxon name classification , Taxon name relationship , Taxon name , Type material
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc
top ,table ,rdoc ,api
top ,table ,rdoc ,api
top ,table ,rdoc ,api
top ,table ,rdoc
Prev
Overview
Next
Tables
+
+
+
diff --git a/develop/Data/tables.html b/develop/Data/tables.html
new file mode 100644
index 00000000..a648cf0f
--- /dev/null
+++ b/develop/Data/tables.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Tables | TaxonWorks Docs
+
+
+
+
+
+ This file auto-generated 2022-02-08 10:47:05 -0600 via 'rake tw:docs:table_markdown'. Do not hand-edit.
alternate_values , asserted_distributions , attributions , biocuration_classifications , biological_associations , biological_associations_biological_associations_graphs , biological_associations_graphs , biological_relationship_types , biological_relationships , character_states , citation_topics , citations , collecting_events , collection_object_observations , collection_objects , collection_profiles , common_names , confidences , container_items , containers , contents , controlled_vocabulary_terms , data_attributes , dataset_record_fields , dataset_records , depictions , derived_collection_objects , descriptors , documentation , documents , extracts , gene_attributes , geographic_area_types , geographic_areas , geographic_areas_geographic_items , geographic_items , georeferences , identifiers , images , import_datasets , labels , languages , loan_items , loans , namespaces , notes , observation_matrices , observation_matrix_column_items , observation_matrix_columns , observation_matrix_row_items , observation_matrix_rows , observations , organizations , origin_relationships , otu_page_layout_sections , otu_page_layouts , otus , people , preparation_types , project_members , project_sources , protocol_relationships , protocols , ranged_lot_categories , repositories , roles , sequence_relationships , sequences , serial_chronologies , serials , sled_images , sources , tagged_section_keywords , tags , taxon_determinations , taxon_name_classifications , taxon_name_relationships , taxon_names , type_materials
top ,er ,rdoc
Name Type id integer alternate_value_object_attribute character varying alternate_value_object_id integer alternate_value_object_type character varying language _idinteger type character varying value text created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer geographic_area_id integer is_absent boolean otu _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id bigint attribution_object_id bigint attribution_object_type character varying copyright_year integer license character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id bigint
top ,er ,rdoc
Name Type id integer biocuration_class _idinteger biological_collection_object _idinteger position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer biological_association_object_id integer biological_association_object_type character varying biological_association_subject_id integer biological_association_subject_type character varying biological_relationship_id integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer biological_association_id integer biological_associations_graph_id integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer biological_property_id integer biological_relationship_id integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer definition text inverted_name character varying is_reflexive boolean is_transitive boolean name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer description_name character varying descriptor _idinteger key_name character varying label character varying name character varying position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer citation _idinteger pages character varying topic _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer citation_object_id integer citation_object_type character varying is_original boolean pages character varying source _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer cached text cached_level0_geographic_name character varying cached_level1_geographic_name character varying cached_level2_geographic_name character varying document_label text elevation_precision character varying end_date_day integer end_date_month integer end_date_year integer field_notes text formation character varying geographic_area_id integer group character varying lithology character varying max_ma numeric maximum_elevation numeric md5_of_verbatim_label character varying member character varying min_ma numeric minimum_elevation numeric print_label text start_date_day integer start_date_month integer start_date_year integer time_end_hour smallint time_end_minute smallint time_end_second smallint time_start_hour smallint time_start_minute smallint time_start_second smallint verbatim_collectors character varying verbatim_date character varying verbatim_datum character varying verbatim_elevation character varying verbatim_geolocation_uncertainty character varying verbatim_habitat text verbatim_label text verbatim_latitude character varying verbatim_locality character varying verbatim_longitude character varying verbatim_method character varying verbatim_trip_identifier character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer data text created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer accessioned_at date buffered_collecting_event text buffered_determinations text buffered_other_labels text collecting_event_id integer deaccession_reason character varying deaccessioned_at date preparation_type_id integer ranged_lot_category_id integer repository _idinteger total integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer arrangement_level integer collection_type character varying computerization_level integer condition_of_labels integer conservation_status integer container_condition integer container _idinteger data_quality integer identification_level integer number_of_collection_objects integer number_of_containers integer otu _idinteger processing_state integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer end_year integer geographic_area_id integer language _idinteger name character varying otu _idinteger start_year integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer confidence_level_id integer confidence_object_id integer confidence_object_type character varying position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer contained_object_id integer contained_object_type character varying disposition character varying disposition_x integer disposition_y integer disposition_z integer parent_id integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer disposition character varying name character varying print_label text size_x integer size_y integer size_z integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer language _idbigint otu _idinteger revision_id integer text text topic _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer css_color character varying definition text name character varying position integer type character varying uri character varying uri_relation character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer attribute_subject_id integer attribute_subject_type character varying controlled_vocabulary_term_id integer import_predicate character varying type character varying value text created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id bigint dataset_record_id bigint encoded_dataset_record_type integer import_dataset_id integer position integer value character varying project_id integer
top ,er ,rdoc
Name Type id bigint import_dataset_id bigint metadata jsonb status character varying type character varying created_by_id integer updated_by_id integer created_at timestamp(6) without time zone updated_at timestamp(6) without time zone project_id bigint
top ,er ,rdoc
Name Type id integer caption text depiction_object_id integer depiction_object_type character varying figure_label character varying image _idinteger is_metadata_depiction boolean position integer sled_image_id bigint sled_image_x_position integer sled_image_y_position integer svg_clip xml svg_view_box character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer collection_object_id integer collection_object_observation_id integer position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer cached_gene_attribute_sql character varying default_unit character varying description text description_name character varying gene_attribute_logic character varying key_name character varying name character varying position integer short_name character varying type character varying weight integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer document _idinteger documentation_object_id integer documentation_object_type character varying position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer document_file_content_type character varying document_file_file_name character varying document_file_file_size integer document_file_fingerprint character varying document_file_updated_at timestamp without time zone is_public boolean page_map jsonb page_total integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer day_made integer month_made integer repository _idbigint verbatim_anatomical_origin character varying year_made integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer controlled_vocabulary_term_id integer descriptor _idinteger position integer sequence _idinteger sequence_relationship_type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer data_origin character varying geographic_area_type_id integer iso_3166_a2 character varying iso_3166_a3 character varying level0_id integer level1_id integer level2_id integer name character varying parent_id integer tdwgID character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer data_origin character varying date_valid_from character varying date_valid_to character varying geographic_area_id integer geographic_item_id integer origin_gid integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer geometry_collection geography(GeometryCollectionZ,4326) line_string geography(LineStringZ,4326) multi_line_string geography(MultiLineStringZ,4326) multi_point geography(MultiPointZ,4326) multi_polygon geography(MultiPolygonZ,4326) point geography(PointZ,4326) polygon geography(PolygonZ,4326) type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer api_request character varying collecting_event_id integer day_georeferenced integer error_depth numeric error_geographic_item_id integer error_radius numeric geographic_item_id integer is_median_z boolean is_public boolean is_undefined_z boolean month_georeferenced integer position integer type character varying year_georeferenced integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer cached text identifier character varying identifier_object_id integer identifier_object_type character varying namespace _idinteger position integer relation character varying type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer height integer image_file_content_type character varying image_file_file_name character varying image_file_file_size integer image_file_fingerprint character varying image_file_meta text image_file_updated_at timestamp without time zone pixels_to_centimeter double precision user_file_name character varying width integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id bigint description character varying metadata jsonb source_content_type character varying source_file_name character varying source_file_size bigint source_updated_at timestamp without time zone status character varying type character varying created_by_id integer updated_by_id integer created_at timestamp(6) without time zone updated_at timestamp(6) without time zone project_id bigint
top ,er ,rdoc
Name Type id bigint is_copy_edited boolean is_printed boolean label_object_id bigint label_object_type character varying style character varying text character varying total integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer alpha_2 character varying alpha_3_bibliographic character varying alpha_3_terminologic character varying english_name character varying french_name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer date_returned date disposition character varying loan _idinteger loan_item_object_id integer loan_item_object_type character varying position integer total integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer date_closed date date_received date date_requested date date_return_expected date date_sent date is_gift boolean lender_address text recipient_address character varying recipient_country character varying recipient_email character varying recipient_honorific character varying recipient_phone character varying request_method character varying supervisor_email character varying supervisor_phone character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer delimiter character varying institution character varying is_virtual boolean name character varying short_name character varying verbatim_short_name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc ,api
Name Type id integer note_object_attribute character varying note_object_id integer note_object_type character varying text text created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer controlled_vocabulary_term_id integer descriptor _idinteger observation_matrix_id integer position integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer cached_observation_matrix_column_item_id integer descriptor _idinteger observation_matrix_id integer position integer reference_count integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer collection_object_id integer controlled_vocabulary_term_id integer observation_matrix_id integer otu _idinteger position integer taxon_name_id bigint type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer cached_observation_matrix_row_item_id integer collection_object_id integer name character varying observation_matrix_id integer otu _idinteger position integer reference_count integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer cached character varying cached_column_label character varying cached_row_label character varying character_state_id integer collection_object_id integer continuous_unit character varying continuous_value numeric description text descriptor _idinteger frequency character varying otu _idinteger presence boolean sample_max numeric sample_mean numeric sample_median numeric sample_min numeric sample_n integer sample_standard_deviation numeric sample_standard_error numeric sample_units character varying type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id bigint address character varying alternate_name character varying area_served_id integer department_id integer description text disambiguating_description text duns character varying email character varying global_location_number character varying legal_name character varying name character varying parent_organization_id integer same_as_id integer telephone character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer new_object_id integer new_object_type character varying old_object_id integer old_object_type character varying position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer dynamic_content_class character varying otu_page_layout_id integer position integer topic _idinteger type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer name character varying taxon_name_id integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer cached text first_name character varying last_name character varying prefix character varying suffix character varying type character varying year_active_end integer year_active_start integer year_born integer year_died integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer definition text name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer clipboard jsonb is_project_administrator boolean user_id integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer source _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer position integer protocol _idinteger protocol_relationship_object_id integer protocol_relationship_object_type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer description text name character varying short_name text created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer maximum_value integer minimum_value integer name character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer acronym character varying institutional_LSID character varying is_index_herbariorum boolean name character varying status character varying url character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer organization _idbigint person _idinteger position integer role_object_id integer role_object_type character varying type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer object_sequence _idinteger subject_sequence _idinteger type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer name character varying sequence text sequence_type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer preceding_serial _idinteger succeeding_serial _idinteger type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer first_year_of_issue smallint last_year_of_issue smallint name text place_published character varying primary_language _idinteger publisher text translated_from_serial _idinteger created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id bigint cached_total_collection_objects integer cached_total_columns integer cached_total_rows integer image _idbigint metadata jsonb object_layout jsonb created_by_id integer updated_by_id integer created_at timestamp(6) without time zone updated_at timestamp(6) without time zone project_id bigint
top ,er ,rdoc ,api
Name Type id integer abstract text address character varying annote character varying author text bibtex_type character varying booktitle character varying cached text cached_author_string text cached_nomenclature_date date chapter character varying copyright text crossref character varying day smallint doi character varying edition character varying editor character varying howpublished character varying institution character varying isbn character varying issn character varying journal character varying key character varying language character varying language _idinteger month character varying note character varying number character varying organization character varying pages character varying publisher character varying school character varying serial _idinteger series character varying stated_year character varying title text translator character varying type character varying url character varying verbatim character varying verbatim_contents text verbatim_keywords text volume character varying year smallint year_suffix character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone
top ,er ,rdoc
Name Type id integer keyword _idinteger otu_page_layout_section_id integer position integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer keyword _idinteger position integer tag_object_attribute character varying tag_object_id integer tag_object_type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer biological_collection_object _idinteger day_made integer month_made integer otu _idinteger position integer print_label text year_made integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer taxon_name_id integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer object_taxon_name_id integer subject_taxon_name_id integer type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc ,api
Name Type id integer cached character varying cached_author_year character varying cached_classified_as character varying cached_html character varying cached_is_valid boolean cached_misspelling boolean cached_nomenclature_date date cached_original_combination character varying cached_original_combination_html character varying cached_primary_homonym character varying cached_primary_homonym_alternative_spelling character varying cached_secondary_homonym character varying cached_secondary_homonym_alternative_spelling character varying cached_valid_taxon_name_id integer etymology text feminine_name character varying masculine_name character varying name character varying neuter_name character varying parent_id integer rank_class character varying type character varying verbatim_author character varying verbatim_name character varying year_of_publication integer created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
top ,er ,rdoc
Name Type id integer collection_object_id integer protonym _idinteger type_type character varying created_by_id integer updated_by_id integer created_at timestamp without time zone updated_at timestamp without time zone project_id integer
Prev
Models
+
+
+
diff --git a/develop/bug-reporting.html b/develop/bug-reporting.html
new file mode 100644
index 00000000..56d49621
--- /dev/null
+++ b/develop/bug-reporting.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Bug reporting | TaxonWorks Docs
+
+
+
+
+
+ Where to file your issue if it regards:
Before you open an issue:
Check to see that the issue is indeed new by carefully reviewing the existing issues. While filing your issue:
Use a issue template if available, this categorizes your insights into more actionable items for those seeking to address it Tell a story! Give us enough background so that we can replicate exactly what you did. Include a success criterion. How do we know we've succeeded in addressing the issues without contacting you again? Err on providing more, rather than less information. Provide a meaningful title that identifies your role, and what you seek to accomplish, e.g. As an X I need Y to do Z
Some other conventions:
If you have the permissions, categorize your issue using a label. Use the prefix "Task -" in the name to indicate the request for a new or improved task. Prev
Contributing
Next
Coding
+
+
+
diff --git a/develop/coding.html b/develop/coding.html
new file mode 100644
index 00000000..1f31fd67
--- /dev/null
+++ b/develop/coding.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Coding | TaxonWorks Docs
+
+
+
+
+
+
+
+
+
diff --git a/develop/contributing.html b/develop/contributing.html
new file mode 100644
index 00000000..79bec7bf
--- /dev/null
+++ b/develop/contributing.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+ Contributing | TaxonWorks Docs
+
+
+
+
+
+ Contributions can come in many different ways, not all are technical. How do I contribute? You can always contact us with questions.
First, thanks, this is complicated stuff. Interface (e.g. forms, reports, searches) mockups are graphical ways of asking for new features. We love to see them. To create a mock-up you can use tools like Illustrator, Photoshop, or more technical design tools like Balsamiq or Sketch, or just draw them on paper and take a picture with your phone. The issue templates have inputs for handling images, just drag and drop them there. Add a little story, or multiple pictures to help describe how you might use the interface.
Send! It is super useful for you to record your screen, or position a video camera to capture your work on-screen and arround you. This way we see exactly how you work. You can send us big videos through file sharing services like http://www.dropsend.com/ . Find ways to Contact us here .
Various README.md files exist in the code-base. We have code linter (Rubocop), but it is not heavily used. With growth this may change. Fork the repository on GithubMake a new branch off of the development branch It helps if the branch tracks an issue number, like 1234_my_feature_request
If you have experience, rebase your branch against development before making a pull request From your repository on Github select your branch, and use buttons there to make a pull request . TaxonWorks code documentation is done inline with Yard tags .
This software and workflow together make it possible for all to contribute to TaxonWorks Doc. Note all the pages here in docs.taxonworks.org have an "edit this page" feature. Scroll down to bottom of this page to see it.
You can edit files offline, on your own local computer, or online within the browser.
You will need a Github account.
NOTE: Using this method also ensures everyone gets contribution credit and recognition along with the ability to generate metrics and track this work.
A brief summary of the steps.
Login to your Github account. Return to docs.taxonworks.org On any given document, scroll to the bottom, and click Edit this page
where you see a need. Add or edit your text. Ensure your edits follow the style conventions . We use Markdown to style text. If you need to add an image see including a screenshot . Click Commit changes
to submit a "pull request." In the form that pops up: Add a (very) brief description of your change in the filed that has Update README.md
in muted colors Add a longer optional description in the bigger box, if you want In your message not to use words like "Changed, tweaked, updated", describe what was done Choose the second option Create a new branch ...
. There is an exception to this, if your changes are small, and ready to go directly to the public site, then you can commit to the development
branch. Click Commit changes
again A TaxonWorks Docs GitHub repository team member will review, make edits, ping you with questions if needed, and then ultimately accept the pull request to "merge" this our documentation.
In deciding which branch to make a change on start by asking the question: "Is my change ready to go live, right now?" If the answer is yes (and you have permissions) then you can commit to the development branch . If the answer is no (e.g. you want to further refine your text), then you should commit to a new branch.
In addition:
The development branch is the staging ground for the main branch. You should always assume that that development branch changes will go live at any time. Development changes may accumulate before moving to main .The main branch must never be committed to directly. Changes to main happen when development is merged into it. It is always safest, and OK, to start a new branch. It's best to limit the scope of your changes on each new branch. If you have large/ongoing changes to your branch its useful to start your editing session by merging development into your branch . This keeps the differences between development and your branch minimal. If you are editing locally, make sure you syncronize your changes with those on the remote server (git pull
) before you start your editing session. Offline editing follows a typical Git-based workflow that are detailed on Github and many other places online.
Fork the repository Clone the fork your local machine Make a new feature branch Edit, and commit to the branch Push your local edits to your Github fork Make a pull request In adding documentation, you will note that on any page at docs.taxonworks.org you can click the Edit pencil icon to add / edit text. To manage the screenshot image files we add to the documentation, we use TaxonWorks Meta Project
hosted on sfg.taxonworks.org . To add screenshots to this documentation, you'll need to become a member of that TaxonWorks Meta Project
. Let us know you want to be added (e.g. send dlpaul AT illinois DOT edu an email, or ping us on gitter or our TaxonWorks Slack Workspace ). When taking screenshots, note the resolution of your computer's monitor makes a difference if these images are sharp and clear or out of focus.
Take the desired screenshots. Upload these images (in bulk or one-at-a-time) to the TaxonWorks Meta Project
using the New Image
task. In TaxonWorks, find the generated image link URLs, using the Filter Image
task. Try Filter Image
using the Housekeeping
filter to limit your result set to only images uploaded by you.
In the resulting set, click on the desired image, then Click the Navigate radial
under the image and select Show
. From Attributes
copy the short URL to orginal
URL link. Return to editing documentation and use the Markdown format or HTML format below to insert image URLs (examples next). Note that both methods allow you to specify the image size. Examples here show the markdown (md) format for adding a caption to an image.
Select one of the four options below for your caption. Put that text string into the documentation as described next. With the position
option, choose left
, center
, or right
which aligns your caption text according to what you pick. Enter the text of your choice in-between the brackets [caption text goes here]
. Paste in the short URL to orginal
URL link (from Filter Image
> Navigate radial
> Show
> Attributes
). Add alt
text in-between brackets. It is best practice to include this for accessibility. (Optional) Declare the width or height or both of the image to control the size displayed. The default sizes works well. Sometimes, depending on the screenshot, it might appear too large and then this option gives you the ability to modify the size. #position[caption text goes here](link [alt text if you want it])
+#position[caption text goes here](link [alt text if you want it] w{60%})
+#position[caption text goes here](link [alt text if you want it] h{50%})
+#position[caption text goes here](link [alt text if you want it] w{80%} h{50%})
+
< figure>
+ < img
+ src = " https://sfg.taxonworks.org/s/rdc03q"
+ alt = " Sample image"
+ style = " width : 100%"
+ />
+ < figcaption> Fig.1 - A TaxonWorks Interface</ figcaption>
+</ figure>
+
After you fork the repository you can use Github directly to add a new file . You can also add a new file within the Github interface In brief this is controlled alphabetically, or it can be over-written via 2 frontmatter parameters, sidebarPosition
and sidebarParentPosition
.
Where: In any (README.md or other) documentation file. When: You want to position the content of that document within the context of the other files within that directory.
Where: Only in a README.md. When: You want to position the name of the directory within the context of other directories and files at the level of that directory.
First, the system will take the files within the directory in alphabetical order of the filenames to generate the sidebar. For example:
Folder structure:
-- My folder example
+---- bar.md
+---- foo.md
+
Filename: foo.md
# A is the first letter of this title
+
Filename: bar.md
# B is the first letter of this title
+
My folder example
+ B is the first letter of this title
+ A is the first letter of this title
+
sidebarPosition
allows you to change the order of the sidebar regardless of the alphabetical order of the files . Let's take the example above, but now we're going to add sidebarPosition
in each file to change the order:
Filename: foo.md
---
+sidebarPosition: 200
+---
+# A is the first letter of this title
+
Filename: bar.md
---
+sidebarPosition: 100
+---
+# B is the first letter of this title
+
My folder example
+ B is the first letter of this title
+ A is the first letter of this title
+
We use Markdown. Many guides exist, for example on GitHub .
Bold - ? Italics - As typically used in English writing, to add emphasis, or draw attention. "Double quotes" - follow typical English use. 'Single quoted words' are literal values to be input or observed Bullets - Actions we are instructing the user to take. Do this now. Numbered bullets - Unused? Backticks ` are used to wrap text. See next. Highlighted words
(surrounded by backticks) refer to, typically literal, text or elements in the application, that are generally part of the user interface (as opposed to dynamic data being displayed). For example they might be on button or field names like "Notice the Data
, Tasks
, Favourite
tabs".Inline quotes - ?? (use "> ") this is an inline quote
Triple-tick blocks - use these for literal examples. Put 3 backtick marks ``` before the text block and 3 backtick marks after the text. This results in the following block in documentation. Some code, or literal example.
+
How to issues are triaged, prioritized, and discussed.
Not everyone has permissions to label issues. See their descriptions.
Prev
Installation
Next
Bug reporting
+
+
+
diff --git a/develop/index.html b/develop/index.html
new file mode 100644
index 00000000..5bffd641
--- /dev/null
+++ b/develop/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ The big picture | TaxonWorks Docs
+
+
+
+
+
+ Why emphasize that software development in science is big-picture important? How are the resources available to developers described here?
A project the nature of TaxonWorks needs contributions from many people to succeed over the long term. To that end we're working hard to build a foundation that permits and encourages anyone to contribute to the project. Highlights include:
All elements of the project are open source. Example meta-projects exist, for example taxonowrks_stats (demo ) illustrating how to build an application off of the API Code generators let you stub a new task view (core feature) or batch-loader in a single line. TaxonWorks is built on Rails. The conventions there acts a wrapper around features that can be written in Ruby or other frameworks like Vue , or other webpack supported frameworks. TaxonWorks is extensively unit tested. This means you can code and contribute with a lot less fear of breaking things. TaxonWorks is deployed in production in Kubernetes , cutting edge application deployment and management software. The Species File Group and its members have held hackathons and many in-house joint workshops. Contact them if you're interested in participating on site. They are also interested in supporting visits to would-be developers, students, or others wishing to get a bootcamp in TaxonWorks development. Docker images let you build against the API in your own JavaScript framework with extremely minimal setup.
+
+
+
diff --git a/develop/installation.html b/develop/installation.html
new file mode 100644
index 00000000..b09823e8
--- /dev/null
+++ b/develop/installation.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Installation | TaxonWorks Docs
+
+
+
+
+
+
+
+
+
diff --git a/es/about/index.html b/es/about/index.html
new file mode 100644
index 00000000..1760482c
--- /dev/null
+++ b/es/about/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Acerca | Documentación de TaxonWorks
+
+
+
+
+
+
+
+
+
diff --git a/es/develop/bug-reporting.html b/es/develop/bug-reporting.html
new file mode 100644
index 00000000..6a7a0565
--- /dev/null
+++ b/es/develop/bug-reporting.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Reportar un bug | Documentación de TaxonWorks
+
+
+
+
+
+ Donde presentar su issue si se trata de:
Antes de abrir un issue:
Verifique que el issue es nuevo revisando los issues existentes. Mientras llene su issue:
Use un template de issue si está disponible, esto desglosa sus ideas en items mas accesibles para aquellos que buscan abordarlos Cuenta una historia! Denos suficiente trasfondo para que podamos replicar exactamente lo que hizo. Incluya un criterio exitoso. ¿Cómo sabemos que hemos conseguido resolver los problemas sin volver a ponernos en contacto con usted? Es preferible dar mas información que menos. Proporcione un titulo significativo que identifique su función y lo que pretende conseguir, por ejemplo: Como X necesito Y para hacer Z
Otras convenciones:
Si tiene permisos, categorice su issue utilizando una etiqueta. Use el prefix "Task -" en el titulo para indicar la solicitud para una nueva tarea o mejorarla. Prev
Contribuyendo
+
+
+
diff --git a/es/develop/contributing.html b/es/develop/contributing.html
new file mode 100644
index 00000000..6ca0153a
--- /dev/null
+++ b/es/develop/contributing.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+ Contribuyendo | Documentación de TaxonWorks
+
+
+
+
+
+ Las contribuciones pueden ser de diferentes maneras, no todas son tecnicas. Como puedo contribuir? Puede contactarnos con cualquier pregunta.
Primeramente, queremos agradecerle por esta tarea complicada. Interfaces (Por ejemplo, formularios, reportes, busquedas) los mockups son formas graficas de pedir por nuevas funcionalidades. Nos encanta verlos. Para crear un mock-up puede utilizar herramientas como Illustrator, Photoshop, o herramientas mas sofisticadas para este fin como Adobe XD, Pencil , Figma o Sketch , o simplemente puede dibujarla en un papel y tomarle una fotografia con su telefono. Los issue templates tienen campos para procesar imagenes, simplemente arrastrelas a la ventana y sueltelas allí. Escriba una pequeña historia de caso de uso, o agregue multiples imagenes que ayuden a describir como podrias utilizar esta interfaz.
Envielo! Es muy util que nos envie una grabación de su pantalla, o posicione la camara para que capture su trabajo en panalla y su entorno. Puede enviarnos los videos a traves de servicios como http://www.dropsend.com/ . Busque la forma de contactarnos aqui
Varios archivos README.md existen en el codigo base. Tenemos un linter de codigo(Rubocop), pero no es muy utilizado. Con el crecimiento esto podria cambiar. Tambien utilizamos ESLint para nuestro ecosistema de JavaScript moderno. Haga un Fork del repositorio en Github Haga una nueva rama a partir de la rama development
Ayuda trackear el issue si la rama del branch comienza con el numero de este, por ejemplo 1234_my_feature_request
Si tiene experiencia, haga un rebase de su rama a partir de development antes de hacer un pull request Desde su repositorio en GitHub, seleccione su rama y utilice allí para realizar un pull request . La documentación del codigo de TaxonWorks se hace en linea con Yard tags .
Este software junto a su flujo de trabajo hacen posible para todos contribuir a TaxonWorks Doc. Notese que todas las paginas aquí en docs.taxonworks.org tienen la funcionalidad de "Edita esta pagina en GitHub". Scrollea abajo del todo para verla.
Puede editar los archivos fuera de linea, en su propia computadora, o en linea dentro del navegador.
Necesitará una cuenta en Github .
NOTA: Usando este metodo también se garantiza que todos obtengan crédito y reconocimiento de contribución junto con la posibilidad de generar métricas y realizar un seguimiento de su trabajo.
Un breve resumen de los pasos.
Inicie session con su cuenta de Github . Vuelva a docs.taxonworks.org En cualquier pagina de documento, scrollee hasta abajo y haga click en "Editar esta pagina" donde vea que sea necesario. Agregue o edite el texto deseado. Asegúrese de que sus ediciones sigan el formato de la convención de estilo . Use el formato Markdown . Si necesita agregar una imagen, vea la sección incluyendo una captura de pantalla . Haga click en Commit changes
para hacer un "pull request." Rellene los campos utilizando el idioma ingles. Agregue una muy breve descripción de sus cambios en el campo de texto que tiene Update ...
Opcionalmente, si lo desea, agregue una descripción mas larga en el campo de texto mas grande. En su mensaje no utilice palabras como "Changed, tweaked, updated", describa que cosa
fue hecha. Elija la segunda opción Create a new branch ...
. Hay una excepción a esto, si sus cambios fueron pequeños y están listos para ir directo al sitio publico, entonces puede realizar un commit directamente a la rama development
. Haga click en Commit changes
nuevamente. Un miembro del repositorio de TaxonWorks Docs lo revisará, hará ediciones, le hará preguntas de ser necesario, y luego aceptará el pull request para fusionarlo en la documentación.
Al momento de decidir en que rama hacer el cambio, comience preguntándose: "¿Mi cambio está listo para publicarse ahora mismo?". Si la respuesta es si (Y tiene permisos), entonces puede hacer un commit a la rama development . Si la respuesta es no (Por ejemplo, quiere refinar aun mas el texto), entonces debería hacer el commit a una rama nueva.
Adicionalmente:
La rama development es el escenario de la rama main . Siempre debe asumir que la rama development será publicada en cualquier momento. Los cambios en development pueden acumularse antes de moverse a main . La rama main nunca debe commitearse directamente. Los cambios a la rama main suceden cuando la rama development es funcionada dentro de esta. Siempre es mas seguro y esta bien comenzar una rama nueva. Siempre es mejor limitar el limite de tus cambios en cada nueva rama. Si tiene una larga lista de cambios en su rama es util comenzar su session de edición funcionando development dentro de su rama de trabajo. Esto mantiene las diferencias entre development y su rama al mínimo. Si está editando localmente, asegúrese de sincronizar sus cambios con los del servidor remoto (gil pull
) antes de comenzar su session de edición. La edición fuera de linea sigue el flujo de trabajo de git que está detallado en GitHub y en muchos otros lugares en linea
Haga un fork del repositorio Haga un clon del fork en su computadora Cree una nueva rama de característica Edite y haga un commit a la rama Haga un push de sus archivos editados a su fork en GitHub Haga un pull request Agregando documentación, notará que en todas las paginas de docs.taxonworks.org puede hacer un click en el icono del pincel para agregar/editar el texto. Para manejar los archivos de imagenes que agregamos a la documentación, utilizamos TaxonWorks Meta Project
alojado en sfg.taxonworks.org . Para agregar imágenes a este, envíe un correo electrónico a dlpaul ARROBA illinois PUNTO edu o escribanos a traves de gitter . Cuando tome capturas de pantalla, tenga en cuenta que la resolución del monitor de su computadora marca la diferencia si estas imágenes son nítidas y claras o están pixeladas.
Tome las capturas de pantalla deseadas. Suba esas imágenes(Todas o una por ves) a TaxonWorks Meta Project
usando la tarea New Image
. En taxonWorks, busque el link de la imagen generada utilizando la tarea Filter Image
. Utilice la faceta Housekeeping
para limitar los resultados buscando las imágenes subidas por usted.
En el set resultante, haga click en la imagen deseada Haga click en el Navegador radial
debajo de la imagen y seleccione Show
. En Attributes
copie el short URL to original
URL link. Vuelva a la edición de la documentación y use el formato markdown o HTML debajo para insertar las imágenes (Los ejemplos se encuentran debajo). Note que ambos métodos permiten especificar el tamaño de la imagen Los ejemplos aqui muestran en formato Markdown(md) como agregar una imagen con subtitulo.
Seleccione una de las cuatro opciones debajo para su subtitulo. Ponga esa linea de texto dentro de la documentación como texto descriptivo. Con la opción position
, elija left
, center
, o right
para alinear el subtitulo de acuerdo a la opción elegida. Escriba el texto de su elección dentro de los corchetes [el texto del subtitulo va aquí]
Peguelo en el short URL to original
URL link (Desde Filter Image
> Navegador radial
> Show
> Attributes
). Agregue el texto alt
dentro de los corchetes, es buena practica incluirlo para accesibilidad. (Opcional) Declare el ancho y alto o ambas de la imagen para controlar el tamaño en el que se mostraran. El tamaño por defecto funciona bien. Algunas veces dependiendo de la captura de pantalla podría aparecer muy larga y entonces esta opción permite la opción de modificar su tamaño. #position[caption text goes here](link [alt text if you want it])
+#position[caption text goes here](link [alt text if you want it] w{60%})
+#position[caption text goes here](link [alt text if you want it] h{50%})
+#position[caption text goes here](link [alt text if you want it] w{80%} h{50%})
+
< figure>
+ < img
+ src = " https://sfg.taxonworks.org/s/rdc03q"
+ alt = " Sample image"
+ style = " width : 100%"
+ />
+ < figcaption> Fig.1 - A TaxonWorks Interface</ figcaption>
+</ figure>
+
Esto se controla alfabéticamente, o se puede sobrescribir a través de 2 parámetros de frontmatter, sidebarPosition
y sidebarParentPosition
.
Dentro de cualquier archivo de documentación, puede modificar el orden dentro del contexto de los otros archivos en el mismo directorio.
Unicamente en los archivos README.md. Utilícelo cuando quiera cambiar la posición del directorio dentro del contexto de otros directorios y archivos a nivel de ese directorio.
Por defecto, el sistema tomará los archivos dentro del directorio y los ordenará por alfabetico segun el nombre del archivo para generar el menu lateral. Por ejemplo:
Estructura de carpeta:
-- Mi carpeta de ejemplo
+---- bar.md
+---- foo.md
+
Nombre de archivo: foo.md
# A es la primera letra de este titulo
+
Nombre de archivo: bar.md
# B es la primera letra de este titulo
+
Mi carpeta de ejemplo
+ B es la primera letra de este titulo
+ A es la primera letra de este titulo
+
sidebarPosition
permite que cambie el orden del menu lateral independientemente del orden alfabético de los archivos . Tomemos el ejemplo de arriba, pero ahora vamos a agregar sidebarPosition
en cada archivo para cambiar su orden:
Nombre de archivo: foo.md
---
+sidebarPosition: 200
+---
+# A es la primera letra de este titulo
+
Nombre de archivo: bar.md
---
+sidebarPosition: 100
+---
+# B es la primera letra de este titulo
+
Mi carpeta de ejemplo
+ B es la primera letra de este titulo
+ A es la primera letra de este titulo
+
Para escribir la documentación utilizamos Markdown. Existen muchas guías sobre como redactar un documento en este formato, por ejemplo en GitHub .
Negrita - ? Itálicas - As typically used in English writing, to add emphasis, or draw attention. "Doble comillas" 'Simple comillas' son valores literales para ser ingresados u observados Balas - Acciones que instruyen al usuario a tomar. Como en este listado. Lista numerada - Sin uso? Tildes ` Se utiliza para envolver texto, vea el siguiente ejemplo. Highlighted words
(envuelto por tildes) se refiere típicamente a texto o elementos, típicamente literales, en la aplicación, que generalmente son parte de la interfaz de usuario (a diferencia de los datos dinámicos que se muestran). Por ejemplo, pueden estar en nombres de botones o campos como Data
, Tasks
, Favourite
tabsCitas en linea - ?? (use "> ") Esta es una cita en linea
Bloque de triple comillas - úselo para ejemplos literales. Ponga tres comillas ``` antes del bloque de texto y 3 comillas al final del mismo. Esto dará como resultado el siguiente bloque de codigo. Algún ejemplo de codigo o literal.
+
Cómo se clasifican, priorizan y discuten los issues.
No todos tienen permiso para etiquetar un issue . Vea su descripción.
Prev
Instalación
Next
Reportar un bug
+
+
+
diff --git a/es/develop/index.html b/es/develop/index.html
new file mode 100644
index 00000000..ff319f87
--- /dev/null
+++ b/es/develop/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ El panorama general | Documentación de TaxonWorks
+
+
+
+
+
+ ¿Por qué enfatizar que el desarrollo de software en la ciencia es importante en términos generales? ¿Cómo se describen aquí los recursos disponibles para los desarrollares?
Un proyecto de la naturaleza de TaxonWorks necesita contribuciones de muchas personas para mantenerse en el tiempo. Para este fin, trabajamos arduamente en construir una base que permita y aliente a cualquier persona a contribuir con el proyecto. Los puntos detallados incluyen:
Todos los elementos del proyecto son de codigo abierto. Existen ejemplos de meta-proyectos, por ejemplo taxonowrks_stats (demo ) que ilustran como construir una aplicación a partir de la API. TaxonWorks cuenta con generadores de codigo que le permiten crear una nueva tarea o un cargador por lotes en una sola linea. TaxonWorks está construido en Rails. Las convenciones aqui actuan como un marco de las catacteristicas que pueden ser escritas en Ruby u otros framework de javascript como Vue . TaxonWorks está sometido a pruebas unitarias. Esto significa que puede contribuir sin miedo a romper algo. TaxonWorks utiliza Kubernetes para el despligue en producción. El Species File Group y sus miembros han realizado hackatones y muchos talleres conjuntos. Pongase en contacto si está interesado en participar en estos. También están interesados en apoyar visitas a posibles desarrolladores, estudiantes. Tambien estan interesados en apoyar la visita de posibles desarrolladores, estudiantes o cualquier otra persona que desee obtener un bootcamp en el desarrollo de TaxonWorks Las imagenes de Docker le permiten desarrollar a traves de la API utilizando un framework de JavaScript con una minina configuración.
+
+
+
diff --git a/es/develop/installation.html b/es/develop/installation.html
new file mode 100644
index 00000000..429d8761
--- /dev/null
+++ b/es/develop/installation.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Instalación | Documentación de TaxonWorks
+
+
+
+
+
+
+
+
+
diff --git a/es/guide/index.html b/es/guide/index.html
new file mode 100644
index 00000000..52559968
--- /dev/null
+++ b/es/guide/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ El panorama general | Documentación de TaxonWorks
+
+
+
+
+
+
+
+
+
diff --git a/es/index.html b/es/index.html
new file mode 100644
index 00000000..fbee6dee
--- /dev/null
+++ b/es/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Inicio | Documentación de TaxonWorks
+
+
+
+
+
+
+
+
+
diff --git a/guide/FAQs/index.html b/guide/FAQs/index.html
new file mode 100644
index 00000000..a227b0ad
--- /dev/null
+++ b/guide/FAQs/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Introduction | TaxonWorks Docs
+
+
+
+
+
+ Categorized help that answer a commonly asked question.
See 'Contributing ' in develop.
To see this vision realized we need dedicated collaborators (developers, work-bench experts, labs) and funding, i.e. the Species File Group and its current collaborators does not presently have these advances as targeted milestones, nor do they anticipate significant code-contributions from "core" members in the absence of said collaborations/funding. The SFG is very open to guiding work done in this area, i.e. facilitating developers and data-modellers and providing parallel work in some areas, for example implementing externally developed, well thought out, UIs.
At present managing Sequence data is within the purview of TaxonWork's "vision" in the following ways (we're an open community, this can evolve):
Sequence handling in TaxonWorks is envisioned as leaning towards long-term vouchering alongside simple sequence annotations (think biodiversity informatics focused on taxonomy) as opposed to more complex annotation systems (e.g. complex structural annotations, functional graphs, etc.). TaxonWorks contains excellent CollectionObject and Extract management capabilities, i.e. the framework for vouchering the physical origin of sequences is well developed. This in-and-of-itself, particularly in combination with the extensible functionality offered by customizable data-attributes may fill a gap within molecular labs. TaxonWorks has a Sequence model, and some nice back-end functionality work has been done on it, for example we added a logic-based (and/or) description framework for linking one sequence to another (think primers, blast reference sequences, etc.) There is a nice Descriptor context that treats Sequences as just another column type, i.e. there are excellent inherent capabilities for mixing molecular and morphological data and exporting unified datasets for analysis. While Sequence objects can be created in the UI functionality therein is primitive and has not been used "for real", i.e. the UI/UX needed for actual practical day-to-day work does not exist (2024/1/26) Sequences managed in TaxonWorks should be curated and have some human-asserted metadata. For example we're not aiming to manage raw-reads, or unassembled data. Sequences are stored as raw strings, not in a BLAST database, it is of course conceivable to change this back-end storage should advantages in indexing and storage size be needed in the future. Storing genomes (unassembled or assembled) is not presently a goal. Linking vouchers to metadata about a genome is fully in scope. We know of many systematics labs where 10k x 4k matrices (terminals by genes) are now the targets of research efforts. We know of no system that comprehensively manages this type of project, for example tracking gaps in required target specimens or genes as projects progress. This is the initial maximum size we envision fitting within a TaxonWorks framework. We understand the basic starting points (annotated FASTA files) for large-scale integrative taxonomy (LIT). Combining an entry point that starts data management with an annotated FASTA file and then lets users advance their species concepts through the powerful means of exploring their data with existing (and novel) querying is very much in the scope of our vision. Single barcode-style sequences for 100s of thousands of specimens / project is well within our vision. Analysis of sequence data should be done outside TaxonWorks, being facilitated by API endpoints and exports manageable inside TaxonWorks. For example once Sequence data are present you can not use TaxonWorks to trigger an alignment (though calculating some simple distance metrics are desirable for filtering data in LIT contexts). We have done prior work in managing full Sanger-sequencing workflows (PCRs, worksheets, etc.). This code is in the precursor project mx
. It may be relevant to some. No well tested batch loading functionality exists. Simple FASTA processing should be very straightforward. Thanks to the scripting framework that comes with TaxonWorks the software is very well positioned to facilitate custom 1-off migrations. We very much would like to facilitate the export to NCBI/repository framework based on data captured in TaxonWorks. Prev
Videos
Next
API
+
+
+
diff --git a/guide/Manual/Sources/index.html b/guide/Manual/Sources/index.html
new file mode 100644
index 00000000..38077a3b
--- /dev/null
+++ b/guide/Manual/Sources/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ About Sources in TW | TaxonWorks Docs
+
+
+
+
+
+ Discover the Source (e.g. publications) management features of TaxonWorks here. For example, sources are shared across projects , a cool and unique time-saving community feature of TW.
Credit: much of the following information derived from a manual tailored for and written by the Universal Chalcidoidea Database (UCD@TW) Project community.
In TaxonWorks, sources include the literature database, citations, and other related content that is fed directly into the database. The easiest way to access sources is through the Source hub
task. This is a unifying task that combines several commonly used tasks associated with sources. As a curator, researcher, data manager, student, or technician you may primarily be working from sources that are published papers. Source data can be entered one record at-a-time field-by-field, or using BibTeX or CrossRef DOIs. From most reference manager software, one can export source information in the BibTex format and edit as needed in any regular text editor. This can be used for uploading source
data into TW. With this wiki , you can learn more about BibTex.
Legend: Source hub
user interface sections: select
, filter
, recent sources
, add new source
, and batch load
. The TW Select a source
option offers a smart selector so you only need to enter as many letters needed to uniquely identify a source. For example, the search string 'wool dal sig' brings up Woolley and Dal Molin (2017). If a source is found it will show beneath the search box.
Type information in Select a source
to see if a source is in the database. In this example, search string is 'Woolley, J. B.' If you click on a result in the popup beneath the search box, it will take you to a page showing that source. Legend : Source hub
search resultWith Filter sources
you can apply different search criteria to locate sources of interest. Use this feature to identify sources you want to work on. My recent sources
shows a list of sources that you have entered recently.New Source
takes you to a screen that enables you to add new sources using various methods.Note the Batch upload
option here via BibTeX formatted source data. Next we delve into the details of various work you may need or want to do with source information (e.g. adding sources, editing, tagging, and filtering). The source content needing to be captured includes such data as new taxon names, people strings or names, distribution information, type information, and biological associations. For efficient source data extraction and entry, we recommend familiarity with the following TW Tasks and Data Cards.
FUTURE LINK TO INFORMATION about each of these items
Tasks Data Cards Browse nomenclature Taxon names Browse OTUs Biological Associations Source hub Sources Filter sources Manage Controlled Vocabulary Terms New taxon name New type specimen New combination Uniquify People
Once you find the publication of your choice using the Source Hub
, clicking on it opens the Show
page. Here you will find various ways to navigate to related information and a path to Edit
this source record. Next we describe some of the features and functions found in the Source show.
Note the green Pinboard icon
at the upper right. Clicking this adds the source to your Pinboard for quick access.
The Radial Annotator
is a very common function used throughout TW. It provides convenient access in one place to a variety of relevant functions. For example, clicking on the Radial Annotator
for a givenSource
might look like this:
Legend : The Radial Annotator
functions Documentation
is where you can drop a pdf of the source, or supplementary files.Tags
allow you to mark sources for later with tags such as Source Unprocessed
, or Source Processed for Nomenclature
. Instructions on creating and editing Tags are included below.Notes
is a free text field for any information you might want to add.Identifiers
provides a place to store one-to-many identifiers for a given object. For example, a paper might have a globally unique digital object identifier, aka DOI, but also an author-assigned identifier.Data attributes
in TW gives you a place to store your unique data that may not fit in any typical TW field currently in the data model.From the Source Hub
search to a publication you choose Click Edit
to open the task to make corrections or put text in title in italics, for example. Note that italics are indicated in BibTex format as follows <i> text </i>
. Everything in between the special symbols will display or print in italics. There are tools in TW to do this for you by selecting text and hitting a button.
Be sure to click the Save
button to keep any changes. HINT: In Edit
, you see New source but you started by clicking the Edit
option from an existing source. Rest assured this New source window does not mean duplication of the source.
About adding Sources, options offered here include the option to re-order fields and ways to auto-fill the Source
information using a CrossRef DOI
or using BibTeX you may generate from Zotero or EndNote. This section features commonly used fields. See the scenarios section to find related activities that fit your workflows.
First, using the Source hub
always check to be sure the source is not already in TW. If it isn’t found in the search box in the Source Hub, '—None—' will appear below it. With TW "smart" searches you need only provide enough minimal text to find the source (e.g. misspellings may cause you to miss a source). Clicking New Source
in the Source Hub
brings up this screen. New Source user interface options. Note you may reorder the fields as you see fit using the Sortable fields
box in the upper right. The yellow triangle means you have made changes that have not been saved. Be sure to Save
before you leave this screen, or changes will be lost. If you have the DOI for a new source, this button provides access to the CrossRef database of DOIs. If it works (it usually does), most of the fields you need will be filled in. Be sure to check them , as they are not always correct. If you have the reference in BibTex format (most reference databases will output this), you can input it here. From Zotero, simply select the reference, right-click on it, select "export item" and save the file as BibTeX. From EndNote, select the reference and fill out the "label" field. Then go to File > export and select "text file", "BibTeX export". Most people don’t fill out the "label" field in their EndNote database, but if you don’t, you will have to add the label manually by editing the exported text file (that is the field highlighted in the example below). In the New Source Form
, Choose the blue BibTex
box at the top of the screen, and paste in the exported *.txt file. (No drag and drop here). Most of the fields may be self-explanatory. Here we note a few tricks, for instance:
Entering an author name in this box (5) Authors
tries to pull it up from the table of known authors. If it isn’t found, you can use the Add New
button that appears in this case. This is an advantage in some situations over entering authors as verbatim text (in the Verbatim from BibTex field lower in the screen), because you can easily pull them up later, for example, when adding author names to new species.
Similarly, below the Author
section is a search box for Serials
(journals). If the journal is not found, look for the New
button to the right of the Serial screen. This opens a screen for you to add a serial to the serials table.
Once you have created the new source, you should go to Documentation
in the blue Radial annotator
to the right of the Source
and upload the PDF file if available.
(Optional) Use the TW Tag
feature to group and track which papers need data parsing or do not.
To do this go to the Tags choice in the Radial annotator
Tag the source as desired (e.g. Unprocessed
) And add other suitable tags such as No Nomenclatural Acts
or Nomenclatural Acts
as appropriate (this is specific for the UCD project, other projects may use different tags). If a source has a title in a language other than English, and you wish to enter the English translation (or translation in any other language), follow these steps:
Enter the source with the title as given in the paper and create it. Click on the blue Radial BibTex annotator
to the right of the source at the top of the page, and click on the pie slice for Alternate Values
. Choose title from the pick-list, the language for the translated title, and paste the translation in the Value field. Be sure to Save
it (green button) if this is a new source. Then the original title and translation will both be rendered. As all fields are present on the data entry screen for all types of sources, it can be a bit confusing, particularly for books and chapters in books. The article type for a chapter in a book is "Inbook", and the book title would go into the Booktitle field. For books, there are fields for Editors, Series (if needed), Booktitle, Publisher, and Address (usually city or city and country). The type of a technical report is techreport
.
Using the UCD@TW Project as an example, note that most screens that pull up lists of sources in TW have a convenient PDF icon that either opens the source in the PDF viewer (where you can download it), or enables you to download it directly to your browser. For example, if you pull up a source using the Source hub
, you will get a screen like this -- the so-called Show
page. The pdf icon will open the source in your browser.
Legend : Source
has PDFYou can also check to see whether a pdf has been associated with a source using the Radial Annotator
associated with that source.
Click the Documentation
wedge in the Radial Annotator
to get the screen below. If a pdf for the source is not present, drag and drop it into the box as shown. If a pdf is associated with the source, you can click the icon indicated by the red arrow to download to your browser. Legend : Does Source
have a PDF?Tags
in TW provide a unique way to group documents (or other objects in TW) in any way that you choose. With the keywords
that you put into a tag, you and colleagues can find the relevant materials needing work or find groups where work is complete and may need vetting.
Because UCD@TW is a community-curated database, they added keyword tags for sources that allow them to better organize and coordinate group work. These are the tags currently associated with their sources. Tags can be added or removed from a source in the Radial Annotator
. Most of these tags should be self-explanatory.
HINT: Keywords
are the words you put in a Tag
. If certain that a source is an early view document
, that is, not yet published, they add this tag as any nomenclatural acts in the source are not yet valid. If the source is new to TW, for now, they use the tag Source unprocessed
, as this allows other curators and helpers to pull up sources that need to be curated. And to anyone starting work to curate a paper, they apply the tag Source being processed
so that other community members will not try to work on it simultaneously. HINT: Using the Browse Annotations
task you can find out who has claimed sources (or assigned various tags).
Using the Manage Controlled Vocabulary task (shown below), you can create custom tags
with the keywords
of your choice. In this task, you will need to decide the keywords to use, enter them, and define what they mean.
Legend : Find Manage Controlled Vocabulary task
Legend : Create and Edit TagsTo create a new tag use the Name
, Definition
, and Label color
fields on the left of the screen. Note that the definition field must have at least 20 characters before the Create
button is clickable. Note that if you want to use the same color for multiple tags, you can use the eyedropper tool in the Label color
window. To Edit
an existing tag, use the green icon associated with the Tag
. Some sources exist in more than one version, either with translated titles or in entirely translated versions. To add a translated title, use the radial annotator, under Alternate values
, and add the information under title
to add the English version, such as in the case below:
Example Paper With Title in German and English
Note, there are at least two reasons why you might have more than one version of source:
Someone has done a translation of a paper, but it has not been published separately. In this case, simpy add the translated pdf as a second document to the source (see Documentation
option in Radial Annotator
). The translation has been published separately from the original source. A common example is Entomological Review, which is a parallel version of Entomologicheskoe Obozrenie published in English. In this case, the page numbers are likely to be different in the two journals. You should enter this as a separate source from the original paper in Russian. A search on the author and date will bring up both sources. TW employs a powerful utility to search for particular sources, the Filter Source task
. Among the search fields, which can be used in any combination, are the following:
Keywords
: search text or title. These are verbatim text search fields that will scan the title or other text fields for keywords, such as taxon names. However, if the name is not in the title, it may not get picked up.Authors
: self explanatory. Search for authors verbatim or for authors in the Authors data table.Date
: you can provide starting and ending years for the search.Tags
: If a source has been tagged, you can search for the tag(s) here. You can batch tag sources using the method described below. (UCD@TW specific note: However, this will apply mostly to literature that has been added since the transfer of sources from UCD@NHM to UCD@TW). Topics
: This is one of the potentially most powerful uses of this utility. All of the tags to citations from UCD@NHM (the original UCD in London) should have been carried over to UCD@TW on import. Thus, UCD@TW folks can search for papers containing host information, keys to species, redescriptions, or any of the topics in the Topics list. Note that if you have Topics in your pinboard, they will appear here if you select Pinboard. Or you can Search for a topic or pull up the entire list of topics using All.Once you have created a list of sources, you can do the following:
Select All
(button is at top left) or Select Individual Sources
.Tag
: once you have selected sources you can tag them using whatever tag or tags are in your pinboard by hitting the green Tag
button. If there is more than one tag indicated as the default in your pinboard, both will be added. Note that if you create a new tag (explained above) this automatically becomes the default tag in your pinboard. HINT: This is a powerful way to create groups of sources for particular projects. Download CSV
: this creates and downloads to your browser a comma-delimited data file.Download formatted
: here you have the option to choose a format style (e.g. Zootaxa) and create a formatted bibliography.If a pdf is associated with the source, you can capture it using the pdf icon. As described above, sources can be uploaded in different ways, one-at-a-time, or in batch using BibTeX format, searching CrossRef or using a URL that pulls in source data using CrossRef DOIs. With the New Source
task, you have all these options in one task. See above section Adding a Source
Using the Batch Upload
section of the Sources
Data tab
(i.e. not the task
tab) from the project home screen, you can upload a list of BibTex-formatted references all at once.
From this screen, you can upload a Bibtex formatted TXT file that will allow for import of your references. Use this to load bibliographies exported from tools like EndNote, or Zotero. An example file is available here . Your Bibtex file must meet the following conditions:
The file to import should be in UTF-8 encoding. The file should have unix style line-endings. All entries should include a populated 'Label' field containing a unique internal identifier for the record. Endnote does not provide this by default, Zotero does. Year fields should not include periods ('.'). Try using a BibTeX bibliography "linter" or validating tool (for example ) on the web to find errors in your file.
Once you upload, you will see a preview list of your sources, highlighted in green, brown, and red. Green references will be imported, brown ones will be imported but have some soft validation that should be cehcked or fixed before upload, and red ones will not be imported.
Once you've ironed out any problems, you need to re-upload your data using the Choose File
button.
Click the Create
Button to upload your sources. Once the upload finishes, you should get a screen like this:
You can click the edit buttons or search for them in the Filter Sources
task.
In TaxonWorks, several options exist to download a source list in the desired format (e. g. comma separated (aka CSV), BibTeX, a custom style of your choosing). Using the Filter sources
task, you limit your sources to the desired subset and then choose your download format.
Using Filter sources
to select sources to export Navigate to the Filter sources
task. Use the options in the left side column to limit (aka filter) your results to the desired subset E. g. In the screenshot above, we used the Title
filter option with the string Cecidomyiidae
. Click on Filter
at the top left of the window. The result (in this example) returns 1640 records. Next, you will decide to download one of the following: all 1640 records a selected subset of the records shown on the first page (default limit is 50 records) all records on the page Select
your set to export. To select a few sources shown on the page, check the boxes next to each desired source. To export all sources on this specific page, you can check just the single box in the header row at the top of the list. To export all 1640 sources, you need to change the number of records shown on the page, to a number larger than your subset. See the drop-down option in the header menu for records per page
. Maximum number supported is 2500. If your set is larger than that, you'll need to do this using more than one download. Example, you might add a year range to subset your records. Use the download options picklist (in the header menu) to select: CSV
, BibTeX
, Download formatted
to get these sources exported in the format you need. If you select
CSV
from the drop-down options, then click the down arrow
next to the drop-down box, you get a CSV file downloaded right away. If you select
BibTeX
or Download formatted
you will see a preview window to review if they look as expected. If all is well, click
on the Generate download
option. Click the Generate download
button to get the BibTeX file Click the Generate download
button to get the Custom formatted
file When getting data from publication sources into TW, many "how-to" questions may arise. Please see next the following common situations and how to proceed for each. Each of these examples offer you an opportunity to try it yourself in your sandbox account.
Say you want to find new sources (papers) that have not yet been curated. The easiest way to do this is to use the Filter Sources
task. This specific example uses the tagging method chosen by the UCD@TW Project . In this example, if you enter the family Encyrtidae
name string in both Search Text and Title
, and choose Source unprocessed
tag in the Tags filter option, you will generate a list of currently uncurated papers for that family:
Tags can help you organize and find specific data The tag
box allows you to create collections of sources, for example, to download as *.CSV files for your own spreadsheet or database.
The PDF icon
opens the source
in the source viewer
, from which it can be downloaded. If no PDF is associated with the source, the PDF icon will not show. You will need to find a pdf for the source outside of TW, and add it using the Radial Annotator
, as shown above.
Note that there is a red button to remove from project
. This is because references are SHARED across projects in TaxonWorks, that is, if someone outside UCD already created this source record, you should be able to simply add it. Note that reference data for sources are shared, but not PDFs.
The blue buttons to the right are the BibTex Annotator
for sources, described above, and the Navigate Radial
(looks like a compass arrow), which brings up various functions, including an edit slice which takes you to the source editor.
When a new source (paper/book/etc.) is published and you want to document the information it contains, note the following steps.
(Historically, this workflow is described in-depth as an exercise in the former documentation repository in "basic_article_parsing.md" which you can find in Other Documents from the left sidebar).
Go to the Source Hub
task card, search the sources in TW to see if it exists. If it doesn’t then create it, preferably using CrossRef
function (blue icon at top of New Source
Screen) as described above. We recommend using CrossRef
because it imports more metadata (BibTeX
e.g. from Google Scholar keeps fields to a bare minimum). If it is in the database but has not been processed, this will be indicated in the Radial Annotator
under tags
. Always be careful since automatically imported articles, even if they are recent, may have wrong data. For example, the year informed by the web site may not match the year of publication (usually explicitly stated in the PDF file). Also, see immediately above for instructions on using the Filter Sources
task. To add additional information about the species from the publication, first navigate to the OTU corresponding to the new taxon name. From the Browse nomenclature
page for the taxon, you can hit the Browse OTU
icon at the top of the page. This takes you to the OTU that is associated with the taxon:
Alternatively, you can use the Browse OTU
task to find the OTU. TW may bring up more than one choice:
Browse OTUs
and find the subsequent combinationsIn this case the OTU name with the check mark refers to the protonym (name as originally published. The OTU name followed by (c) refers to a subsequent combination``. It is best to choose the
subsequent combination`` as this will ensure that the data is tracked correctly.
(UCD-specific note: in this case, there is a third choice, which looks like a ghost, that is, a name that was created as a string when host or distribution records were imported from the original UCD@NHM. You should ignore ghosts. UCD@TW are working on eliminating them).
The most common tasks at this point will be to capture Citations
, Asserted Distributions
, and Biological Associations
.
Citations
. These provide a way to capture any information that is in the publication (e.g. whether it includes a diagnosis, whether the taxon is figured, information on hosts or distribution, etc.), and page numbers
on which the information is found. Citing the exact page numbers will help subsequent users quickly find this information in long publications treating many species.To enter this information, hit the Radial Annotator
at top of screen Choose Citations
, enter the source (it should still be pinned) Enter the exact page number
s on which the information is found in the publication Click Create
Click the blue All
button for a list of currently used topics. Select the ones that are relevant Scroll to the bottom of the screen, and click the green Create
button. When you close this screen (x at upper right) you should return to the OTU (Browse Taxa
) page. If you refresh this in your browser, you should see the citation
you have created in the upper right. HINT: Topics
are unique to each project. For the UCD project, having created a lot of topics now, they suggest creating a new topic only if absolutely necessary.
For those working on other projects, you can use the Manage Controlled Vocabulary Terms
card in the Tasks portfolio to create and define new topics. Here, the Keyword
tab at the top refers to Tags
, discussed above, and the Topic
tab refers to Topics
.
Click the blue Quick Forms
icon at top right, and follow the instructions to pick geographic areas from which the taxon is reported. This is the place to capture information from a Distribution
section of the publication. Enter the source
which should still be pinned, and the exact page numbers
on which the distribution information is given. Is Original
means this is the first time that this distribution has been published.Is absent
presumably means that the publication states that the taxon is not present in the designated area, but UCD notes they are not sure when to use this. Next, enter the most restrictive geographic area present in the TW database, which in most cases will be a state or a province. HINT: If the paper contains many new asserted distributions, it is more efficient to record these using the New Asserted Distribution task
. Here you can lock in the source and each OTU, and enter the geographic areas one by one, without having to repeat the other information. In this example, we have locked the source and OTU (orange boxes), and we can enter geographic areas one by one. The task contains other tools (not shown below) that enable you to clone combinations of the Source/OTU, Source/Geographic area, or OTU/Geographic area.
New Asserted Distribution Task
showing how to lock fields for re-useNext, update the tags
(if necessary) to track progress. UCD Example, once you have entered the distribution
data from the source, if you are not at this time going to enter other information such as biological associations, add the Source processed – Distribution
tag to the source.
Biological Associations
. These are also accessed from the blue Quick forms
icon . The form is shown below. Examples presented here are UCD-based. You may have to enter more information as host data may or maynot already be in your instance of TW.[INSERT SCREENSHOT HERE]
Selecting All
(1) will bring up a list of all Biological Association
in the project (2). (UCD-specific note: In general for chalcidoids, you will want to capture the Primary (animal) host
or Plant host
, Plant Associate
in the case of parasitoids, or Parasitoid host in the case of hyperparasitoids).
Pick the relevant blue tab and then hit the blue Search
button (4) to find the host or associate name in the TW database. In most (UCD) cases, this will be a plant or animal name, so select OTU (3). Search for the taxon name in the database (this brings up a select OTU search box). The UCD database is extensive, and usually the host will already be there, either as a Taxon Name
or as an OTU
. If TW finds either of these, it will bring them up for you to choose. If neither are found, TW will ask you if you want to "customize an OTU with that name". Say yes, and cut and paste the OTU name in the OTU box that comes up. Leave the Taxon Name box below the OTU box blank. IF YOU DO THIS, BE SURE YOU ARE SPELLING THE NAME CORRECTLY! For this reason it is best to cut and paste whenever possible. There is probably no reason to enter the author name of the OTU, but it doesn’t hurt anything. Once you have entered the host or associate OTU, enter the Citation
(source) (5) and page number
(s) on which the information is located. As above the Is original
box (6) means that this biological association has not been published previously . So check this box if this is new information not published before. Use the Browse OTUs
page for the taxon (accessed with the Browse OTUs card
) to see all previous biological associations recorded in TW for that entity. At this time, there is no Biological Associations task comparable to the Asserted Distributions
task (this has been requested of the development team).
IF you are entering several new Biological Associations
from a paper, you can lock the citation for the source by hitting the little lock icon next to the pinboard icon in the Citation box. [INSERT SCREEN SHOT for above] Since most new species will be compared with other existing species, you will want to capture this information also. This is treated as another Biological Association, since any comparison will involve another OTU.
Repeat the process for hosts, but choose Compared With
(instead of associate) and follow the procedure above. After completing these tasks, close the form and return to the OTU page for the taxon. If you refresh your browser, all the new information should be displayed.
[INSERT SCREEN SHOT of OTU for a taxon showing biological associations]
Remember to make good use of the tags
for tracking progress.
If you have entered data for the biological associations reported in a paper, but are not planning to enter other data such as geographic distributions at this time, add the Source processed – Biological Information
to the source. If you have entered all nomenclatural acts in the paper, all relevant topics associated with the citation, all distribution information and all biological information, remove any tags associated with processing and add the tag Source processed – Complete
to the source. Congratulations, you have successfully and completely curated this publication! Before you do this, we recommend you add the Browse Taxa
and Browse Nomenclature
cards to your favorites for easy quick access.
Check to ensure the publication source you are working with is on your Pinboard
and selected as the default
. Navigate to the taxon (OTU) using the Browse Taxa card
in tasks Once you have found the correct taxon, proceed exactly as instructed above for a new taxon. HINT: There is at least one important caveat. If you are capturing information for a species that is currently used in a different combination from the genus in which it was originally described, you may get two OTUs for the species name when you search for it in Browse taxa
.
one will be the OTU
attached to the original protonym
(indicated by a check mark
next to the name) one will be the OTU
attached to the combination
(indicated by a c
next to the name). Use the OTU attached to the combination , at least for now. This is an area of the database that is still being worked on, but this should facilitate downstream display of the new information.Images can be attached to various entities in TW, such as Collection objects
(specimens) including types, OTUs
(concepts of taxa), Collecting events
, etc. If you put images in TW that are not your own property or are in the public domain, you should be sensitive to copyright issues. TW will accept images in PNG, TIFF, or JPEG formats. The following are probably the most common cases in which you might wish to upload images.
Navigate to the Collection object
form for the type using the New type specimen task
, or go to the Type
screen (either Quick
or Comprehensive
) in the Edit taxon name
form. If the type has not already been recorded (which will be the case for many old names), you will need to create it first. Drag and drop the image into the Depiction field
(it contains the text Drop images here to add figures
), in either the quick
or comprehensive type
screen. Of course, if you do this, you need to be sure that the images are actually of the types! Note that you can add images to holotypes, allotypes, and all of the other types possible in the Type
screen. Note also that if you click in the box surrounded by a dashed line, TW will open a dialog box representing the folders on your computer where you can browse for the images. If the image is something other than the type specimen itself, such as labels of a type specimen label or a copy of notes on the type, then:
Navigate to the Expanded Edit
Radial navigator
to the upper right of the Depiction
field, Choose Depiction
and check Is data depiction
. If you are pulling the image from a publication, find Citation
in the Radial annotator
below the image and give the source
and page number
. Images illustrating taxa should be attached to OTUs
.
Use the Browse taxa
task to find the OTU
. Note the Radial Annotator
to the right of the name at the top left of the field has a Depiction slice
, which you can click on and then use to add the image. Once the image has loaded, you can use the green Edit
button to add a figure name
and a caption
. If you are pulling the image from a published source, be sure to enter the source
and page number
, using the Citations
slice in the Radial annotator
to the right of the image. To delete an image, click the red trash icon
to the right of it. To enter the copyright status
for an image, find the Attribution
slice in the Radial annotator
associated with it (it also has a copyright symbol in it). Here you will find a menu with different copyright options, the year of copyright, and various other places to enter the Creator
, Owner
, Editor
, and Copyright holder
for the image.
Associated with each image are a Label
field and a Caption
field. We recommend using the Caption
field only to record information associated with the image, such as "Fig. 2, male head, frontal view". The Label
field is intended for use primarily when using TW to create output such as species pages or publications.
It is also possible to batch process images using the New Image
task, which may be more efficient if you are uploading many images from the same publication. You can drag and drop batches of images, and then assign the author/creator, source (publication), copyright information and so forth for all of them at once. If you plan to attach the images to an OTU
or Collection Object
(including type specimens) upload only the relevant images in each batch. Then you can use the Depict Some
screen to assign them.
Prev
The User Interface
Next
Collection Objects
+
+
+
diff --git a/guide/Manual/annotation.html b/guide/Manual/annotation.html
new file mode 100644
index 00000000..c2285b41
--- /dev/null
+++ b/guide/Manual/annotation.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Annotation | TaxonWorks Docs
+
+
+
+
+
+ TaxonWorks excels in annotating data. Tags, notes, custom data-attributes, citations, alternative value, confidence levels, attribution and more are all customizable by the user then usable to enrich and manage their projects.
TaxonWorks provides a nearly universally applicable set of "annotation" types that can be used on core and supporting data.
Annotations have many potential uses in TaxonWorks. Some examples to get you thinking.
You're checking out TaxonWorks, it seems to have most of what you need, but the UI seems to be missing fields for key data that are critical to your project. See Data attributes
TaxonWorks maps its internal model to well over 50 Darwin Core fields automatically. In addition, users can add Controlled Vocabulary Terms that reference DarwinCore fields to further extend the data that can be exported. See Darwin core exportable URIs .
As part of your SOP you are constantly needing to make temporary small groups of data to review and modify.
In TaxonWorks you can filter and select objects by Tags (and many other similar things). Tags can be batch created, destroyed in mass, and used to dynamically grow and shrink matrices, group your data into stages of a workflow, indicate things "TODO", filter records, add objects to loans, and much more. See Tags .
In your project it's important to know (record a provenance trail) that some Observations came from one SOP , while others came from another. See Protocols .
Annotations are implemented in the UI in many different ways, but there are several key interfaces that are perhaps the most important.
The radial annotator is used to call up and access the different types of annotations that are available for the object in question.
A radial annotator opened for a CollectionObject The Manage controlled vocabular terms
task is used to customize the types of annotations you want to use. Think of it as creating the Keywords that your linking to your records, or the new column that you're adding to your table of data (e.g. names, collection objects, or collecting events).
The task open to the Predicates tab UI inputs for data attributes.
If you are a project administrator you can make new fields (see Data attributes below) appear in the UI in various places.
Create the "fields" (see Data attributes below) you need Click Project
(top right), then Preferences
(top left) Select the model you want the new fields to appear for (e.g. CollectionObject
) Check all fields that you want to appear as input fields. Note that this creates new form-fields, you can always access and create data-attributes through the radial annotator. Fields will now appear in the UI where pertinent, notably the Comprehensive digitization
task, the OTU quick forms
radial, and the New collecting event
task.
Attributes
inputs (bottom left) displaying for selected PredicatesMany annotation types start with the creation of a controlled vocabulary term (CVT). This is done in the Manage controlled vocabulary terms
task.
All CVTs must have 2 parts:
A name
, or label - used to select the CVT in the interface, for display, etc. A definition
- don't assume that your label is understandable, now, or over time! Provide a definition so that others may interpret and apply this CVT term as your project intends it to be used. A third attribute is the Uri
. This attribute is used to assert that the CVT in your project means the same things as data used in others projects.
Think of DataAttributes as custom columns on your table. There are two types in TaxonWorks, "Import", and "Internal". The latter are created in the user-interface, the former are used in the documentation of bulk-data import, typically for bespoke datasets. DataAttributes are key-value pairs that reference a record (or object . They reference the object the attribute is being attached to, a type of CVT called a Predicate
, and the value.
For example you might add a DataAttribute referencing a Predicate
you created called "TownshipAndRange" with the value "Smithville" to a CollectingEvent.
TaxonWorks "knows" about certain DarwinCore fields that are not 1:1 mappable to its model. To add data to these fields, and have them export 1:1 (i.e. typing "Stuff; Things" results in "Stuff; Things" being exported into the field) to your DarwinCore exports do this:
Determine if the DwC attribute you want to use is "known" by TaxonWorks. At present it's best to do this by looking at the code itself, here is the list . If you find your attribute (e.g. asssociatedTaxa
) then note (cpy to your clipboard) the URI it corresponds to (in our example http://rs.tdwg.org/dwc/terms/associatedTaxa
). In the Manage controlled vocabulary terms
task create a new Predicate
, name it typically 1:1 with the name of the DwC field, but this is required, the magic is in the Uri field. Add the URI to your Predicate that you found in from the file above by pasting or typing it in. You may want to add the field to directly to the UI, for example the New collecting event
task or Comprehensive specimen digitization
, see above for how to do this.
At this point you have a new field in TaxonWorks that will be exported to DwC when requested.
Note that on export no processing or validation is done on the export of these fields, you get in the export what you type in the field.
Tags are used an arbitrary label with your object . Think of tags as data attributes with no value. To create a type of Tag create a Keyword
in the CVT manager. You can apply tags in the radial annotator, in batch in filter interfaces, and in various other ways.
Note that technically a Tag is the link (or join) between a Keyword (CVT) and an Object, not the Keyword itself.
Tagging an object with a Protocol asserts "some or all of the data in here came from this process. Create new protocols via Data
->Protocols
. You can attach PDFs describing your protocol to your Protocol to expand its description.
Alternate values reference a TaxonWorks field and provide a way to include a Translation, Abbreviation, Misspelling or Alternate spelling. To create one:
Open the radial annotator for the record in question Select Alternate values
Select the type of alternate value (e.g. Abbreviation) Select the target field (e.g. title
of a source) Add the value, and click Create. Alternate values are not allowed on the name
of a TaxonName, don't even think about requesting this.
Identifiers are broader subject (i.e. we need further discussion here). Briefly, there are two types in TaxonWorks, "Global", and "Local". The latter are in essence those types of identifiers that people thought really hard about, and tried to make universally applicable, the former, not so much.
In the real-world there are no-such-things as "unique" identifiers per object . TaxonWorks embraces this philosophy by allowing you to add as many identifiers to your data as you want. Identifiers can be used to say and do things like:
Conceptually, my digital thing is the same_as
your digital thing If you find my identifier you'll likely be able to find my thing (e.g. a Identifier::Local::CatalogNumber
that represents a physical label localized_to
my specimen) The same things has two different "unique" identifiers, and that thing is my thing I'm tracking (integrating/referencing/relating) this thing in my project, but with minimal detail, you can get more details on this thing if you can find other things "out there" with the same Identifier My thing is the Person with this ORCiD (Identifier) My thing historically could be found (your results may vary now) with this Identifier I want to make labels for my specimens that reference my trip-codes so that I can quickly call them up, print them, assign them to Specimens, etc., and darn it my (Matt's) "MJY-YYYY" codes do not mean "Mark Jupiter Yahoo", but I need their (Mark's) "MJY" codes too. You can keep them the same, but different, using TaxonWorks' Namespaces. Print labels and barcodes in TaxonWorks Notes are the most unrestricted annotation type, you're simply adding a block of text (Markdown is allowed) to a record. You should not assume that all notes of are of some type. You should also not use Notes because you want something to appear somewhere , it's much better to do this with a more defined annotation such as a data attribute.
A Verifier is a very generic way of saying "This Person verified this record". It links a Person object with a role "verifier" to your data. There are no sub-types of verification, for that functionality see Confidences .
Some classes of data can be "documented", this simply means attaching a link to a binary document (e.g. pdf) to the record. The assertion being made is "this binary file contains the content of that thing", as in "This is the PDF of that Source".
Projects can create their own arbitrary levels of Confidence (think data-quality) that they can use to annotate there data with. For example you might have a ConfidenceLevel "1 - Origin unknonw" or "B - Spelling check required".
Prev
Nomenclature
+
+
+
diff --git a/guide/Manual/collecting_event.html b/guide/Manual/collecting_event.html
new file mode 100644
index 00000000..8eeedc61
--- /dev/null
+++ b/guide/Manual/collecting_event.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Collecting Events | TaxonWorks Docs
+
+
+
+
+
+ A collecting event represents a unique combination of time, space, collector, and method .
Requires that a GeographicArea be selected.
There are 3 settings:
Exact
- Return all records that have this, and only this, geographic area selected. Searches on CollectingEvent#geographic_area_id
.Descendants
- Return all records that have the geographic area(s) or their descendants selected. Searches on CollectingEvent#geographic_area_id and GeograpihcArea#parent_id
.Spatial
- If the geographic area has a shape tied to it this is permitted. Combine the results of the Descentants
search and a spatial search referencing Georeferences and return all records that match either. In additions to fields in Descendants
also does a spatial search on GeographicItem#<shape or point>
as linked through Georeference#geographic_item_id
and further to Collecting event via Georeference#collecting_event_id
. Prev
Collection Objects
Next
Digitization
+
+
+
diff --git a/guide/Manual/collectionobject.html b/guide/Manual/collectionobject.html
new file mode 100644
index 00000000..7c4b7e92
--- /dev/null
+++ b/guide/Manual/collectionobject.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Collection Objects | TaxonWorks Docs
+
+
+
+
+
+ A place for information about specimens and related collection items .
As a researcher, as an ecologist, as a collection manager, you want to gather, access, learn from, manage, (and later, share) data describing the Collection Objects
(CO) that you steward. Inside TaxonWorks the CollectionObject model offers you a rich set of concepts and the ability to add custom Data Attributes
as needed to store and share more data.
New collection object Task
: This task suits digitization data capture workflows designed to support use of stub or skeletal records. Minimal data captured here, including text blocks, can be parsed later.
The New collection object
task best suits minimal or skeletal data record creation New Collecting Event Task
: In addition to the data about the what
(that is, the physical specimen itself), information about the where
, how
, who
, and when
, etcetera fit in the TaxonWorks data model in the New Collecting Event (CE) Task
.
Use the New collecting event
task to capture events Comprehensive specimen digitization Task
(CSD): Combined into one screen, much of the data you have related to a specimen can be entered inside this one window. Inside this task, you have access to buffered data
from stub records and verbatim
data that can be parsed for you. You'll find you can add people, locality information, biological association data, and add custom fields you need. The following screenshot highlights the different sections of this task in TaxonWorks.
Exploring the Comprehensive Digitization Task in TaxonWorks In the top right of the above screenshot, note the options to change the layout of the Comprehensive specimen digitization
task. Using these options, you can hide some content if not wanted or needed and move fields into a more optimum order for your data capture strategy.
Click on Layout settings
in the top right of the Comprehensive specimen digitization
task. In the pop-up (see next), select the sections
you want to display. Any un-checked sections do not appear on your screen. Inside this Pop-up, a checked box means that section of the CSD will display In the top section of the CSD screenshot, you see sections for Catalog number
, Repository
, Preparation
, Buffered
, and Depictions
.
Catalog number
: TW provides several ways for you to add Catalog numbers
to ensure you can find or subset your CO items as needed. Note the Namespace
concept in TW which keeps Catalog numbers
unique inside a TW Project.
Select an existing Namespace
for this CO or add a New
one if needed You can Search
to find the one you want. Recent
offers you items you've selected not too long ago.Pinboard
gives you the option to attach a given Namespace
to the foreseeable items you plan to add at the moment. Add your Catalog number
identifier. Check
the increment
box if you want to create records with numbers that increase accordingly.Repository
: Search for the place where the specimen resides.
Use Quick
to search using a few letters to find the place. With Recent
option you can make us of the last entries made if you might be entering data for items being cared for at the same insitutions. The Pinboard
option lets you pick an option (for quick easy access) to be there always unless you remove it from the pinboard. Preparation
: Select
the storage method type from options shown. Note you can add to this list if need be as follows.
Navigate to the Data
tab Search
for Preparation types
and click on the resultIn the Preparation types
window, click New
Type
in the name of the methodType
the definition of what this term means.Click
Create Preparation type
Buffered
: Information here can be typed in OR might come from a different task in TaxonWorks that involves capturing an image of labels (and specimens) and getting label text from either typing or from OCR. Data in these fields is not expected to change or be edited.
Depictions
: Drag and drop any relevant media (images or figures) into this box.
Operational Taxonomic Unit
(OTU):
Select the taxon concept applied (the Determination
) to the specimen. Quick
for searching namesRecent
to choose from names you've used for the last few recordsPinboard
to keep a name handy you'll be selecting a lot Search
to select the name of the person who identified the specimen.Enter the date (as much as you know) the Determination
was done. Year
needs to be 4 digitsEnter 2 digits for the Month
(e.g June would be 06
) Enter day
as one or two digits. One-digit days will be standardized to have a leading zero to display in the YYYY-MM-DD format. Please Do Not use zeroes as placeholders for information you do not have for year, month, or day. Click Add
Here you find the information about the who
, when
, and where
for the specimen collected. Note this is a separate task in TW. (See New Collecting Event
(CE) Task ). The CE fields offered here make it easier to enter all relevant information in one window, in one task. Note the CE has 3 columns, Verbatim
, Parse
, and then label printing and locality preview.
Verbatim
Collecting Event column
Label
: Enter data here from the label. You may wish to try Parse fields
for the software to help you move the label text into the correct atomized fields. Locality
: Enter verbatim
information from the label or other source describing where on the planet this specimen was collected.Latitude
: if provided on label or in another related souce, enter the latitude
as it is shown in the image or relevant document.Longitude
: if provided on label or in another related souce, enter the longitude
as it is shown in the image or relevant document.Geolocation uncertainty in meters
: a number expected to already to be meters
Elevation
: if provided on label or in another related souce, enter the elevation
as it is shown in the image or relevant document.Habitat
: if provided on label or in another related souce, enter the habitat
as it is shown in the image or relevant document.Date
: if provided on label or in another related souce, enter the date
as it is shown in the image or relevant document.Datum
: if provided on label or in another related souce, enter the datum
as it is shown in the image or relevant document.Collectors
: if provided on label or in another related souce, enter the collectors
as they appear in the image or relevant document. This would have the collector information as it appears on your document.Method
: if provided on label or in another related souce, enter the method
as it is shown in the image or relevant document.Trip identifier
: if provided on label or in another related souce, enter this identifier as it is shown in the image or relevant document.Parse
section of CE This section helps to atomize all the information about when and where and who into separate bits of information. Some features offered here include tools to help you georeference, to indicate units of measurement, and to auto-parse data from the Verbatim
information.
Geographic area
: Search to find the desired higher-level geography (e. g. State, or Country). Again (as above) you have options to use Quick
, Recent
, or Pinboard
to speed finding the place. Additionally, you can use Map
and then click on the desired place in the resulting map presented.
Note that you may find multiple options offered to you. Example, for Alabama, we are offered 4 choices (from various gazetteers). Some are used by many specimens. Choose the one that seems correct (or as outlined by your Project needs documentation). Start date
: Enter
the start date (YYYY MM DD)
End date
: Enter
the end date (YYYY MM DD) for the CE
Elevation
: note a range and uncertainty can be added here. Please declare the units.
Start time
: If relevant and provided, enter the time the event started.
End time
: If relevant and provided, enter the time the event ended.
Collectors
section: Search to find the collector(s). Click
the desired Collector
from the drop-down list. If you have more than one, Search to find the next collector and again, Click
the desired name from the drop-down list. If the name you are searching for is not there, type the name (family name, given name
) and Click
add new
. Repeat until you have all the collectors added for that Collecting Event
.
Trip code
section: The trip code comes from the combination of a Namespace
and an Identifier
. Together, they server as your unique identifier you assigned to this Collecting Event
.
Namespace
: Search
to find the desired Namespace
(if desired). You may need to add a Namespace
. To do that see New namespace
task.
Identifier
: Enter the alphanumeric value that was selected for this Collecting Event
.
Group
: This is a geological term. From Wikipedia, "a lithostratigraphic unit consisting of a series of related formations that have been classified together to form a group." Enter the Group
name.
Formation
: The full name of the lithostratigraphic formation from which the dwc:MaterialEntity was collected sensu Darwin Core dwc:formation
Member
: The full name of the lithostratigraphic member from which the dwc:MaterialEntity was collected sensu Darwin Core:dwc:member
Lithology
: From Wikipedia, "the lithology of a rock unit is a description of its physical characteristics visible at outcrop, in hand or core samples, or with low magnification microscopy." Enter the rock description here.
Minumum MA
: The value representing an estimation for the minimum age of the material in million year units. MA is "megaannus".
Maximum MA
: The value representing an estimation for the maximum age of the material in million year units.
Custom attributes
section: Each project in TaxonWorks can add new (customized) fields to their Collecting Events
or their Collection Objects
. Examples might be: -WaterBody
: The name of the water body in which the dcterms:Location occurs. This term concept (its definition and expectations) comes from the Darwin Core standard, see dwc:waterBody -georeferenceSources
: A list (concatenated and separated) of maps, gazetteers, or other resources used to georeference the dcterms:Location, described specifically enough to allow anyone in the future to use the same resources. This term concept (its definition and expectations) comes from the Darwin Core standard, see dwc:georeferenceSources -lowestBiostratigraphicZone
: The full name of the lowest possible geological biostratigraphic zone of the stratigraphic horizon from which the dwc:MaterialEntity was collected. This term concept (its definition and expectations) comes from the Darwin Core standard, see dwc:lowestBiostratigraphicZone .
To add new fields to either your CollectingEvent
or CollectionObject
data model, you will need to access
the Manage Controlled Vocabulary Terms
task and (For Project Administrators), the Project Preferences
to associate the newly added terms with the correct TW Object (e. g. the CollectionObject
or CollectingEvent
) so these terms will appear in the relevant tasks. in progress
in progress
Prev
Sources
Next
Collecting Events
+
+
+
diff --git a/guide/Manual/conventions.html b/guide/Manual/conventions.html
new file mode 100644
index 00000000..0e837040
--- /dev/null
+++ b/guide/Manual/conventions.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ The User Interface | TaxonWorks Docs
+
+
+
+
+
+ TaxonWorks offers conventions via a unique user interface building in forward-aware methods like automated data validation to aid navigation and data fitness.
TW seeks to offer a user interface (UI) that is as intuitive as possible that supports elegant software features to improve both the experience and the data products. This guide and manual exemplify one way in which the Species File Group and TaxonWorks endeavor to build a sustainable, open, transparent community. The software and process for building and maintaining the content here were selected specifically for ease of community curation of this resource. The structure, tasks, and features of TW focus on addressing specifically-stated needs of those using the product. We use an agile, "epic story" approach that can be summarized as: As a [your role], I want to do [your task], in order to accomplish [some product]. Note color conventions used in the TW UI offer information to orient the observer to more information (e.g. this task is still under development, or these data are shared across projects). This screenshot provides a quick overview of the TW User Interface after log in. In the caption, you will find brief descriptions of each highlighted feature. If you have an account, please log in and click to try header menu options.
Legend : The TaxonWorks User Interface after signin. See items explained nextIn the header menu (left-to-right), click TaxonWorks
to return to this Dashboard
view(copy) software version number
(e.g. v0.28.0) Issues
to submit an idea or issue to GitHubProject
to manage a specific projectAdministration
to see/access all projects you administerAccount
to access your own account informationSign out
/in In the main section (left-to-right): click items under the headers. Options under Projects
give you access to all your projects. With Data
you can view recently created
data added for that project. With Preferences
you can order the User Interface hub options Tasks
, Data
, and Favorites
.
On the far bottom right, note the four icons (top to bottom). Click a half-circle icon on the right side to open a panel The red circle opens the PDF Document viewer
. The green circle gives you a Pinboard
to access frequently used items like source PDFs. With the blue circle, you get a Clipboard
for frequently used text. The orange circle provides built-in context-dependent Help
.
Next, for any given Project you select, notice the UI changes once you click Administration
for that Project. In the Administration module you can, for example: see/add project members, and control permissions. In any TW sandbox, you can add yourself to other projects using the Administration
link. See next for more about the Administraion
tools.
Legend : The TaxonWorks Project Administration UI. See options explained next.In the main section under Projects
you can click to create a New
Project or use Projects overview
to find a Project and add a current TW user as a member.
From the Users
section, you have options to add a New
user, add multiple users using Batch add new
, List
all users, and see the Activity
for all Projects and Users.
Under the Data
topic, using Overview
you can create specific reports for different data types and projects. With Health
you find any data issues that the TW software has detected. Reindex
opens an option for you to create Darwin Core (standard) occurrence records.
Legend : Add New Project UITo create a New
Project Click Administration
in the header menu, then under Projects
click New
Enter the desired Name
in the field provided You are a member by default. Uncheck if creating for others. For the API access token
you select Generate new token
if you want to be able to access your data programaticallyclear api access token
if you need / want to stop all public programatic access to your data. Click Create Project
. As a result, your Dashboard
list will include the new Project. If for some reason you find you need to edit the name of your project, it's also editable after creation.
Users
need to be added to TW before they can become Project members
. Once a user, they can be added as members, to any project desired. If you are flagged as an administrator you can do everything in the workbench. As an admin, you see the Adminstration
link in the header menu. Feel free to add users to your sandbox through the Administration
link. If you do, please provide them a link to this Terms of Use Page and our Collaboration Understanding .
Sandbox Only: Feel free to add yourself to projects that are currently not visible to you . Steps to do this:
Click Administration
(top right) Click Projects overview
(on left) Click List
Review the list, select one using Double click for that row
Click Add project member
, find your name Click Create Project member
Before adding anyone to the list of TW Users
, please check the list as someone may already be in the TW Community through another project. In this case, you'll need to add them to your project as a new member. If they do need a User
account, see the following steps.
Signin to TaxonWorks Select the Project
of interest Click Administration
in the header menu Then under Users
, click list to search existing list. If you do not find the name / email you are looking for, go back one step to Users
and click New
and fill out the form. Type their Name
Enter their Email
Provide a Password
(It will be temporary, they will need to reset it). Retype the Password
(Optional) select Is administrator
if you want them to have this role. (Optional) select the matching Person
if they are in TaxonWorks. (Optional) select Generate new api access token
if desired for a User
that wants to query the TW Project database programmatically. Send the new User
(and soon-to-be Project member
) an email with instructions to read the Terms of Use Page and our Collaboration Understanding . They will also need to reset password.
Note: you can also go to Batch add new
to add many users
at one time (see under Administration
> Users
> Batch add new
) and you will need their email and name string for each new user.
Note: in TaxonWorks a Person
differs from a User
. To be a Person
in TaxonWorks, you have been vetted and with best practice, you have a globally unique identifier (e.g. an ORCiD or Wikidata Q number).
When you want to add an existing TW User
to a Project
see these steps:
After signin, select the desired Project
Then click Project
in the header menu Under Members
click Add project member
Search the User
and once found, click to select (Optional) select Is administrator
if desired Click Create Project member
(Optional) you may want to send the new Project members
an email if need be with a link to the new project. If you need to add many folks at one time, use the Add many project members
option instead. (See Project
> Members
> Add many project members
) and select the desired individuals and click Create project members
.
Note that once you log into a given project, you see 3 options for interacting with others and data. See the Tasks
, Data
, and Favorites
tabs.
The Tasks
provide you with one-click access to working on a specific activity such as Filter Sources
for the ones you seek or Comprehensive Digitization
of specimen data.
currently 80 tasks exist in TW tasks can be customized new tasks can be written you can search tasks tasks are associated with given global concepts (e.g. Nomenclature
, Source
, Biology
, Collection object
, Collecting event
, Image
, Matrix
, dna
, etc.) With the Favorites
tab, you can store your most-used tasks (aka activities) for quick access to what you do most often.
To add a task to appear in your Favorites
tab, click the 'star' on the task card. The Data
tab provides you with more of a traditional table view of information as stored in TW. Here you begin to get a sense of how the data are structured and related in TW.
If you would like more details about the TW Data Model, see the Data section of docs.taxonworks.org
With your knowledge of the Tasks
, Data
, and Favorites
structure you can try these actions.
Find a Task
of interest, click on the star and then click on the Favorites
tab. You'll see this task listed now for easy access.
...
Some icons in TaxonWorks help you move around (i.e. "navigate") in the software. Other icons touch the database , providing you with functions to add data or delete something. In TaxonWorks, icon button colors convey this idea.
Green buttons = write to the database Red buttons = delete from the database Blue buttons = activate something in the interface Note also, all icons with a blue circle and white middle are Radials
and serve to help you add information to (i. e. to annotate
) the object you are looking at (e. g. the Source
publication record, the CollectionObject
record, the Collecting Event
record, the TaxonName
record, etc). In other words, a tool found many places in TW, that integrates commonly used functions or tasks for annotating things (adding related information) in one place. The particular functions found after click are context dependent.
Icon Icon Name Purpose of Icon Radial Icons in TaxonWorks use these to add information to the current object of interest, move to a different area in TW, or select objects of interest. The particular functions found after click show you what types of information you can add or actions you can take. Annotate Radial use this to add information to the current object of interest. The particular functions found after click are show you what types of information you can add. Navigate Radial use this icon to move across to different areas in TaxonWorks Mass Annotate Radial use this icon to add information to many records at once in TaxonWorks Filter Radial use this icon to select a set of records from a search in TaxonWorks using the Filter
task (e. g. Filter Nomenclature
, Filter Sources
, Filter Collection Objects
, etc.) Quick Forms Radial use this to bring up commonly used forms associated with OTUs, such as Asserted distributions
or Biological Associations
Label Radial use this to create labels Linker Radial use this to send selected results from a filtered search to another Task in TaxonWorks to further refine your data subset Loan Radial select objects to loan or that are being returned Browse Taxa moves you from a taxon name to its associated OTU Browse Nomenclature takes you from an OTU to its associated taxonomic name Pinboard Add (if green) or Remove (if red) an item from your Pinboard. If the icon is blue, the item has been selected as the default in your pinboard and you can add it to a field automatically, for example, with literature citations. Edit With this icon, you may edit a given item. For example, from the Browse nomenclature
page, this icon takes you to the Edit taxon name
page associated with the taxon. Trashcan Use this to remove the current record from the database
As of this writing, you can only be logged into one instance (one project) of TW at-a-time. You can write your own tasks in TW? Ask us how. Prev
Introduction
Next
Sources
+
+
+
diff --git a/guide/Manual/customization.html b/guide/Manual/customization.html
new file mode 100644
index 00000000..c62ef97a
--- /dev/null
+++ b/guide/Manual/customization.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Customization | TaxonWorks Docs
+
+
+
+
+
+
+
+
+
diff --git a/guide/Manual/digitization.html b/guide/Manual/digitization.html
new file mode 100644
index 00000000..f1566cdc
--- /dev/null
+++ b/guide/Manual/digitization.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Digitization | TaxonWorks Docs
+
+
+
+
+
+ TaxonWorks offers taxonomists, collections staff, and others to collaboratively manage collections data for specimens and related objects.
Uniquely in TaxonWorks, we make it easy up-front to add customized fields (aka "data attributes") where needed. In addtion, in TW you can upload data mapped to Darwin Core, to specific fields in TW, and to these customized data attributes you add.
TW provides a suite of common tasks help you to manage your digitization and related data. This section assumes you have some familiarity with the TW user interface conventions and introduces new user interface features where needed. Next, please familiarize yourself some of the tasks TW offers directly relevant to digitization.
#left[Legend : ]
To get a sense of what can be tracked regarding specimens in your collection, see the Comprehensive Digitization Task in TW outlined next. Note also that you may enter data into TW record-by-record, or in batch mode (see Import and Export).
[INSERT screenshot of Comprehensive Digitization Task screen here]
There are many places where you can print labels from different tasks in TaxonWorks, including unit trays, specimen labels, and identifiers. The main task where you manage what is finally printed is Print Labels
, but labels are generated within a variety of other tasks.
Legend : Filter Nomenclature Task BoxTo create a set of new header labels. Search for Filter Nomenclature
search bar and click the task box. Use the various search parameters on the left to create a list of names you want to have on header labels. For example, you can select a higher taxon, then check descendents
to include all of its children. Legend : Filter Nomenclature Task Once you have a list of names you want to create header labels for, check the Select All
Box or select individual names. Legend: Radial Label A "Labels Created" success box will pop-up. Your labels should now be ready in the Print Labels
task. There will be a user guide for Print Labels here.
This is a list of instructions TaxonWorks
to return to this Dashboard
view You can generate many labels from many different places, then select which ones to print later? Prev
Collecting Events
Next
Matrices
+
+
+
diff --git a/guide/Manual/identifiers.html b/guide/Manual/identifiers.html
new file mode 100644
index 00000000..e7650c49
--- /dev/null
+++ b/guide/Manual/identifiers.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Identifiers | TaxonWorks Docs
+
+
+
+
+
+
+
+
+
diff --git a/guide/Manual/index.html b/guide/Manual/index.html
new file mode 100644
index 00000000..9d19af28
--- /dev/null
+++ b/guide/Manual/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Introduction | TaxonWorks Docs
+
+
+
+
+
+ In these next sections you'll find detailed instructions and examples of how-to scenarios in TaxonWorks, sometimes from the perspective of a specific projects needs.
With this manual we break down TaxonWorks into sections by different pivot points. For example, once you've understood the basic interface of TW, you may want to focus on given areas of interest such as managing your source data or your images or creating a matrix or entering data as part of your digitization efforts.
Of course, you may also want to focus your work around a particular process instead such as filtering existing data to create a subset of records for download or for verification and editing.
What follows next are sections dedicated to how-to for specific major functions of TW and to processes available.
Note in the Community Documentation section you can find examples of entire manuals written for a specific group managing their project data in TW as well as workflows and protocols for how they manage specific tasks in TW (aka "standard-operating-procedures").
Prev
Getting started with some basics
Next
Community Documentation
+
+
+
diff --git a/guide/Manual/matrices.html b/guide/Manual/matrices.html
new file mode 100644
index 00000000..ab960fc0
--- /dev/null
+++ b/guide/Manual/matrices.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Matrices | TaxonWorks Docs
+
+
+
+
+
+ Build sophisticated matrices in TW. Use them to create keys, score images and observations, manage projects, and streamline creation of custom outputs and sharing of descriptors.
TW provides a suite of common tasks help you to manage your matrices, descriptors, observations and related data. This section assumes you have some familiarity with the TW user interface conventions and introduces new user interface features where needed. Next, please familiarize yourself with the kinds of tasks TW offers related to Matrices.
Extensive information exists about the TaxonWorks data model . Information is presented in text and searchable graphic formats. Few comments:
Each matrix consistas of defined Rows
and Columns
. Rows
are OTUs
, Collection Objects
and other objects in the database which could be added to a matrix. The same OTU or any other object could be added to as many matrices as needed.Columns
are Descriptors
(characters) which could be added to a matrix. The same descriptor could be added to sevaral matrices.TaxonWorks does not store the entire matrix, instead we store individual observations for each cell in the table. In practice this means, that if you have two matrices which include the same OTU and the same descriptor, the observations in the cell will be identical in both matrices, regardless in which matrix the original observation was made. This allow for the user to clone and combine matrices as needed, the observations will be replicated for each matrix and the combination of the Row object and Column object. In most cases, the work with matrices starts in Observation Matrix Hub
task. Click New
button to create a new matrix. Once the matrix is created, you are automatically in the Edit
matrix mode. Alternatively, in the Observation Matrix Hub
, find an existing matrix from the list and click Edit
button. Also, in the Hub
you can pin a matrix, so that it could be used as a default matrix in various interfaces. Once in Edit
mode, rows and columns needs to be defined. Switch the Row/Column switch
to Column
position; Dynamic/Fixed
switch to Fixed
position. After that we can add a new Descriptor
to the matrix To add a new Descriptor
, click the New Descriptor
link at the top off the interface. Select the descriptor Type
. The available types are: Qualitative
- traditional phylogenetic descriptor with multiple character statesPresence/absence
- similar to the previous one, but only two predefined states are possibleQuantitative
- a single measurement character (a default measurement unit could be defined)Sample
- a numeric character, for which a min/max range could be scored (a default measurement unit could be defined)Gene
- ???Free text
Media
- a specialized descriptor designed for attachment of Depictions
, which will serve as a visual observation in the image matrix Show more mode allows to add some additional details about the descriptor: Short name
, Description name
- which will be used for autogenerated description, Key name
- which will be used in an interactive key, Weight
- which will bring the descriptor close to the top in an interactive key. If the qualitative 'Descriptor' is selected, two or more character states need to be defined. Each Character state
has two fields: Label
- '0', '1', '2', and the Name
, some additional information could also be provided when Show more
is selector. An example of a Qualitative descriptor: 'Body color' with two states: '0' - red, '1' - black. Once the information on the descriptor entered you can click one of the Create
buttons. In all cases, newly created descriptor is added to the matrix as a Column
. Create
will save the record, but you can continue editing the descriptorCreate and return to matrix
, will return you back to the Edit matrix interfaceCreate and new
could be used if multiple descriptors need to be defined. Alternatively, if descriptors do already exists in the database, they could be just added to an existing matrix in the Edit observation matrix
interface by using the search interface on the low left side. Change the Row\Column
switch to the Column
, and use Search
option. Alternatively, multiple descriptors could be copies from another matrix using From Another Matrix
option. To add Rows
to the matrix, change Row/Column
switch to Row
; Dynamic/Fixed
switch to Fixed
position. OTU
, Collection Object
, or Extract
could be added to a matrix as a Row
. Assuming that those objects already exist in the database, they could be added to the matrix using Search
or From Another Matrix
options, it will work very simillar to adding an existing Descriptor
to the matrix. There is also an option to add a new Row
to the matrix directly from the Browse OTU
or Browse Nomenclature
tasks. In either of tasks, select OTU radial
button, in the Observation matrices
sector, you can select a matrix to automatically add this OTU to it, and proceed directly to scoring mode. Addvanced option to add multiple OTUs to the matrix is using Dynamic
option. This option allow to select either all OTUs marked with a specific Tag
or select a parent taxon, for example a genus, to add all children taxa, for example species, if new species are added to a genus in the future, those should automatically be added to the matrix. Select Sortable columns/rows
checkbox on the top, after that the columns and rowns could be resorted by drugging each up and down the list. OTUs could also be sorted by their nomenclature, using Sort by nomenclature
button. To delete a Row
or Column
from the matrix, use the Trash can button. Keep in mind, deleting each of those does not delete the corresponding object from the database, it only delete its association with a particular Matrix. Deleting Rows and Columns also do not affect the observations associated with those. To edit Row or column, for example to add a new character state to the descriptor, use Edit
button next to this descriptor. In the Edit Matrix
interface, select a 'Score' button second after an OTU or Collection object name in the list You will see the list of descriptors and all possible states, you can check applicable states or add values for numeric descriptors. All changes are saved automatically. Scores could also be cloned from an another object in the matrix using Clone and copy
button. After cloning, only few changes may be required to separate one OTU or a Collection Object from another. It is recommended to select the most similar object for clonning. Destroy
button could be use to clear all scores from a particular OTU or a Collection object.The Matrix Row Coder
interface could also be accessed from the Browse OTU
or Browse Nomenclature
tasks. In either of tasks, select OTU radial
button, in the Observation matrices
sector, you can select a matrix to automatically add this OTU to it (if not added previously), and proceed directly to scoring mode. In the Edit Matrix
interface, select a 'Score' button second after a Descriptor in the list You will see the list of OTUs and Collection object associated with this particular Descriptor. You can check applicable states or add values for numeric descriptors. All changes are saved automatically. On the top of the form, there are options to Destroy all observations
, Populate column
with one particular character state, From the Observation Matrix Hub
task, you can click View
button next to the name of the matrix. In the view mode, you can preview entire matrix, download the matrix in TNT
, nexus
, NeXML
, CSV
formats, to be used, for example in phylogenetic recontstuction or be uploaded into a Lucid builder. Once the matrix is completed, it could be used for species determination as an Interactive Key
, which is accessible from the Observation Matrix Hub
. Before using the matrix for identification, it is recommended to validate the matrix. A matrix could be validated in the Edit
mode by selecting the checkbox Validation
. Each row of the matrix will be evaluated if it has enough resolution to separate this particular row from all other rows in the same matrix. If a row does not pass validation, the matrix could still be used for interactive identification, but adding some additional descriptors may improve the resolution. The Interactive key
interface is divided into 4 frames: the top one with the title and options; the middle one with the list of descriptors; the lower two frames include the list of rows which could be identifier, and eliminated rows which will be populated once the identification is started. The descriptors are sorted by their weight and separating power. The order of the descriptors could be changed in the preferences on the top. To start the identification, select one character state from any descriptor. It is possible to select more than one state in a case of uncertanty, to do this, click on the descriptor name, and make multiple selection. By default the rows which do not have scores for selected descriptor are not eliminated from the list, it is assumed that any character state is possible, but this behavior could be changed in the settings on the top of the page, if it is needed, for example, for the matrix evaluation. If a particular row in the matrix does not have a score matching selected character state, this taxon or collection object is moved to the list of Eliminated rows. The behavior could be slightly changed by adding error tolerance. The tolerance equal '1' means that a single error in identification is permitted, the row will be eliminated only when 2 or more errors exists. To clear the interactive key, and start the identification from the beginning, use Reset
button. If the matrix is large, it could be more convenient not to eliminate the row after selection of each descriptor, since the wait time could be several seconds, before you can select a next descriptor. It is possible to use Refresh only taxa
option. The list of descriptors will not be updated before the Refresh
button is clicked. After the refresh, the taxa not matching the search criteria are moved to the right, and the list of descriptors also updated to bring more useful once closer to the top of the list. Continue determination before only one or few rows still present in the list of Remaining. It is also possible to use Select
button, to reduce the list of rows to be identified from the very beginning. If the list of entities is reduced, the list of descriptors will also be optimized to identify the remaining entries. To make the interactive key more functional, you can add depictions to each character state of each descriptor. To do this, go back to the Edit Matrix
interface, select one of the descriptors, click edit button next to it. In the Edit
mode, you can use the radial annotator next to each character state to add a depiction. Image matrix is a specialized matrix which has defined descriptors and row, but does not have any scores. Instead of scores, images are added as a depiction to each cell of the table. The image matrix could also be used as a pictorial key for taxon identification, the images from the matrix are also viewed in the Browse OTU page. So instead of adding images directly to each OTU, they could be added to the image matrix instead to get additional functionality.
To work with an image matrix, create a new matrix as described above. Add rows to the matrix, OTUs for example. Add new descriptors to the matrix, all of them should be Media
type descriptors. Usually this matrix has fewer descriptors than typical morphological matrix, and each descriptor will represent a standard view of the organism or a particular structure useful to determination of taxa. For example, 'dorsal view', 'lateral view', 'head', 'wing venation'. Once the rows and columns are defined, the most convenient way to work with the image matrix would be to use the Observation Matrix Dashbord
task. In the Observation Matrix Dashbord
task, select a parent taxon and rank of the children taxa which you would like to see, for example, select a genus name, and select species rank to see all the species-level taxa from this particular genus. Once selected, click the Search
button. You will see the table of OTUs with some summary, how many observations has each, and how many depictions are added to a particular OTU in an image matrix. Use Open in a matrix
button next to one of the OTUs to add OTU to a matrix. Select the image matrix from the list. Once the matrix is selected, you get redirected to an editing interface, which looks like a table, where the descriptors are the headers of each column. To add an image to a particular cell of the table, simly drug and drop it from a folder on your computer to that cell. The images could also be moved from one cell to another. Once the image added, you can provide some metadata. Click on the image to add caption. Click the Radial Annotator
button, to add citation and/or attribution. Adding images to multiple OTUs: in the 'Observation matrices dashboard', once you filtered the list of OTUs, select few of tham and click the Edit image matrix
buttom. The table for editing multiple OTUs will be opened. WARNING: do not select all OTUs for editing, since ALL of tham will be added to a matrix as separate Rows. Use the previous step to add multiple OTUs to any given matrix, not only to Image matrix, that could be another fast way to add multiple rows, for example adding rows for a future ineractive key. Image matrix for any given OTU could also be accessed with the OTU Radial
button, in the Browse OTU
, or Browse Nomenclature
tasks. In the Observation Matrix Dashbord
task, select a parent taxon and rank of the children taxa which you would like to see, for example, select a genus name, and select species rank to see all the species-level taxa from this particular genus. Once selected, click the Search
button. In the filtered results, Select All
or few OTUs using checkboxes before the names, and click the View image matrix
button. A table will be open to display all illustrations, so that OTUs could be compared to each other. In the View mode, you can hide some rows but clicking a checkbox before each row, or you can quickly switch to the Edit mode. Prev
Digitization
Next
Identifiers
+
+
+
diff --git a/guide/Manual/nomenclature.html b/guide/Manual/nomenclature.html
new file mode 100644
index 00000000..1f9f2a9c
--- /dev/null
+++ b/guide/Manual/nomenclature.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Nomenclature | TaxonWorks Docs
+
+
+
+
+
+ Collectively gather all your relevant nomenclature information in one place in TW. Nomenclatural data are separated from but connected to the biological taxonomically-related information about such topics as host information, genetic/genomic or other biological associations data about a given biological taxon.
TW provides a suite of common tasks help you to manage your nomenclatural and related data. This section assumes you have some familiarity with the TW user interface conventions and introduces new user interface features where needed. Next, please familiarize yourself with the kinds of tasks TW offers related to Nomenclature.
A reminder, if you want to record information about biology (hosts, parasites, distribution, etc.) that doesn't belong in the nomenclature section, you will use the OTU radial icon
or OTU nav icon
to access and record those data from a nomenclatural context. Legend: Navigate from Browse Nomenclature
to the OTU
for a given taxon. Biologically related information about a taxon goes into the Operational Taxonomic Unit (OTU) taskLegend: In the Browse OTU
task, enter biologically-related information.Navigate to the Tasks
list Use the left side bar filter to Select
Nomenclature
The result is a list of task cards, each one related in some way to capturing, using, filtering, editing, and publishing nomenclatural data. Legend: Color-coded Nomenclature tasks
. Yellow tasks are more or less stable and useful, some changes anticipated but basic functionality will remain the same. If green, they likely won't change. Red indicates experimental status -- they work, but might not last or may radically change.Browse nomenclature
, New taxon name
, and New combination
are useful tasks to add, view, and modify existing classification. Browse nomenclature
provides a convenient way of navigating from one Taxon Name
to another. It also gives you an option to quickly jump to the Edit Task
.
Legend: Finding keyboard shortcuts associated with the Browse Nomenclature
user interfaceMac computers use ctrl
as triggering key, PCs use alt
. Example: From the New/Edit taxon name
task there are different extensive keyboard shortcut options:
ctrl+s Save taxon name changes ctrl+n Create a new taxon name ctrl+p Create a new taxon name with the same parent ctrl+d Create a child of this taxon name ctrl+l Clone this taxon name ctrl+e Go to comprehensive specimen digitization ctrl+p Create a new taxon name with the same parent ctrl+m Go to new type material ctrl+c Go to comprehensive specimen digitization ctrl+b Go to browse nomenclature ctrl+o Go to browse otus Additionally, on any Browse/Show
page you can:
ctrl+p - automatically pin and default that name to the pinboard ctrl+g - pop-up a quick navigation modal that lets you navigate to the defaulted records Extensive information exists about the TaxonWorks data model . Information is presented in text and searchable graphic formats.
Legend: Visualizing TaxonName
relationships in TWAll Taxon Names
are stored as uninomials (called Protonyms
) in TaxonWorks. A hierarchical nomenclature is entered by you and is customizable to provide the maximum level of flexibility for classifications. Three fields are required to create a Taxon Name
record in the database: Name
, Parent
, and Taxonomic rank
using the New taxon name
task.
Select the New taxon name
task. Enter the desired Name
Start typing to select the Parent
from a drop-down that will appear Select the Rank
Note that TW software smart logic guesses at the Rank
so please check. Click Create
to save
. The Parent
is any valid taxon of a rank higher than a new one. This section is the only section of the form which requires the use of the Save button (after Create
step). All other sections of the New Taxon name
form use autosave mode. After you click Create
the task name changes to Edit taxon name
. Three fields required to create a New taxon name
Once you have entered the required fields for New taxon name
and clicked Create
more fields become available for you to populate with data for adding Author
, Status
, Relationship
, Synonymy
, Type
, Original Combination
, Subsequent Combination
, Classification
, Gender
, and Etymlogy
. Please review the next screenshot for what this looks like in the UI. Below this screenshot after the Conceptual Approach section, you will find a brief description of each of these sections followed by detailed explanations and examples.
All fields in the New taxon name
task The highest rank taxon in a given hierarchy is Root
. This is a default Taxon and can not be modified, it is created when the project is first initiated. The first taxon attached to the Root requires selection of the Code of Nomenclature (ICZN, ICN, ICNP, ICTV). This selection is required to enforce validation rules specific to this particular Code of Nomenclature. All taxa below this taxon do not require selection of the Code, it will be inherited from the parent. The same database may contain taxa covered by different Codes of Nomenclature.
Illustrating the concept of Root
in TaxonWorks See this next screenshot to show how you can have other taxa at the Root
as needed, that reference a different Code of Nomenclature.
Showing several taxa that cross kingdoms and Codes of Nomenclature at the level of root To understand nomenclature in TaxonWorks it's important to understand that the basic idea is to accumulate/add new facts rather than update, change, or delete existing records. This is incredibly liberating in many ways, as the system will resolve the current status by inferring across the facts that you have added. As an example, rather than think "how do I change this name to invalid", think "how do I add the fact that so-and-so stated this name is invalid". The name was valid in the past, now we add a fact to indicate somebody more recently thinks it's invalid. The system will look at the years the facts were applied and then summarize the facts as we presently see them. This also lets the complete nomenclatural history, in all its gory detail, be recorded.
In the Author
section of Edit taxon name
you have three optional ways to pick from to record authorship. This information sets the original authorship of the name (as opposed to a subsequent citation).
Three ways to add original authorship via Source
, Verbatim
, or Person
The Source
option works if you have added the relevant Source
(e. g. publication) for this particular Taxon name
to TaxonWorks.
Add original authorship via Source
Click Source
Type just a few characters in the search box to find the correct source. A drop-down appears with your search results. Select the relevant publication. Source author
and Source year
of that publication will be used for the taxon name Author
.Note you can pin this source if you know you'll immediately be adding more names with the same Author
. Results for this example above would be Suricata Desmarest, 1804. Add original authorship via Verbatim
Click Verbatim
Enter the Verbatim author
and Verbatim year
directly. Add original authorship via Person
Click Person
Search
(enter only a few letters)Click to select the desired Person
This example shows Desmarest was found by Search and then selected. If you pick an incorrect Person
then Click on the trash can to remove and search to pick a different person. If you have more than one Author
, then pick the others here as well. If authorship is provided by you in more than one way it is prioritized and works as follows:
From the Verbatim Author
and Verbatim Year
fields From the Person
(TaxonNameAuthor) assigned as an author of the taxon name From the Source author
and source year
fields From the Person
assigned as an author of the Source (SourceAuthor) assigned as the original citation The preferred priority for your workflow is:
Assign an original citation (Source
in Author
section) that has People
assigned as authors to that Source
entry. Override the authorship in the Source
if needed by assigning one or more People
from that source as authors in the Person
section (for example when doing Smith in Jones & Smith
). Use Verbatim Author
and year
, if original source and People
roles are not provided. Keep in mind.
TaxonWorks is about creating the links between concepts (e.g. things like People
, Collection Objects
, Names
, OTUs
). How those concepts are visualized is a big can of worms. You can assign alternate values to People's names (e.g. abbreviations, alternate spellings) if you want to reflect how an author's name is spelled in different contexts.
The preferred mechanism to rendering parentheses around an author/year (indicating current placement is different than original) is to assign the original Genus
in the Original Combination
(see below). This will automatically render the name correctly. Use Original Combination
in Edit taxon name
to render parentheses If you do not know the original combination, or you wish to "force" the use of parentheses you must use the Verbatim Author
option. Place the parentheses around the author there: (Smith)
. The code will automatically include the year in rendering out the name as needed. The year a name becomes available defines its priority for nomenclatural purposes. It may differ from the year printed on the matter which is made available. The year of publication can be inferred from the Source
you linked to the name as an original combination, or explicitly noted in the Edit taxon name
task in the Author
> Verbatim
> Verbatim year
section.
From the Source hub
task
Type a few characters to find your Source
and select it. Click the Edit
(pencil) icon to edit the year
(month, day) as follows If you only have reference to a single value, it goes in year
(month, day) If you have reference to two year values, the actual year of publication
goes in year
, and the stated year of publication
goes in stated_year
. If you have month
or day
publication, they go in month
or day
. The value provided in Edit taxon name
> Author
> Verbatim
> verbatim_year
is always assumed to be the actual year of publication
. We assume that if two dates are known then the user will create and reference a Source
to record those values, i.e. there is no mechanism to provide and differentiate the two types of year directly with the name itself.
This section of Edit taxon name
relates to nomenclatural statuses, which are applicable to the taxon itself and does not require any knowledge of related taxa (e.g., Nomen nudum
, Non binomial
). Note that valid
is the default Status
so that you do not usually have to select Valid
(except in certain circumstances, see below).
In Edit taxon name
: Three ways to assign Status
to a taxon name Multiple Statuses could/can be assigned to the same taxon Most common status are listed directly in the Common
section for you to pick from. The Advanced
option allows you to search for a specific status. All available statuses are listed in Show all
section in a pop-up for you to scroll down and click to select. The statuses which are not applicable to a current taxon are greyed out. Using Show all
to select a Status
for a taxon Keep in mind.
All names by default are valid names, i.e. a valid
status should not be assigned to all the names in the database. Use of the Valid
status is reserved for special cases, for example when the taxon has a nomenclatural history of being treated as a synonym, and later was treated as a valid name again, in order to preserve a historical record of synonymy, and override it, a status valid
could be added to the taxon, the citation
on the status will indicate the source
where the validity of taxon was confirmed. Status Homonym
could be added to the taxon to indicate invalid
status in cases where the senior homonym
is not known, but this should be avoided -- the better way to record homonymy is to create a relationship
(see below). After you select a Common
status, e. g. Nomen nudum
Select Status
= Nomen nudum
option under Common
. Note your choice is automatically saved after you selected it. In this sense, a Relationship
references a nomenclatural status
(or more than one status) based on the connection to other taxon names.
These nomenclatural relationships are the statuses which require record of two Taxon Names. For example, Aus
is a synonym of Bus
. In this relationship we can specify a status for each of those two names:
Aus
is a Junior synonymBus
is a Senior synonymKeep in mind.
For a given invalid name, navigate to Edit taxon name
> Relationship
for that invalid name. In the Relationship
section, you will do two things: search for and select the related name, then you declare the relationship status picking from the options provided (as described above).
Here's a quick example of what it looks like when you have completed the above process. In this example, we started by using the Browse Nomenclature
task to search for and find the Nomenclatural record for the invalid name Thysanidae Peck, 1951
. Then, we clicked the to get to Edit taxon name
and go to the Relationship
section. We searched for the (valid) name Signiphoridae Howard, 1894 and picked it. We then selected one of the default statuses: Subjective synonym of
. Our choice was saved automatically.
What we see after we declared the Subjective synonym
status relationship Always start with the invalid name and add relationships that reference the valid (or senior) name Use Browse nomenclature
to find the invalid name, then Edit
the Relationship
for that name. Check the soft validation messages, they will let you know what may be improved or added. When adding a relationship, select one that is as specific as possible, subjective synonym
is better than just synonym
, primary homonym
is better than just homonym
. Note the Soft validation
help in the right margin Although each relationship could be read in either direction (Aus
is junior synonym of Bus
, Bus
is senior synonym of Aus
) only one way recording of the information is supported in TaxonWorks at the moment. The relationship should always start from invalid name . In our example, it is Aus
, so the editing should start on the Edit taxon name
Page for Aus
. Then, to build a new relationship
, search for the second (related) name, in our example it is Bus
, and then select the status
for this relationship, which is objective synonym
in this case. Once the relationship is created a citation
could be added to this relationship
to indicate the Source
, where this synonymy was first proposed. In cases of competing synonymy, where in one source Aus
is recorded as synonym of Bus
, and in the next publication it is a synonym of Cus
, both synonym relationships should be created in the database, if the citations are provided, the latest citation will be used to position the taxon in the classification. In cases where the name was reported as a synonym by mistake and was revalidated in a later publication, the relationship should not be deleted , a valid
status could be added to the taxon to overwrite the synonymy (see above) If we know that Aus aus
is a homonym of Bus aus
, and that Aus bus
is a replacement name, then we have to express two "facts", i.e. relationship between taxa, in this case 1) A. aus
is a synonym of B. aus
, 2) A. aus
is replaced by A. bus
. Both of those statemens are invalidating statements, so both of them start with the taxonomic page for A. aus
The basic steps:
Ensure all 3 protonyms exist in the database (aus
, aus
, bus
) Navigate to the invalid name Aus aus
Create the first relationship: Select the senior homonym name Bus aus
and a homonym relationship (be specific: primary homonym
or secondary homonym
) Create the second relationship: Select the valid name (replacement name) Aus bus
and add a synonym relationship (replaced by
or subjective synonym of
, the second option is true when the substitute name was selected from one of the junior synonyms) If we know that Aus aus Author2
is a misidentification of Aus aus Author1
, and that Aus bus
is a correct name, then we have to express two "facts", i.e. relationship between taxa, in this case 1) A. aus Author 2
is a misidentification of A. aus Author 1
, 2) A. aus
is invalid name for A. bus
. Both of those statements are invalidating statements, so both of them start with the taxonomic page for A. aus
The basic steps:
Ensure all 3 protonyms exist in the database (aus
, aus
, bus
). An additional protonym should be created in the database for 'Aus aus Author2' different from the correctly applied name 'Aus aus Author1' Navigate to the invalid name Aus aus Author2
Create the first relationship: Select the correctly applied name name Aus aus Author1
and a misapplication
relationship Create the second relationship: Select the valid name Aus bus
and add non specific invalid, linked to
relationship (do not use synonym
relationships, since misapplication
is not an avaliable name) Create the misspelling
relationship the same way as misapplication
.
The original combination is required to keep track of the taxon history, properly handle parentheses in the author string, and also to validate homonymy between taxa. There are two ways to enter the original combination in TaxonWorks.
To cite usage of the original combination cite the taxon name (Protonym) itself. This is because you are citing the fact that a) there is some name that b) came into existence in some first use, i.e. the definition of a Protonym.
To properly handle taxonomy, always enter taxon name
(basic information) in the original form (e.g. species was described as Aus albus Author
, now it is Ba alba (Author)
, the name of the taxon should stay as albus
, the form transition will be handled by the genus gender and the species part of speech . To build an original combination, first move the name of the taxon to the nomenclatural rank level, at which it was originally described. This is important, because a species could be originally described at the subspecies level. Select the original genus and if needed the original subgenus, assuming those taxa are already in the database. If they are not, open a separate browser tab and enter missing names in the classification. The rank of each name can be adjusted, the name can be dragged up or down. Hint: if the original name has an incorrect spelling which had to be corrected (e.g. mülleri
or albi-lineata
), or the original genus was misspelled, two protonyms have to be stored in the database. The first one with the correct spelling and the second one with the original spelling. The second protonym should be linked to the first one with the Incorrect original spelling
relationship. This relationship also overrrides the restriction on the Taxon Name
spelling.
You will sometimes discover you cannot create a taxon with a misspelling. The soft validation
software steps in. To enter a misspelled name in TaxonWorks:
Enter the correct spelling for the TaxonName Click Save
to save this Taxon Add misspelling
or incorrect original spelling
in Relationship
Then change the Taxon name
spelling to the misspelled form and Click Save
again. Click the button Set as current Data can be added directly in the Type section
of these tasks
New type specimen
or viaNew taxon name
Find the New type specimen
task via the New taxon name
task Type
section or directly from the tasks tab (filter by Nomenclature
on the left to quickly find the New type specimen
task).
See also the basic article parsing exercise for a walk through that addresses many of these issues in a more contextual framework.
Manage Biocuration Groups and the Classes associated with each of the groups Adding Groups
and Classes
can be done independently. You can then assign classes to a given group (e. g. class Female
or Male
get added to group Sex
). Classes do not have to be part of a group. Adding Groups and Classes work the same way. Classes, once added, can be associated with any given group created. Note the "plus" sign in the above screenshot which gives you a list of your classes you can add to that group.
Manage Biocuration Groups using the Manage Controlled Vocabulary
task To add a biocuration group
Select Biocuration Group
from the menu bar. Give your biocuration group
a Name
Next, write a definition
for this group
so that others may apply it correctly for your project. Note that definitions must be at least 20 characters. Then, select
a color to apply to this group
label for ease of use / finding in the user interface. If one exists, enter a URL here to a known standard term / ontology entry for this group concept. Example, for group
= Sex
there is a term in the Darwin Core Standard (DwC) (from Biodiversity Information Standards TDWG) for Sex
. You would get this URL http://rs.tdwg.org/dwc/terms/sex
from the DwC Terms List from tdwg.org and enter it in the URL field for this term. This ensures the data get mapped / associated with the intended concept on export. Lastly, click Create.
Manage Biocuration Classes using the Manage Controlled Vocabulary
task To add a biocuration class
Select Biocuration Class
from the menu bar. Give your biocuration class
a Name
. Next, write a definition
for this class
so that others may apply it correctly for your project. Note that definitions must be at least 20 characters. Then, select
a color to apply to this class
label for ease of use / finding in the user interface. If one exists, enter a URL here to a known standard term / ontology entry for this group concept. Example, for class
= Female
there is a standard term and definition in the Phenotype and Trait Ontology (PATO) . You can search PATO for female
and you will get this URL http://purl.obolibrary.org/obo/PATO_0000383
to enter in the URL field for this term. This ensures the data get mapped / associated with the intended concept on export. Lastly, click Create.
Now you can navigate to the New type specimen
task
Select the type
(e.g. holotype, paratype, etc.), this unlocks the Collection object
section of the form (see screen shot next). New Type Specimen
Task optionsIf the type designator is not the same as either the 1) the original citation on the species Protonym or 2) the original citation on the type material record then select the type designator if known. The designator will be inferred from the aforementioned citations otherwise. At present, if you have created a Collecting event
, find it by id
(the current search is a stub, and very crude), otherwise add verbatim data to the Buffered
sections. Buffered
data persist with the Collection object
, to be transcribed into Collecting events
, determinations
records, etc. some time downstream in the digitization process. Select the Biocuration classes
you want by clicking on a green button (remember green in TaxonWorks means create a record). This creates a record indicating that the collection object is that class. The button will turn red (remember red in TaxonWorks means destroy a record). Clicking a red button will remove that classification from the object. Select a repository
Click create
. Your record will be added to the right side of the form, you will see it highlighted by type in a light green. That means the form on the left can be used to edit that record. Click New type
to add another record (e.g. paratype). New Type Specimen
task showing Buffered
, Repository
, and Biocurations
sectionsSeveral categories for the family group name
exist:
original family group name form
;incorrect original family group name form
;subsequent family group name form
;misspelling
. All of them could be added to the database as individual Protonym linked to the correct family group name form (valid or synonym) with a single Taxon Name Relationship
, for example Aini is family group name original form of
Ainae.To simplify the work with family family group names, two sections were added at the botom of Edit task . For each name (valid or synonym), an Original form
could be added as well as multiple Subsequen name forms
(with citations to the works where those forms were introduced). The two section should simplify working with history of a family-group name, and keeping track of spelling changes and/or historical changes of the taxon rank. It is recommended to track changes of a family-group name at the lovest coordinate rank taxon. For example, if you have a family, subfamily, and tribe based on the same genus name, all history should be added to the protonym at the tribe level (regardless at what level the name was treated in the literature historically).
Incertae sedis implies a relationship between two protonyms. Any time something you want to express references two protonyms you must use a Taxon Name Relationship
to express this data.
For the name in question select the parent
under which it should be placed, then select the relationship
. Misidentifications are a tricky gray area. Remember that we only care about the nomenclatural consequences of the use of the names in question. Taxon Identifications are linkages of OTUs
to Collection objects
, this is the preferred mechanism for linking one or more identifications to a collection object.
A question from a user reflects the trickiness:
Imagine there is a genus Aus , with type species Aus bus . Then someone describes a new species Aus cus , which subsequent authors don't even consider to be in the same superfamily. So I cannot enter Aus twice because the second one is a misidentification but no one knows for sure what it is. This is just an original genus
. This is the same genus in both species. The genus cannot be misidentified. This is just a position of the species in classification, regardless where it was originally described or subsequently placed.
The proper way to handle this is to use a single Aus , which is placed in the correct family. In both species Aus is the Original genus
, in Aus bus , this is also a Parent taxon
. In case of Aus cus , if the current genus is not assigned, the superfamily is the parent taxon. An incertae sedis relationship should connect Aus cus and the superfamily.
Species misidentification/misapplication. Misapplication itself does not make an available name. But this a common practice to include misapplication in the list of historical usages of the taxon names, especially in the cases where a new name is proposed as a "replacement" for a previously misidentified species. Remember, that nomen novum cannot be proposed for misapplication, since it requires a previously available name, but invalid because of homonymy.
To record this in TaxonWorks, a new Protonym
for a misapplied name should be created in the database. This Protonym should be linked to two other Taxon Names
with two Taxon Name Relationships
. The first relationship is to an available name with the same spelling (it could be a valid name or a synonym). The relationship type
is Misapplication
. The second relationship Invalidating
relationship should link this TaxonName
to the correct name for this taxon. Remember, the Synonym
relationship is not applicable here, since it assumes that both names are available name, and in this example Misapplication
is not an available name. Follow the soft validation messages for other essential information for the Protonym
in the database.
An example: The name Aus aus Author 1, is a misapplication for Aus bus , and Aus aus Author 2 is a completely different species.
After the Protonym for the first name is created two relationships will be added in the database:
Aus aus Author 1 Misapplication, linked to Aus aus Author 2Aus aus Author 1 Invalid, linked to Aus bus Once the misapplication is created, an OTU
could be linked to the TaxonName
, which could be used, for example, for taxon determination
.
For this task, be sure you have put the source
in the Pinboard
and selected it as the default
, as this will save a lot of time during the process. Note also, that TW is smart, and as soon as you enter the name, it checks to see if it already has it (see example below).
UCD Specific Note: UCD@TW has been previously populated with the data from John Noyes’ UCD, so inside the UCD@TW database you will not have to create a root
for the taxonomic name tree (that is, there should always be a parent taxon
). First, fill out the name of the highest-level taxon that you are creating, and indicate its parent taxon. For example, if you are creating a new genus with 2 new species, first create the genus, and then create the two new species. If one of the two new species is type-species for the genus, you can come back to the genus name and add the type-species later.
To manually create a new taxon name
(e.g. species / genus / family):
Select the New Taxon Name
card from the Hub
. Finding the New Taxon Name
task card In the New Taxon Name form
add the new name
and select the parent
. Entering a string in the Parent
field gives you a list of possible matching names to pick from. The new Name
field works similarly to help you avoid adding the same name twice (think about collaborations). Partial view of the New Taxon Name
task Adding new name
and selecting the parent
in New Taxon Name
task Based on the rank of the parent, TW will then ask you to select the precise taxonomic rank of the new name
(see below). If everything is correct, hit Create
. Once you do this, the rest of the fields related to a new name will appear (see below). Check rank
of name to be added is correct and click create
The entire New Taxon Name
form options now appear Now you provide the Source
(publication) and authors
. If you have pinned the source, the pinboard
icon will be blue and you can click it to automatically fill in the source details. Then choose Person
, and enter enough letters to bring up each author (they should be in the database if they were entered with the source). If the authors of the Source are the same as the authors of the new name, you can click the button to the right Clone from source
. If multiple persons pop up that appear to be the same (for example A. Dal Molin
and Ana Dal Molin
), you can use the Uniquify People task
to resolve and merge them (see Scenario: Resolving redundant person name strings, and matching author names with and without diacritical marks). If an author name is not found, you can enter it and add it by clicking the green Add New
button. This will add the author to the names table. In most cases, for new taxa , you can skip over the Status
and Relationship
fields.
However, if the taxon is a fossil, you should check Fossil
in the Status
field. The name will now appear with a little cross symbol to the left. There are special rules in ICZN and TW for fossil taxa. Notes for Status
and Relationship
fields.
To pick a Status
for a name, you note Common
ones are listed by default for you to pick from.
Pick from the Common
list OR Click Advanced
to search for a Status
not in the Common
list and pick it OR Click Show all
to get a scrollable list of all Status
options possible for the given code (e.g. ICN vs ICZN options will differ) to pick from. To declare a Relationship
First go to the Edit Taxon Name
record with the lesser status (e.g. the Synonym
name) From there, in the Relationship
field, search for the name with the higher status (e.g. accepted or valid name). Select the desired name You then get to select the Status
of the Relationship
for the two names. The result always in TaxonWorks is that you read the result as the lesser status name has Relationship
(what ever you selected) to the higher status name. (Not in the other direction). The Status
and Relationship
fields in Add/Edit new taxon name
task The scrollable Status
list resulting when you click Show All
The Type
form is next, which opens up a new form to capture details on the type. We prefer to complete the rest of the New Taxon Name
form first, and then do the Type
.
For new species, the Original Combination
will be the same as used in the paper, so Set as Current
.
Finally you can specify the gender and form of the new name . For species-level names there are four possibilities:
Adjective
. Most species epithets are probably treated as adjectives, for example, Signiphora flavella meaning a yellow species. These will change their ending if moved to a genus with a different gender. Names with the suffix “-ensis” (usually referring to a place), change the ending only if put in combination with a genus name that is neuter, in which case it becomes “-ense”.Noun in Apposition
. These don’t change gender when transferred to other genera with a different gender. An example might be a name like Aphelinus mali , named after the common host, the woolly apple aphid. An arbitrary combination of letters is treated as a noun.Noun in genitive case
. These are commonly patronyms, ending in “-i” for males and “-ae” for females.Participle
. A participle is an adjectival form of a verb. These are treated as adjectives, and they must agree in gender with the genus name.There is a text field to capture the Etymology
, in most cases you can simply paste this text from the publication.
Be sure to Save
all the information (green Save
button at upper right) before moving to the Type
screen. (UCD prefers to enter Type
information last, after everything else on this page has been saved).
In most cases, the Quick type
screen will provide all the details you need to enter information on the type, and this is what we show below. However, if you have other information to add for the type, such as Lat/Long data, you will need to use the Comprehensive
form.
In Edit Taxon Name
task add type
information using Quick
or Comprehensive
options The Quick
New Type Specimen
form The Comprehensive
form to add many type specimen details First, pick the nature of the type
(for most new species this will be a holotype), provide the source
(click blue pin
button if source is the default
), and the page number
(s) on which the type is designated. The rest of the information on the type is filled in with the screen below.
In most cases, the type will be a new specimen, not already in TW as an existing Collection Object
. If so, click New
. Paste the label data for the type into Buffered Collecting
event. This is a verbatim text field. In most cases, you can ignore Buffered determinations
, and Buffered other labels
. Total is number of specimens (one for a holotype). Designate the preparation type
(pin, slide-mount, there are several choices). The Repository
is the institution where the type is deposited. Hopefully the repository will be in the TW table, otherwise you may need to create it using the Repositories card
in the Data portfolio. Collection Event
refers to a specimen already in the TW database, which in most cases will not be the case if you are curating a new species description.In Biocurations
, indicate whether the type is an adult or immature, and a male or female. Adding more Type
information Finally, you enter the Identifier
for the type, which consists of two parts. Note that this may be different from the repository (a single institution may have several collections, each with a different “namespace”). Think of the namespace
as the part of a specimen ID number that does not change for each specimen, for example, TAMU
in TAMU x01234567
. If the namespace is not in the database, you may need to create it, but since these are shared across projects, there is a good chance it will be there. (See the Glossary for more details) Click to open the Radial Annotator
. Select the Identifiers
option. For Identifier group, select Local
. Next Search for the Namespace
of the collection in which the type is deposited. Once you have selected the namespace, paste in the type or specimen number (only) in the Identifier
field. Click the green Create
button. Open the Radial Annotator to add a specimen Identifier
in TaxonWorks Adding the specimen Identifier
information If you wish to add paratypes
(optional), you essentially follow the same process for each one.
For many contemporary taxa, there may also be a ZooBank number
associated with the species. The correct way to enter this is to:
Scroll to the top of the Edit Type Specimen
page (or Edit taxon name
page) and click the Radial Annotator
to the right of the blue species name. In this case, the Identifier
will be Global
. Pick Lsid
, and enter the ZooBank accession number
in the Identifier
box. Note that some publications will provide the link to ZooBank which is not accepted by TW, but not the actual Lsid. In this case, navigate to ZooBank to get the valid Lsid, which will have the following format: urn:lsid:zoobank.org:act:5EB72879-1E9C-4A89-BCD8-FF37534B7172
If the paper does not list an Lsid for the new species, it might be worth a try to find it on the Zoobank.org web site.
Be sure to click the green Create
button at the bottom of the screen before leaving! You show now add any additional information about the new species (or genus) in the publication following the process described next.
If you are creating a new genus-level
or family-level
name, the process is similar, but in many ways more simple because the type will be a species name or a genus name, respectively. If the type-species or type-genus name is also new, probably the easiest path would be to create the family-level or genus-level name first, then create the name of the type-species or type-genus, and then return to the new genus-level or family-level name and indicate the type. If you enter an existing name in the New Taxon Name
task and select it (assuming it is found), TW will take you to the Edit Taxon Name
screen where you can enter the type information.
After you click Create
and Save
you should be returned to the Browse Nomenclature
page:
[INSERT SCREENSHOT HERE]
If you have entered all the information correctly, it should be shown here. Note that the Validation
form can serve as a checklist. In this case, we have neglected to enter several items, indicated here. To fix these, the easiest way is hit the Navigate Radial
button (3 at upper right) and from here choose Edit
. We think the easiest way to proceed from here is to hit the Browse OTUs
button (1 at top of screen). This takes you to the summary form for the OTU that you have just created. Note that there is a similar icon on the Browse OTUs page, which will take you back to Browse Nomenclature
page. This is an easy way to move back and forth between these two important screens.
For many older species group names, there will be no information on the type in TW. If you wish to add this information, you will want to have the original description handy, and pin it to the Pinboard
. The easiest way to proceed is to use the New type specimen task
. You can then follow the steps above for designating a type for a new species.
HINT: The New type specimen task
is also used to add or modify information on types already in the system.
Find the junior synonym
name using the Browse Nomenclature
task. Click the Edit
icon to navigate to the Edit taxon name
page. Enter the senior synonym
in the Relationship
box. A list of candidate names will come up. Select the correct one and Set to Parent
. A list of choices for the synonym relationship will include Subjective synonym
, Objective synonym
, subsequent Misspelling
, and Homonym of
. Note that you must also tag
this nomenclatural act (new synonymy) to a citation and page number. Click the Radial Annotator
icon to the right in the Relationship box
, and choose Citations
. Enter the Source
(use the blue pin key!) and page number
(s). If this is the first time the synonymy has been proposed, check the Is Original
box. Problem: Eremidium had five subgenera that became synonyms. Current state of modified data: Eremidium (Eremidium) has almost all citations, 4 synonyms and 22 species whereas Eremidium has 28 species (the species of the synonyms were moved under the genus). What would be the easiest way to end up with Eremidium without subgenus and all the 50 species?
The method is to delete the genus and elevate subgenus to the genus level using the following steps. In this way you will preserve most of the data.
Rename the genus to something recognizable, e.g. "Eremidiumdelete" Go to the subgenus and change parent and rank to "Eremidium" Synonymize all subgenera to "Eremidium" (previous subgenus) Apply all soft validation fixes Follow the procedure to delete the duplicate e.g. "Eremidiumdelelete". If species remain under Eremidiumdelete, make Eremidiumdelete genus a syn of Eremidium and transfer all the species as suggested. Then delete synonym relationship. Now the children of Eremidiumdelete need to run the soft validation fix to change the parent. If the junior synonym is a genus name, you must then decide if you want to transfer some or all of the species to the new parent.
Once you have made the synonymy, TW will present a table called Manage Synonyms
. This shows the current parent, and by default, the new parent. You can change the latter to cover cases in which a genus is being split up and the species are being moved to different genera. You can select species individually, or select All of them. At the bottom of the screen click the green Move
button. TW will ask you if you are sure you want to do this! HINT a la UCD@TW: It is the consenus of UCD@TW curators that if a genus is synonymized under another genus, and the author(s) of the paper do not explicitly treat generic placement of the species formerly contained in it, that all species are considered to belong to the senior synonym, by default.
To do this, find the junior synonym and move to the Edit taxon name
page as above. Scroll down to Status
and click the Show All
button to the right. This brings up a list of all possibilities. Choose Valid
(nested under Available), and then be sure to enter the Source citation
and pagination as above, but this time use the Radial annotator
in the right lower corner of the Status
box. HINT: Note well, after a name has been removed from synonymy using the Valid Status
, if that name is moved into synonymy again, first complete the steps to create the new synonymy , then delete the Valid
status. This last step is required to show the name in its new, synonymized state.
In an older version of TW, your strategy depended upon whether the combination is really new (that is, the species has previously been placed in that genus), or whether the combination had been used before. Scenarios 1 and 2 below cover those cases, respectively. Both procedures still work, but as of November 2021, there is new functionality on the Edit Taxon Name
page that allows you to handle either case. This is shown as option 3 below. Option 3 is probably the easiest, most preferred way to handle all new combinations now.
For New Combinations.
Open the New Combination
task, and type in the new combination. TW will bring up a list of candidate genera and candidate species. If you enter a trinomial (for assigning to a subgenus, TW will show 3 sets of names. Pick the correct genus name
and species name
Click the pinboard
icon to paste in the citation
, add the page number
, and hit Create
. Once you have created the new combination, be sure to click the green button
to move the species to the new genus. (The only time you would not want to move the species to this genus is if you were entering a historical combination, and the species is not currently classified in that genus). It’s as simple as that! Combinations used before.
Navigate to the Edit Taxon name
page for the species. Change the parent to the current genus (the revived combination
). Then move to the Radial annotator
to the right of the species name shown in blue at the top right of the screen. Choose citation
and enter the source
and page number
for the paper in which the former combination was revived. Option 3 (either use case above)
Navigate to the Edit Taxon Name
page for the species in its existing combination. Change the parent
to the genus
in which it has now been placed. Scroll down to the Subsequent combination
box. Click Set as current
, or drag down the old combination to the species line and enter the genus for the new combination on the genus line. Enter the source
and page number
of the paper in which the transfer was published and click Create
. The new combination
will be added to the chronological list at the bottom of the box, and it should show in the historical list when you return to the name in Browse Nomenclature
.
If the gender of species is incorrect following the new combination, you may need to change the Gender and form of the species name, and/or the gender of the genus (on the Edit taxon name
forms for the species name and genus respectively). This correction can also be made using Click to edit verbatim
(use sparingly).
If someone has published a new family-level placement for a genus, recording this is a two step process.
Navigate to the Edit taxon name
form for the genus. First, change the Parent
at the top of the Edit taxon name
form to the new family-level taxon
. If the family name has not been used at this hierarchical level before, you many need to create the protonym
for it first. Second, you must record the source
of this change. Scroll to the bottom of the Edit taxon name
screen and find the Classification
box. Search for the new family-level taxon and Set to Parent
. In the Radial annotator
that now appears, choose Citation
and enter the source
and page number
where the revised placement was published. If you are moving a subfamily, tribe or subtribe to a new family, the process is the same, but you would work from the Edit taxon name
screen for the appropriate family-level taxon.
To move a species to a different genus or subgenus, use the New Combination task Scenario . If you are moving a subfamily, tribe or subtribe to a different family level taxon, but the categorical level of the taxon you are moving does not change, follow the same procedure.
However, if you are changing the categorical level of a family-group name
, the process is more complicated, and you will need to refer to Scenario: Changing rank of a family-level taxon .
To designate a name as a _nomen nudum_
, _nomen dubium_
or as unavailable
, navigate to the Status field
in the Edit Taxon Name
form. The default for this field is valid. Four common choices are shown: Unavailable
, Nomen Nudum
, Nomen Dubium
, and Fossil
. Click the All
button here brings up a comprehensive list of other possibilities. For unavailable names you should probably look at the entire list and designate the reason the name is not available. Be sure to enter the source
and page number
for the paper that published this information. The most common scenario will be that someone has discovered a junior homonym and provided a replacement name. Here are the steps you would follow. First be sure the source
is the default
in your pinboard
.
First create the replacement name using the New Taxon Name task
, as described above, entering all information on the authors, citation, etc. Then move to the junior homonym (Browse Nomenclature
, click the green Edit
button at top right corner). In the Relationships
field, enter the senior homonym
. You will be given a list of choices, choose Homonym of
. Now designate the replacement name. In the Relationships
field, enter the replacement name
. HINT: Replaced By
does not appear in the short list of choices, so either search for it (easiest) or find it in the table of All choices
. Enter the citation
and page number
where the replacement name
was published. Often when you enter a person's name string in a search field, such as for authors of a source or taxon, multiple entries will pop up that appear to be the same person, such as A. Dal Molin
and Ana Dal Molin
. The Uniquify People task
provides tools to resolve and merge these.
Find one instance of the person in the Select Person
field, and Load another instance (probably with different abbreviations of names) in the Match People
field. The task will show you information about each person, such as representative publications. If you are sure that they are the same people, you can merge them by clicking the Merge People
button. Diacritical marks (e.g. umlauts, tildas) on author names pose special problems, as the search engines may not find them. For example, if the author name is Ferrière and you enter Ferriere (without the diacritical mark), the search engine will not find it. The best way to resolve this is to treat Ferriere as an alternate spelling
of the name Fèrriere. To accomplish this:
Go to the People data card
, and pull up the name. In the Radial annotator
at the top of the screen, choose Alternate Values
Then click the Alternate Spelling
tab. Select whether it is the first or last name, enter the alternate spelling, and click Create
. Once this is done, the search engine will find the person using either spelling of the name. First, you need to create
the misspelled name using the New Taxon Name task
. Do not give it an author. Scroll down to the Relationship
field Search for the correctly spelled name Set the correctly spelled name as the Parent
, and Choose the Misspelling Of
button. Enter the citation
(source) for the misspelled name
and the page number
in the Radial Annotator
on the right of the Relationship
field. This is a multi-step process. You may need to raise or lower the rank of a family-level taxon. The process is the same. Here's an example: let’s assume that we wish to raise the categorical level of the taxon Coccophaginae to family level, Coccophagidae. Here are the steps to follow.
Check to see if Coccophagidae has been used at the family level before (use Browse Nomenclature
). If it has, you can skip step 2 below, because the taxon name Coccophagidae already exists in the system.
If the taxon at the family-level (Coccophagidae here) does not exist, navigate to the taxon name Coccophaginae (Browse Nomenclature
) and move to the Edit Taxon Name screen
to create the name Coccophagidae.
The best way to do this is to Clone
the subfamily level name (green button in upper right), as this will retain the author and date, type genus, and other historical information. Select all the boxes
to retain all historical information and type CLONE
in the box. This will active the green Clone
button. Note that you are creating a taxon name
here , not an OTU, which is a separate issue.You are now on the Edit taxon name
page for the cloned name. Change the family ending suffix to “idae”, or Coccophagidae. Now change the parent. In this case, it will now be Chalcidoidea. Then Show all ranks
, and pick Family
. To record who made the change in categorical level: Scroll down to the Classification field
Click Set to Parent
(which will pick up Chalcidoidea from above), if the current classification is correct. Otherwise, type in the correct parent. Below the field will be two choices, Incertae Sedis
and Classified As
. Pick Source Classified As
. Enter the source
and page number
for the publication in which the change was made (in this case, elevation of Coccophaginae to Coccophagidae). Now you need to make the appropriate changes to the nominate subfamily taxon, the subfamily Coccophaginae in this example. Navigate
to the Edit Taxon Name
form for Coccophaginae.Change the parent
here to the new family-level name, in this case, Coccophagidae. Next, scroll down to the Relationships field. Enter the new family-level name
(Coccophagidae), and show all possible choices
(blue box to right). Choose Family Group Name, Original Form Of
from the menu of choices (it is below Usage
which is below Unavailable or Invalid, linked to
). Enter the source
and page number
, as always. At this point, a Manage Synonymy
screen will appear. This provides a dashboard for assigning the classification of all taxa subordinate to the family name (children, in other words).
Below the Manage Synonymy
screen you will find the Classification
screen.
Type in new Parent
(Coccophagidae in this example), and Choose Source Classified As
. Enter the citation
and page number
for the appropriate publication. Example: to elevate a subgenus to genus level:
First Navigate
to the name of the subgenus and click on the Edit taxon name
tool. Change the parent
as appropriate (family, subfamily, tribe etc.) and Change the rank
to genus. Next, how to record the citation? Note well, classification relationships should be used only above the genus level.
For making any changes in rank at the genus level and below use the New Combination task
: (explained in the New Combination Scenario
). There is still a 2-part process required at the moment.
Create the combination (using the New Combination
task), e.g. Camptoptera (Eofoersteria), and add the citation
for same there. Update the classification
by changing the parent
for the "now" subgenus. You will be required to manually select the rank
, (e.g. subgenus) One should be aware that UCD@NHM did not use subgeneric names, they were treated as synonyms of the parent genus. However, if species names were originally described in a subgenus, the original combination was recorded and will show in UCD@TW as a combination, as in the following example:
INSERT Screenshot
If you are working with a genus in which a subgeneric classification has been used, you have the following options:
You can create all of the subgeneric names, or find them and treat them as valid children of the appropriate genus. Nominate subgeneric names can be created by cloning the genus name and changing rank (see examples for subfamilies above, section 4.14). Whether or not you want to take the time to do this is up to you and your colleagues, but the tools are there in UCD@TW and in TaxonWorks generally.
You can continue to treat the subgenera as junior synonyms of the parent genus. However, if you curate a paper in which a species is originally described in a subgenus, you should be sure to enter both the Genus
and Subgenus
names in the Original Combination
and Rank
section of Edit Taxon Name
.
If you want to record historic subgeneric placement, use the New Combination task
.
These are used in many genera of chalcidoids as informal grouping of species without nomenclatural rank or status. UCD@TW provides the tools to treat these formally (as superspecies which is what the ICZN recommends) but it will not display them as such in Browse Nomenclature
. However, the consensus in the UCD project seems to be that it is preferable to leave species groups as informal groupings without nomenclatural baggage. How then to indicate or record assignment to species groups? There are several options, each of which has strong and weak points. It is a "policy decision". You will have to decide which option works best for your group.
One.
Add the species group designation
to the OTU name
field using the edit OTU
function. The OTU can remain linked to the original taxonomic name. It will display as follows, every time the OTU name is displayed: INSERT screenshot
Two.
You will need to use a data attribute with the Predicate name species group
and add the predicate as a default option to the OTU display.
First, create a new Predicate
using the Manage Controlled Vocabulary task
. Provide a definition
and choose a color
. Next, go to Project
(upper right corner of any screen) Choose Edit Preferences
under Edit
(upper left corner of screen) Select OTU
, scroll down toSpecies Group
and select it. Now the Predicate
is created and will be available for any OTU
and can be designated where needed.
Second, Browse
to a particular OTU and choose Data Attributes
in the Radial annotator
. Type species group
in the Select a Predicate
box, the name
of the species group in the Value
box, and click the green Create
button. If you want to associate this placement with a literature citation, enter it using the citations
button to the right of the species group name
at bottom of the screen. Once you have completed Step One above, the Predicate
will be available for any OTU
, you can designate them using Step Two.
Three.
Create a Tag
for each species group in Manage Controlled Vocabulary
, Apply the tag to the OTU using the Radial annotator
. This will allow you to pull up all OTUs assigned to a particular species group in the Radial annotator
. Note well, however, the downside is that the tags will appear in the list for everyone in the project. Four.
Create a matrix of OTUs for each species group. Again, using the UCD@NHM Project as an example, they did not formally recognize taxonomic levels between genera and subfamilies. Names of tribes and subtribes were treated as junior synonyms of their respective families. However, tribal and subtribal classifications are currently used in many families of chalcidoids. If you wish to incorporate these into classifications in UCD@TW, steps to follow are describe below. First, you must determine if the tribal or subtribal form of the name is in UCD@TW, treated as a synonym of the subfamily. See the entire scenario next.
One.
To determine if the tribal or subtribal form of the name is in UCD@TW and treated as a synonym of the subfamily, go to Browse Nomenclature
, search
for the name, for example, Coccophagini
. Be sure that you do not have the redirect to valid name box checked! If you get a result showing the tribe (or subtribe) name in a black box to the right of the subfamily name (see below), the tribal form is in TW treated as a synonym of the subfamily. In most cases, if the tribe or subtribe name has been used in the literature, it will show up as a synonym of the nominate subfamily. If it does not, you will need to create it, so skip to section Five below.
Navigate to the name with the tribal name at right (not to the valid form of the subfamily name, which may come up without the tribe name in the black box). It will be shown as an invalid synonym of the subfamily. Click the green Edit
icon to move to the Edit Taxon Name
form. Show all ranks
in the Basic Information
form and pick tribe
.Then change the suffix from -inae
to -ini
and pick the appropriate parent
. Two.
Scroll down to Status
, Show All
, and select Valid
. Provide the citation
and page number
using the Radial annotator
to the right. Three.
If you wish to provide a citation for this usage of the name, scroll down to Classification
, choose Set to Parent
(in this case it would be Coccophagini
) Choose Source Classified As
. Four.
One more (obsure) task remains. Using the Navigate Radial icon
to the right of the tribal name at the top of the page, choose Show
Then choose Edit
in the menu bar at the top of the next screen. This takes you to an older version of the Edit Taxon Name
form. If a name appears in the Verbatim Name
field at the bottom of the screen (like Coccophaginae ),
deleteit and click the green
Update Taxon Name` button. This removes an artifact created when tribal or subtribal names were imported as synonyms from TW@NHM. Continue from this point only if the tribal or subtribal form of the name did not show up as synonym when you searched for it in step One above. Most likely, in this case it has not been used at this hierachical level before. If it does not show up, create it using the following process.
Five.
Navigate to the taxon name at the subfamily level, for example, Coccophaginae (via Browse Nomenclature
) and move to the Edit Taxon Name
screen. Create the name at the tribal or subtribal level, for example, Coccophagini. The best way to do this is to Clone
the subfamily level name (see green button in upper right), as this will retain the author and date, type genus, and other historical information. Select all the boxes
to retain all historical information and type CLONE
in the box. This will active the green Clone
button. Note that you are creating a taxon name here, not an OTU, which is a separate issue. Six.
Navigate to the tribal (or subtribal) name in Browse Nomenclature
and move to the Edit Taxon Name
screen. Pick
the rank (tribe) and change the ending to -ini
.Change the parent
. In this case, the parent of Coccophagini would be Coccophaginae. Seven.
Under Classification, set to parent (Coccophaginae) and choose Source Classified As
. Use the Radial annotator
to the right to enter a citation for the publication and page number of the paper in which the tribe was recognized or moved. Eight.
The problem with this approach is that all of the children of Coccophaginae will have been transferred to Coccophagini. If some of these genera belong to another tribe, you will need to create any such tribe, using the steps above, and transfer the genera, one by one. First navigate to the appropriate taxon name Click the green Edit Taxon Name
button. Change the parent to the higher level taxon in which the taxon has been classified as Incertae Sedis . Navigate down to the Classification
field Click Set to Parent
, and choose Incertae Sedis
. Then record the source and page number in which the classification was made using the Radial annotator
to the right. For some name:
A - start (origin) B - current -> current classification change the parent here -> everything looks more or less right C - second move preserve "b"
A - Protonym B - Combination C - Parent (Combination)
From a practical standpoint, when a name changes, use New Combination
task. Why?
It lets you create the new combination just by typing in the string Having that combination, even if its just a B, pre-adapts you for C's. This gives you the historical record. In the New Combination
task, after the combination has been created, there is an option to easily move the name to the correct parent Considerations vs. line endings.
In the New combination task
you will find/pick the species in its original latin form If that name has gendered data with it and the new genus has gendered data with it Then conjugation of the species name will automatically be rendered correctly in the new combination, and in reference to the new Parent (after you do 3) above) To pre-adapt your steps above being easy, follow best practices and add the gendered information at the time of entry of a Protonym. Never just change parent, always go the Combination
route. (i.e. 2) above).
Example use case of name ending corrected by subsequent publication:
Species published with incorrect ending Name is always the original form, latinized, never changed Author "corrects" the ending in a subsequent publication Key information: in this case there is no second Protonym , the gender ending correction happens automagically Key trick: to add a citation with this "fixed" data you must create a new Combination
, and cite it. You must compose the combination with the same protonym that was "misspelled" Key bits of making new combinations Think about making your new combination by finding Protonyms
in the original combination Remember if you type in a gendered ending, and no suggestions are found, you can always click to search directly by the original combination, or to track down the protonym in the taxon name autocomplete. For all of the above to work, the Gender and form
section of the Edit Taxon Name
form on the original protonym must be filled in. A name is published. A type series is used (i.e. there is no holotype) The type series is found to represent two different species. The author says "we're stating this is two different species, and synonymizing the original name under two other names, but not selecting a holotype. If a future worker selects a holotype, our actions here may need to be changed again" (alternatively, author may synonymize the species in partim ). Recommendation: Do nothing (do not post the two synonymies in TW) but add a citation and note, there are no governed consequences to manage. If you did have specimen catalog numbers then you could create 2 OTUs, each with the same species name, pre-adapting the data to receive new names for the new names if they come out. Recommendation 2: Use a Nomen Dubium
status and attach a citation to this. Start at the Edit Taxon Name
form for the suppressed name (senior homonym). Under the Relationship
section type in the suppressed name And using the Show all
button, select suppressed under
. Cite this. Next, go to the Edit Taxon Name
form for the junior homonym. Under the Status
section, use the Show all
button to find official list of specific names in zoology
and select valid
. NB: use the Advanced
button if for some reason the Show all
button is grayed out. Cite this. One method:
Create name using correct ending, Save
. Designate as Not Latin
under status. Change the name ending to the form wanted, Save
. Second method:
Create name. Using navigation radial, go to Show
. Click on Edit
Scroll down to bottom of form to Verbatim
field and type in name as it was originally published. Click Update Taxon Name
Third method:
Create the name. Click on Edit
to get to Edit taxon name
form. Click onClone
. Select Add invalid relationship
. Type clone
and then click the Clone
button. Edit
the Relationship
field and select Family Group Name Form
.If the taxon is a fossil, you need to select Fossil
in the Status
field of the New (Edit) Taxon name
task. The name will now appear with a little cross symbol to the left. There are special rules in ICZN and TW for fossil taxa. From Article 1 of the ICZN Code "1.2.1. The scientific names of extant or extinct animals include names based on domesticated animals, names based on fossils that are substitutions (replacements, impressions, moulds and casts) for the actual remains of animals, names based on the fossilized work of organisms (ichnotaxa), and names established for collective groups (see, in particular, Articles 10.3, 13.3.2, 23.7, 42.2.1, 66.1, 67.14), as well as names proposed before 1931 based on the work of extant animals."
Note well that for simplicity in TW, the flag fossil = extinct
is set to true
by default. If the taxon name is based on a fossil remnant or cast or animal evidence trace, the organismal group may not be extinct. In this case, unselect the flag.
Authorship of a name can asserted in 4(!) different ways. That seems confusing at first, but determining what gets shown is pretty straightforwrd.
The authorship label is determined by the FIRST option in the following list that is true. All other values are referenced only in validation reports.
If the verbatim name
field is filled out, then it is used. If People are assigned as TaxonName authors, then their family names are used. If People are assigned to a Source as authors, and that Source is the original source for the taxon name, then their family group names are used. If the author
field of a Source is filled out, then that field is used. The preferred mechanism is to link the TaxonName to a Source, and assign authors (People) to that source (third option in the list above). This is the most granular way of creating the data, and therefor it will ultimately give you the most flexibility in reporting and validating the data.
Please follow the instruction in the Nomenclature Basics.
Specimen deposition could be assigned to Specimen. If you create the type specimen for the Taxon Name, there is a field for the type repository. To create the type specimen follow one of the links provided in the Edit Taxon Name task, either Quick or Comprehensive in the Type section. Quick type specimen task allow to copy the entire verbatim-label information. The Comprehensive collection object allow to provide more detailed information about the specimen.
For ICN names, the basionym have to be creaed as a separate protonym and linked to current name with basionym TaxonNameRelationship For ICZN names, the original combination of protonym is an equivalent of basionym in botany.
You can symply delete the Synonym Taxon Name Relationship. But when the name has been historically treated as a synonym, and subsequently was restored, the best practice would be to preserve both treatments in the database. Keep the synonym Taxon Name Relationship with its original citation in the database. Add the nomenclatural Status Valid to the name. This status will overwrite the Taxon Name relationship. Please remember to add the citation to the status, to know where and when the name was reinstated.
The word form is "noun in apposition"; etymology "arbitrary combination of letters"
Edit TaxonName task has a special section for this, Classification . Select the family-group name, and the relationship Classified as . This could be used for original placement of the taxon, or for the subsequent classification. Once the Taxon Name Relationship is created, assigne the citation using the radial annotator.
ICZN does not provide a procedure to "validate" a nomen nudum . Once unavailable, the taxon name keeps this status. The taxon could be described in a subsequent publication by the same or a different author(s), with the same or a different spelling. Both names in TaxonWorks should be regarded as separate protonyms. Nomen nudum should be marked with one or several of the appropriate nomenclatural statuses: nomen nudum or, preferrably, a more specific one, for example nomen nudum: no description . Once the valid name is described and the second protonym is entered to the TaxonWorks database, the nomen nudum could be linked to the available name (valid or invalid) with a TaxonName Relationship "unavailable or invalid".
The name which is not spelled correctly, the original source, where the misspelling was introduced, is still required. The role is not require, because the author string is always generated from the correctly spelled protonym. Protonym of misspelled name is linked to the correctly spelled name with the Misspelling TaxonNameRelationship.
The incertae sedis relationship always correspond to the current placement of the taxon. For example, a species assigned to the family, instead of proper genus as a parent. Normally, this will be marked as an invalid placement, the incertae sedis relationship helps to override the error. For historical placements, a different relationship should be used: source classified as .
Another protonym with the original spelling should be created in the database. Clone button could be used to replicate all information from the current family-group name. This new taxon name should be linked to the original name using special Taxon Name Relationship Incorrect original spelling or Family group name original form . TW could be restrictive in the ending of the original name before you assigne the relationship, so it is recommended to save the Taxon Name with the proper ending, add the ralationship and return back to modify the Name to the original form. And save Taxon Name again. Assigning the relationship removes the restriction on the family-group name form and ending.
Individual protonyms should be created for original and each subsequent form of the family group name. Each protonym should be linked to the current form with the "Family-group name form" or "Family-group name original form" relationships
The type genus shoild be attached to any available family-group protonym.
If there are several coordinate names with the same type genus (for example, a family with nomynopypical subfamily), the same type could be automatically assigned from one to another through the Soft Validation fixes.
When a new subgenus or subspecies created and the parent taxon does not contain any other sub- taxa, you can see the soft validation message like this: "The parent species of this subspecies does not contain nominotypical subspecies ". TaxonWorks can detect and created the nominotypical subgenus and subspecies automatically when running Soft validation fixes, but now it could only be done programmatically. Before the fix is implemented to the interface, it is advisable to created the missing subgenus or subspecies manually.
The type species should be attached to each available protonym. If the type species is attached to either genus or subgenus, it could be automatically re-assigned to the other through Soft Validation Fixes.
According to the ICZN Art. 43, a name established for a taxon at either rank in the genu-group is deemed to have been simultaneously established by the same author for a nominal taxon at the other rank in the group; both nominal taxa have the same type species, whether it was fixed originally or subsequently. Changes in the rank also do not affect the type genus designation.
The genus name have to be entered into the classification before the use. It may have to Root assigned as the parent, or, preferrably, the basic classification (class, order, family) could be provided as well.
See the description above for the nominotypical subgenus.
The type material could be attached to the coordinate taxon of any rank (species, subspecies, superspecies). The Soft Validation Fix will help to re-attache the same specimen to different ranks. Multiple specimens should not be created.
When selecting Original genus for a species, sometimes two options are available: a valid genus name and coordinate subgenus with the same name("Aus " and "Aus (Aus )"). In cases like this the preference should always be given to the lower coordinate taxon name ("Aus (Aus )"). If the genus name is selected instead, you will get a soft validation waring "Original Combination: Relationship should move from genus to subgenus ". This is not a critical error. TaxonWorks can detect and automatically move the relationship from a genus to coordinate subgenus. But at the present implementation, it could only be done programmatically.
In the future, we expect an interface to to merge two records. But it is not available at the moment A taxon name could only be deleted if it does not have any associated record. All of those have to be deleted or reassigned before a TaxonName could be deleted. Suggestion, select one of two duplicate which has lower number of associated data (citations, relationships, otus, etc.) First, rename a TaxonName so you can isolate it from the name, which stays in the database. for example, if you have species name 'aus', change the name to 'ausdelete', so you can use the filter functionality to quickly navigate to the name. Delete associated OTU. In the Browse Nomenclature
, check if the name has an OTU, if present you can see it in the summany at the top right. If you follow the link, you will get to the OTU page. before deleting OTU. You can check if it has any data using OTU Radial
, for example distribution, if it does, you can reassing the OTU to another TaxonName in the Edit mode, just select the other of two duplicates. If the OTU does not have related date, it could be safly deleted. On the duplicate TaxonName page go to Edit mode. In this interface, look at any Statuses
, Relationships
, Original
or Subsequent combinations
, Gender
or Part of Speech
, Type species
, etc. If anything is present, it should be deleted, all of those will prevent TaxonName from being deleted. Once everething is cleared, try to use Delete button. The duplicate name may get deleted. If the TaxonName is still not deletable, it means that still there are some related records, which need some resolution. One of the common problem could be that a genus name, for example, is used as a Original genus or a genus name in a subsequent combination. To see if this is the case, use the Radial Navigator
button and Related
sector. It can redirect you to the interface which shows all TaxonName relationships (original and subsequent combinations, where this name is used). You can change all of them one by one, selecting the appropriate taxon, but there is also a helper task: Merge Taxon Names
which could help to move all relationships from one TaxonName to another. Select from Taxon Name
and To Taxon Name
. and Proceed. You can use the Radial Navigator
button and Related
sector to verify that everything is moved. You can try to delete TaxonName again. If TaxonName could not be deleted, check what else is present in Related
, see if there are still some relationship left in the list, which need to be resolved manually. Potential problem may also come from the Collection Object
where the name is used for the type specimen, holotype, for example, if present, reassigne to another name, once the Relatead
is cleare, the TaxonName could be safely delete. The things which could be deleted together with a TaxonName (they do not block deletion): authors, citations, data attributes, notes, tags, depictions, and other attributes, those if present will be deleted automatically together with TaxonName. Prev
Customization
Next
Annotation
+
+
+
diff --git a/guide/api.html b/guide/api.html
new file mode 100644
index 00000000..f5e74960
--- /dev/null
+++ b/guide/api.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ API | TaxonWorks Docs
+
+
+
+
+
+ When you use TaxonWorks you and your collaborators will likely want to take advantage of accessing and serving your data via the API(s).
Technically there are many APIs in TaxonWorks, however when we use the word in the context of TaxonWorks we almost always are doing so in reference to the functionality that lets you access your data outside the user-interfaces.
Very simply, the API lets you make a query on your data (and other's that have made it accessible), and returns you a response. It gives you "behind-the-scenes" access to the data the user interfaces are managing.
The API is currently documented here .
Prev
FAQs
Next
Other documents
+
+
+
diff --git a/guide/community-resources.html b/guide/community-resources.html
new file mode 100644
index 00000000..f127ae8b
--- /dev/null
+++ b/guide/community-resources.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Community Documentation | TaxonWorks Docs
+
+
+
+
+
+ Those using TW often create their own software manuals. They also produce customized workflows, protocols and procedures for specific tasks. Here, everyone can share access, input, and curation for these products.
Help Documentation from UCD@TW The Universal Chalcidoidea Database (UCD) Project in TW shares their manual with detailed instructions for using TaxonWorks to collectively manage nomenclatural and related taxonomic information for this group. Currently at version 2-19.Guide to using filters in TaxonWorks The OSF community shares this manual to help all of us learn how to use the filters in TaxonWorks (e. g. Filter Nomenclature
, Filter Sources
, Filter CollectionObjects
, Filter OTUs
). Much of this how-to use filters will find its way into the shared cross-project documentation. Contact María Belén Cabrera mabecabrera at yahoo.com.ar to contribute and for questions.Guide to INHS TaxonWorks Tasks This guide is very much a work in progress, and is intermittently uploaded, mostly by TC McElrath (contact monotomidae at gmail.com) for questions or if you have any comments. Prev
Manual
Next
Data Quality Help and Hints
+
+
+
diff --git a/guide/data-quality.html b/guide/data-quality.html
new file mode 100644
index 00000000..3b7ccb9a
--- /dev/null
+++ b/guide/data-quality.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Data Quality Help and Hints | TaxonWorks Docs
+
+
+
+
+
+ The nature of data, particularly aspects of quality (e.g. completeness, consistency, compliance) are directly related to whether or not it can be re-used (the R in FAIR ). Quality is an abstract and rather subjective term, one difficult to pin down. Fidelity * may prove more a more tractable term. Conceptual and implemented means to improve data quality in and around TaxonWorks.
This documentation originated via the co-organization of a workshop at Digital Data 8 , Data cleaning for maximum impact: Tools and workflows for data providers to efficiently find and fix data quality issues . Other co-organizers produced similar documentation resulting in a cross-platform page can be found at iDigBio: Data Quality Toolkit 2024 . Each section below is linked to its corresponding topic on that iDigBio page.
Our TW philosopy on data quality or fidelity is multifaceted and can be thought of as the concepts of prevention, discovery, and resolution as applied to a spectrum of processes, from designing the data-models, to implementing validations, to creating tools and workflows facilitating discovery and visualization, to building user-interfaces that curators use to resolve issues, to reflecting feedback from external sources back into the system.
Many of the issues highlighted below can be prevented at inception (when data are captured). At a low level this can happen during data-model design and implementation. For example in TaxonWorks we:
Carefully model our domain (models) so that there is a solid basis for expanding the semantics of what we are capturing. This helps to prevent the addition of fields that seem useful at the time but that ultimately confuse our understanding of the data as the system evolves. Isolating data fields from fields that facilitate TaxonWorks functionality. This separation of concerns ensures we can efficiently implement globally-relevant data-cleaning (e.g. stripping bad characters) and iterative checks on the data while not being confused by fields that don't require such. Only permit data changes through a single API (TaxonWorks models), as opposed to updates directly to the database. This forces all validations to be checked when data enters the system, greatly improving data integrity. Choosing either the database or the data-model as the location of data validation functions (not both, TaxonWorks validates in the model) Creating (sometimes complex) tests that check that the validations implemented still hold, these are run on every single commit to the repository. Using a convention to implement our data models and their relationships to one another (e.g. Rails ActiveRecord models) In general, when, where, and how you find any data anomalies will vary, not only with respect to TaxonWorks but in working with data in general. For example, you might become aware of issues when:
Mapping you data to an external standard, perhaps during migration to another database or share with an aggregator Cleaning data up in a spreadsheet before upload to a workbench like TaxonWorks Exploring your exported data with tools like OpenRefine, or via R, or via another API Receiving feedback from another source (e. g. GBIF or iDigBio or ALA or OBIS or Bionomia ) Hearing from someone on the internet sees something and contacts you Perusing data already in your own database Visualizing issues in day-to-day work, for example via the hundreds of notices possible in TaxonWorks on its "soft validation" framework. Using your database data visualization tools to see distinct values in a given field (e. g. Project vocabulary task
in TaxonWorks) or on a map. Reviewing your software repository issue-tracker (e.g. gitHub for TaxonWorks ) Learning about what others have done in similar systems (e.g. see Distinct Values - Why This Data Directory? ) How data issues are discovered influences the options and methods for fixing them (e. g. one-by-one, bulk annotation, scripts).
Example means to resolve the data are detailed in the specifics below. In addition to those one of the important ways to resolve problems is to use TaxonWorks models in scripts to batch process and fix data.
To extend the value and scope of this work we link to the work of the Biodiversity Information Standards (TDWG) Biodiversity Data Quality Task Group (BDQ) . We list the BDQ tests relevant to each issue, where they exist. With these connections, we hope to enhance the software developer's vision and work to connect to the BDQ tests to the workbench functionality around preventing, finding, and fixing these types of issues.
We gratefully acknowledge the efforts of this TDWG Task Group and the contributions and conversations with Paul Morris and Lee Belbin in figuring out how to do this. Special thanks to Paul Morris for work done to map the BDQ tests to the specific data quality issues highlighted in this workshop and on this page.
Issues below are grouped into the: Identifiers
(e .g. catalog numbers), Time
(e. g. dates), Place
(aka geography, location), Taxon
, and Other
and Tools and Resources
.
WARNING
TaxonWorks only references many DarwinCore fields on export of the data, i.e. in the translation of its data model to an external format.
TIP
Duplicate Identifiers are prevented in the data model. This prevents errors in initial or subsequent (bulk OR one-by-one) uploads to TW. We use Namespaces
and a simple Identifier ontology to ensure sets of Identifiers whose members are all unique.
catalogNumber
is only invoked as a column when exporting to Darwin Core format (it's not a specific field in a TaxonWorks model). When multiple objects are identified by the same catalogNumber
we associate the corresponding Identifier to a virtual container. This lets us export a "duplicate" catalogNumber
in the export for each occurrence record (which is uniquely identified by a UUID) while maintain specific data on individual specimens. catalogNumbers
that appear identical in their rendering can be differentiated via different Namespaces if it can be determined that they were created via independent processes. Finally, you can extend any DarwinCore export with a custom data-attribute that might reference, say dwc:otherCatalogNumbers
.
idigbio-dqtk-time , TDWG BDQ Relevant Tests: VALIDATION_DATEIDENTIFIED_INRANGE , VALIDATION_EVENTDATE_INRANGE , VALIDATION_YEAR_INRANGE , VALIDATION_NAMEPUBLISHEDINYEAR_INRANGE , VALIDATION_EVENT_CONSISTENT
In TaxonWorks, different types of records have dates associated, for example: the event date
for a given Collecting Event
, or the date identified
(that is, date determined
), or the date georeferenced
. Dates out-of-expected bounds would include several kinds of impossible dates. That is, dates in the future or dates before the objects were actually ever collected or dates that are not possible with the birth and death dates for the person who collected/identified/observed/georeferenced/imaged the object/s. These could be grouped as
date hasn't happened yet date is suspiciously old andflourit date and event date not compatible.Find outlier dates using the Filter Collecting Event
task, the Filter Collection Object
task, and you can use the Project Vocabulary
task to peak inside each field in your database to see distinct values and the records with those values.
Using the date range method to find outlier dates with the Filter Collecting Event
task Navigate to the Filter Collecting Event
task Scroll down to the Collecting Event
filter section Enter date range to search e. g. to check for future out-of-bounds dates try putting "tomorrow's" date in for the start date
and some date way into the future for the End date
Click Filter
to see resulting records. TIP
Note you can click any column to sort on that column (which sorts only for the records showing on that page). This makes it simpler to see outliers in a date-related column. These sets can also be downloaded as CSV files if need be.
Find outlier dates using the Project Vocabulary
task. With this task, one can see the unique values present for a given field and how many times that string/value occurs. You click
on one of the results of the output and see the associated records having that value. For the out-of-expected-bounds-date use case, one could see odd unexpected dates easily.
Find outlier dates based on someone's lifespan, when known. In the future, you can expect that if you have the active years for a given person entered into the database, and that person is linked to a record where the date collected or identified is not within their active years, you will be able to find these records.
Fix the outlier dates found from the above Filter Collecting Event
task search.
In the result set, you can navigate to a single record and edit that one You can use the download csv version of the results if you have a lot of records and want to sort by year in a spreadsheet to see the extent of the year bounds. You can sort by year by clicking on a given column, however, it is only sorting the records on that page (note the number of records per/page can be increased). idigbio-dqtk-date-ymd , TDWG BDQ Relevant Tests: VALIDATION_EVENT_CONSISTENT
In TaxonWorks these align automatically.
If using the DwC Occurrence Importer
and you provide the eventDate
(in YYYY-MM-DD format) and you provide the dwc:day, dwc:month, and dwc:year, the importer software checks for consistency. If using the DwC Occurrence Importer
and you provide the eventDate
(in YYYY-MM-DD format) only, we derive the dwc:day, dwc:month, and dwc:year on import. After upload, the year
, month
, and day
fields can be edited, there is no single eventDate
field which prevents these from potentially getting out of sync. idigbio-dqtk-place
idigbio-dqtk-zero , TDWG BDQ Relevant Tests: VALIDATION_COORDINATES_NOTZERO , ISSUE_COORDINATES_CENTEROFCOUNTRY
In TW this will depend. 0, 0 are of course "Valid" however they have to match other data in the record.
Find 0, 0 coordinates uing the Project vocabulary
task
Select model: Collecting Event
Select attribute: verbatim_longitude
(or verbatim_latitude
) in Beginning with
put: 0.0 (for example) Click on Show records
Result is a set of records in Filter collecting events
You will have a set of records that have the properties you provided that you can work on editing. You can edit one record at a time or potentially edit many at once depending on what needs to be updated. Fix unexpected coordinates It may be possible to fix more than one record at a time depending on the specific issue.
In your resulting set, Select a record to fix, Then click the navigator
icon for that record and Click Edit
in the options provided. If there are many to fix:
Select all for that page, or some subset of records Then click on the radial collecting event
icon In the radial collecting event
radial pop-up, select one of these options Set Collection Date/Time
Set verbatim fields
idigbio-dqtk-geo-unit , TDWG BDQ Relevant Tests: VALIDATION_COORDINATES-STATEPROVINCE_CONSISTENT , VALIDATION_COORDINATES_COUNTRYCODE_CONSISTENT
If you provide coordinates on upload, we compute the geographic units based on the gazetteer information. So we don't have this issue specifically. You can potentially see outliers using the following method.
Find and Fix
Go to Filter collecting events
Search for the area of interest, (e. g. United States and pick Descendants
) Click Filter
In the resulting set, in the left sidebar, click the linker
icon to get the Radial linker
Select Spatial Summary
which gives you a scatter plot where the x-axis is longitude, the y-axis is latitude If there are longitudes with positive (or other outlier non-expected) values, you will be able to see them and go to those records to debug. TIP
Using the Collecting Event
software, if you provide spatial constraint (choose a GeographicArea with shape
) and try and provide a point outside that, you are not allowed to. We note at the same time, you can put whatever conflicting info you want in verbatim_ fields, these are not validated.
idigbio-dqtk-metadata-no-georef
Not possible on export (though the inverse is).
idigbio-dqtk-elevation-questionable , TDWG BDQ Relevant Tests: VALIDATION_MAXELEVATION_INRANGE , VALIDATION_MINELEVATION_INRANGE , see also VALIDATION_MINDEPTH_INRANGE , VALIDATION_MAXDEPTH_INRANGE
To look for unlikely or unexpected elevations, one way would be to use the Project vocabulary
task.
Find and Fix elevation value ranges uing the Project vocabulary
task:
Select model: Collecting Event
Select attribute: maximum_elevation
(or minimum_elevation
) Click on Show records
in the left sidebar, click Term
to sort column to see the value range for max (or min, depending on what you picked) Click on the row with any unexpected value to see the records with that value (or click that value in the word cloud). Result is a set of records in Filter collecting events
You will have a set of records that have the properties you provided that you can work on editing. You can edit one record at a time or potentially edit many at once depending on what needs to be updated. idigbio-dqtk-lat-lon-neg , TDWG BDQ Relevant Tests: AMENDMENT_COORDINATES_TRANSPOSED , VALIDATION_COORDINATES_TERRESTRIALMARINE
Find and Fix
Go to Filter collecting events
Search for the area of interest, (e. g. United States and pick Descendants
) Click Filter
In the resulting set, in the left sidebar, click the linker
icon to get the Radial linker
Select Spatial Summary
which gives you a scatter plot where the x-axis is longitude, the y-axis is latitude IF there are longitudes with positive values, you will be able to see them and go to those records to debug. idigbio-dqtk-invalid-coord , TDWG BDQ Relevant Tests: VALIDATION_DECIMALLATITUDE_INRANGE , VALIDATION_DECIMALLONGITUDE_INRANGE
Coordinates are exported as Geo referenced, i.e. they can not be illegal values. They can of course be based on points placed in error. Errors are minimized due to cross-referencing to geo-spatial gazetteers ensuring that the points dropped are within 10km of the place selected.
Selecting any GeographicArea
happens in one place in TaxonWorks, so you automatically get spatial and parent validation going up.* In other words, if you provide the lower geography, we derive the higher geography where there is information in our gazetteers to do so.
Our Validation software catches this for any parsed values. You can of course put what you like in verbatim fields.
idigbio-dqtk-mismatch-codes , TDWG BDQ Relevant Tests: VALIDATION_COUNTRY_COUNTRYCODE_CONSISTENT
If a country
is reported and we have access to a corresponding ISO code (true for a majority of cases), then they are always matched, i.e. they are derived from a unified source, not manually entered independently.
idigbio-dqtk-mismatch-terms
TaxonWorks makes use of an internally managed GeographicArea gazeteer. Selecting a finer resolution entity (e.g. county, state) permits us to crawl the parenthood to fill in the pertinent data.
WARNING
TaxonWorks also does spatial lookup for Georeference point data. The lookup algorithm can error based on limits to the resolution of the referenced gazeteers. In this case one cap prioritize the use of GeographicArea to over-ride the spatial lookup.
idigbio-dqtk-datum-missing , TDWG BDQ Relevant Tests: VALIDATION_GEODETICDATUM_NOTEMPTY , see also VALIDATION_GEODETICDATUM_STANDARD expects an EPSG code, AMENDMENT_GEODETICDATUM_STANDARDIZED sets to an EPSG code, AMENDMENT_GEODETICDATUM_ASSUMEDDEFAULT
Missing data here are the norm for historical data. For de-novo capture TaxonWorks exports a number of types as estimated from the processes by which the Georeference was captured or an explicity Protocol reference.
idigbio-dqtk-lat-lon-missing , TDWG BDQ Relevant Tests: VALIDATION_DECIMALLATITUDE_NOTEMPTY , VALIDATION_DECIMALLONGITUDE_NOTEMPTY
Using the Filter collecting event
task, you can find records with no Georeference.
idigbio-dqtk-geounit-names-spelling , TDWG BDQ Relevant Tests: VALIDATION_COUNTRY_FOUND , VALIDATION_STATEPROVINCE_FOUND
idigbio-dqtk-taxonname-missing-invalid , TDWG BDQ Relevant Tests: VALIDATION_SCIENTIFICNAME_FOUND
A huge variety of nomenclatural nuances can be specifically classified and identified in TaxonWorks, synonymous and misspelled names included. All of these represent the historical record. TaxonDeterminations are linked to these names and a CollectionObject as a bridging step. Presenting synomous or misspelled names during export is not only possible but required in various cases (for example for nomenclatural catalogs).
idigbio-dqtk-higher-tax-unknown , TDWG BDQ Relevant Tests: VALIDATION_KINGDOM_FOUND , VALIDATION_PHYLUM_FOUND , VALIDATION_CLASS_FOUND , VALIDATION_ORDER_FOUND , VALIDATION_SUPERFAMILY_FOUND supplemental, VALIDATION_FAMILY_FOUND , VALIDATION_TRIBE_FOUND supplemental, VALIDATION_SUBTRIBE_FOUND supplemental, VALIDATION_GENUS_FOUND , VALIDATION_TAXON_UNAMBIGUOUS , VALIDATION_CLASSIFICATION_CONSISTENT
Unknown higher taxonomy is highly specific to the purpose of use of the data. There is no one true classification of nomenclature, or taxa. Syncronizing of TaxonWorks data to external taxonomies is best done via the processes that merge or take TaxonWorks data into a new system.
All data are encoded as UTF-8. TaxonWorks pre-processes all strings before writing (persisting) them to remove a handful of well-known issues with encoding, for example trimming white-space and removing various invisible characters.
Many different exports are possible in TaxonWorks. Exporting returns a unified format.
idigbio-dqtk-invalid-count , TDWG BDQ Relevant Tests: VALIDATION_INDIVIDUALCOUNT_INTEGER
The CollectionObject model requires a positive integer as the total
, invalid values are impossible.
idigbio-dqtk-nonstand-basesOfRecord , TDWG BDQ Relevant Tests: VALIDATION_BASISOFRECORD_STANDARD , AMENDMENT_BASISOFRECORD_STANDARDIZED
We generate dwc:basisOfRecord
, so a non-issue for TW. If an issue on Import, our Importer software will tell you. With the Importer you can "find" and "replace" any non-standard value and then continue the upload.
Many approaches have influenced how we build and what we build in TaxonWorks with respect to data-quality:
Data Carpentry Data Cleaning with OpenRefine Data Carpentry Data Organization in Spreadsheets OpenRefine as a great tool for cleaning and structuring messy data extending and enhancing your data tracking and sharing your data cleaning steps automatically Voyant Tools for visualizing and exploring text dataChatGPT proves useful in some instances too (e. g. for finding less common datums) Bob Mesibov’s Data Cleaner’s Cookbook GBIF’s data quality flags NOTE: in TaxonWorks, we pull GBIF DQ data back for you into the user-interface so you can evaluate the feedback without leaving TaxonWorks.iDigBio’s data quality flags OBIS Manual (e. g. their Data Laundry help and community) See also Gan Y-M, Perez Perez R, Provoost P, Benson A, Peralta Brichtova AC, Lawrence E, Nicholls J, Konjarla J, Sarafidou G, Saeedi H, Lear D, Penzlin A, Wambiji N, Appeltans W (2023) Promoting High-Quality Data in OBIS: Insights from the OBIS Data Quality Assessment and Enhancement Project Team . Biodiversity Information Science and Standards 7: e112018. https://doi.org/10.3897/biss.7.112018Linter tools offer another way to evaluate and tidy up your data. For example, you have a BibTeX file (from EndNote, Zotero, or elsewhere) that seems to have errors. You can use online tools that help you find and fix formatting (syntax) errors. Need to create or convert data into other formats? Some tools that help you with this part of any data transformation processes include: Authority Files for comparing your data with known sources Fidelity - as referenced by Erica Krimmel at TaxonWorks Together 2024 as a term that may more exactly convey what we can manage when we talk about making our data as fit-for-purposes (known and imagined) as possible (rather than the more subjective term of quality ). Prev
Community Documentation
Next
Import
+
+
+
diff --git a/guide/export.html b/guide/export.html
new file mode 100644
index 00000000..054d9fc6
--- /dev/null
+++ b/guide/export.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Export | TaxonWorks Docs
+
+
+
+
+
+ You can export a full copy of your database, minus binaries (e.g. images, documents) into PostgreSQL format via the Export project database
task. This lets you:
Archive your data Load it into a local version of TaxonWorks (e.g. running on your desktop) Individual tables in native TaxonWorks format as CSV
Open the Project data overview and download
task Click a Download
link corresponding to the table you want to download (22+ tables available) Click on a Data Card, e.g. Otus
. On the bar in the middle click on Download
, you'll get a CSV file with the data for that table. Note that these formats are "in progress", they need refinement. Open any of the Filter
tasks Complete a search Select the CSV
option in the download select and click the blue download button beside it. A quite common data package used for sharing data with biodiversity data aggregators like the Global Biodiversity Information Facility (GBIF) and iDigBio, a Darwin Core Archive (dwca) contains several files (e.g. your data file, a metadata file, and an index file to tell computers reading the package what to expect to find in this specific data package). In TaxonWorks, you can create these packages as needed. To do so, you will use the DwC Dashboard shown next.
Legend : The DwC Dashboard
TaskOpen the DwC Dashboard
task. Click one of the green buttons in the Download Darwin Core Archive
section. Note your green button options for your dwca file. You may create a dwca for all your data, or a given desired or relevant subset. You can also create your own custom archive (see the Create DwC Archive by filtered collection object result
option). Once you click on an option, generating the file can sometimes take several seconds to create/load, so wait a few seconds, and you will see a result in the next step. Your download will be queued and built, then available under the Recently created DwC Archives
section. Open the task Filter collection objects
. Perform a query to create your desired data subset. Use the download select to choose DwC
. Legend :From Filter Collection Object
, select the DwC
download format for a given datasetClick the blue download button beside the select. Optionally click to include data-predicate (custom) fields, scroll down, then click Download
. Legend : Optional fields you can include in your dwca fileYour download is available on the DwC Dashboard
task after a short period. Your export will download as a DWCA , that includes three files (or more) when unzipped: data.csv (a tab-separated file (TSV) file that can be opened by most spreadsheet programs). This is your downloaded specimen occurrence data. eml.xml (a metadata file with information about your dataset) meta.xml (a metadata file that describes the headers included in your dataset). You can (and will need to) edit your eml.xml file in a plain text editor to prepare it for upload to an aggregator. A sample file that works is available here . Once you've edited this EML file, make sure to re-package it into a ZIP file. CAUTION, if using a Mac, the system will add two invisible system files when re-zipping. A workaround is available here: https://perishablepress.com/remove-macosx-ds-store-zip-files-mac/ Once repackaged, add this zipped file to your Integrated Publishing Toolkit (IPT) endpoint. Note there are existing IPT instances that would be happy to host your packaged data. More information on setting one up here: iDigBio GBIF Open the task Filter sources
Use the facets to filter a list of Sources Select the CSV
option in the download select and click the blue download button beside it. Select the BiBTeX
option in the download select and click the blue download button beside it. Select the Download formatted
option in the download select and click the blue download button beside it. You can share a zipped copy of the file by generating a link to it. This functionality is turned on if the project administrator has created an API token (See addendum).
Click Generate download
Copy the link generated and share it. A copy of the Download file is also available for future reference, for a period of 2 days, via the Download
data card.
Open the task Catalogue of Life (ColDP) exports
Use the OTU
autocomplete to choose an OTU. All children of this OTU, by proxy of the attached TaxonName name will be exported. Click Download
A copy of the Download file is also available for future reference, for a period of 2 days, via the Download
data card.
Open the Obervation matrix hub
task Click View
beside the matrix to be downloaded Click the link corresponding to the format you want to download (e.g. TNT
, nexus
, or NeXML
) Descriptor lists and OTU contents are also available as downloads here.
Use the Search a taxon name
autocomplete to select a taxon name Refine the columns you wish to see and click Search
again to update Click the blue download icon on the top right Open a record in 'Show' Notice the URL format, like /otus/123
. Nearly all records can be viewed in with a URL pattern like this (this is a "RESTful" format) Add .json
to the request, like /otus/123.json
Select all to copy-paste, or use your web-browsers save as to save as a JSON document All filters can all be used to generate a query that returns JSON
Open a filter Complete a search Click on the eyeball button and then Show JSON request
Copy the path of the request to your clipboard Paste the path of the request to your TaxonWorks base URL (e.g. add it to something like https://my.taxonworks.org/)
and hit enter Select all to copy-paste, or use your web-browsers save as to save as a JSON document See api.taxonworks.org .
Prev
Import
Next
Videos
+
+
+
diff --git a/guide/getting-started.html b/guide/getting-started.html
new file mode 100644
index 00000000..720f04dd
--- /dev/null
+++ b/guide/getting-started.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Getting started with some basics | TaxonWorks Docs
+
+
+
+
+
+ Before you read a manual, setup a workflow, import data, or get deep into TaxonWorks you'll want the basics.
Where: Orange half-circle icon at right side of screen What: When glowing indicates there is an overlay with markers containing help information regarding parts of the UI Also includes a link to context-sensitive hot keys applicable to the current page. Prev
Migrate to TaxonWorks
Next
Manual
+
+
+
diff --git a/guide/import.html b/guide/import.html
new file mode 100644
index 00000000..1cdf16e7
--- /dev/null
+++ b/guide/import.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Import | TaxonWorks Docs
+
+
+
+
+
+ Many projects start with imports, and target Exports , the former are detailed here.
For strategies on migrating whole projects see Migrate to TaxonWorks . This includes an overview of the many ways that data can be added to TaxonWorks.
There are various batch importers available within the UI . These are polished to differing degrees and have various benefits and limitations. The required format, and often an example spreadsheet, is provided in the UI. All batch loaders are two-step, allowing for (and requiring) a preview of results before inserting them into the database.
To explore available batch loaders click on a Data card in the Hub. If batch loader(s) are available then then the batch load link will be enabled. Batch importers largely target tab-separated text files, though this is not exclusively the case. Notable batch loaders are found in the TaxonNames, Otus, and Sources data cards, though others exist. Explore various batch loaders (each data card highlighted in yellow has associated batch loaders at this writing). In your test project,
Go to the data tab Select the Otu Data card Click “batch load” See instructions in the UI for expected / accepted data types and format. Create your own file or use this test file Header column = otu_name Blank lines are skipped Tab-delimited format, UTF-8 encoding, Unix line-endings required Browse to your file to select it, click preview If data looks as expected, browse to select that file again and click create. Batch loaders (as of March 2022) include:
OTUs operational taxonomic units simple batch load data attributes simple batch file OTU with identifier batch load collecting events gpx (collecting events with georeferences) castor collection objects descriptors qualitative descriptors modify gene descriptor sequences Genbank Genbank batch primers sources taxon names asserted distributions namespaces sequence relationships To upload occurrence data, TW offers the ability to use a DwC Archive file format. For occurrences, the importer is presently limited to vouchered specimen data records.
To use this approach you must have your specimen data in a single spreadsheet-style format that can be export as "CSV".
Preparing for an import follows the following general procedures:
TIP
As part of your process you may need to go back and forth between mapping and configuring
The DwC importer provides flexibility in importing diverse data. These fall in to several types:
DwC terms User customizable data attributes User customizable biocuration classes TaxonWorks' model specific attributes As headers, these will look like this:
catalogNumber
TW:DataAttribute:CollectionObject:color
caste
TW:CollectingEvent:verbatim_collectors
A DwC term mapping A user customizable data attribute A TW biocuration attribute A TW specific attribute
TIP
A first step is to go through your data and figure out which column header type you'll need. Start by matching to supported DwC terms, then go on from there.
When going from DwC, a flat format, to TaxonWorks your moving your data from rows to Things. We can group the DwC terms into classes to reflect where they end up in TaxonWorks.
Term Mapping type
It is checked that it equals PhysicalObject
before allowing the record to be imported. If the value is empty or term not present it is assumed it is a PhysicalObject
institutionCode
Selects the repository for the specimen that is registered with an acronym equal to this value collectionCode
Paired with institutionCode
it is used to select the namespace for catalogNumber
from a user-defined lookup table in import settings, the value itself is not imported. basisOfRecord
It is checked that it equals an expected valid value for term, e.g. PreservedSpecimen
or FossilSpecimen
before allowing the record to be imported. If the value is empty or term not present it is assumed it is a PreservedSpecimen
[IS THIS STILL TRUE?]
Term Mapping catalogNumber
The identifier value for Catalog Number local identifier. The namespace is selected from the namespaces lookup table in import settings queried by institutionCode
:collectionCode
pair. recordedBy
It is imported as-is in verbatim collectors field of the collecting event. Additionally, the value is parsed into people and assigned as collectors of the CE. Previously existing people are not used unless the data origin is the same dataset the record belongs to, otherwise any missing people are created. individualCount
The total number of entities associated with the specimen record (e.g. this record may be for a "lot" containing 6 objects). sex
Selects the biocuration class from the "sex" biocuration group to be assigned as biocuration classification for the specimen. preparations
Selects an existing preparation matching the name with this value.
Term Mapping fieldNumber
Verbatim trip identifier of collecting event eventDate
The ISO8601-formatted date is split into start year, month and day collecting event fields. If the value is composed of two dates separated by /
, then rightmost date is used as end date and split in the same way as start date. If data contradicts dates from other non-empty date-related terms the record will fail to import eventTime
Time is split into time start hour, minute, and second of collecting event startDayOfYear
Using year
and the value for this term month and day are calculated and stored in start year, month, and day collecting event fields. If the computed value contradicts dates from other non-empty date-related terms the record will fail to import. endDayOfYear
Using year
and the value for this term month and day are calculated and stored in end year, month and day collecting event fields. If the computed value contradicts dates from other non-empty date-related terms the record will fail to import. year
The start date year of the collecting event. If the value contradicts dates from other non-empty date-related terms the record will fail to import month
The start date month of the collecting event. If the value contradicts dates from other non-empty date-related terms the record will fail to import. day
The start date day of the collecting event. If the value contradicts dates from other non-empty date-related terms the record will fail to import verbatimEventDate
Verbatim date of the collecting event habitat
Verbatim habitat of the collecting event samplingProtocol
Verbatim method of the collecting event fieldNotes
Field notes of the collecting event
Term Mapping fieldNumber
Verbatim trip identifier of collecting event
Term Mapping identifiedBy
A list (concatenated and separated) of names of people, groups, or organizations who assigned the Taxon to the subject. If possible, separate the values in a list with space vertical bar space | (known as a pipe). (e.g. Theodore Pappenfuss | Robert Macey
) dateIdentified
The date on which the subject was determined as representing the Taxon. Best practice is to use a date that conforms to ISO 8601-1:2019 see examples .
Term Mapping nomenclaturalCode
Selects the nomenclatural code for the taxon ranks used when creating protonyms. The value itself is not imported kingdom
Creates (unless already present) a protonym at kingdom rank phylum
Creates (unless already present) a protonym at phylum rank class
Creates (unless already present) a protonym at class rank order
Creates (unless already present) a protonym at order rank family
Creates (unless already present) a protonym at family rank genus
Ignored. Extracted from scientificName
instead subgenus
Ignored. Extracted from scientificName
instead specificEpithet
Ignored. Extracted from scientificName
instead infraspecificEpithet
Ignored. Extracted from scientificName
instead scientificName
Several protonyms created (only when not present already) with their corresponding ranks and placements taxonRank
The taxon rank of the most specific protonym higherClassification
Several protonyms created (only when not present already) with their corresponding ranks and placement. In case a protonym was not already present, only family-group names will be created, names with classsification higher than family-group not previously registered will result in error. Names at genus rank or lower are ignored and extracted from scientificName
instead scientificNameAuthorship
Verbatim author of most specific protonym
The DwC importer task includes some TW-specific mappings that are neither DwC core terms nor in any DwC extension term lists but instead, direct mappings to predicates in your projects imported as data attributes for collection objects and collecting events, biocuration groups and classes, and as an advanced-use feature you may have direct mappings to model fields.
WARNING
If submitting an actual DwC-A zip file and not tab-separated text file or spreadsheet, this TW-specific mappings have to be placed as headers in the core table, and not in meta.xml. If you are replacing a mapping from meta.xml, you must make sure to comment it out and also if inserting colums make sure you do the appropriate adjustments to avoid collision.
See Configure TaxonWorks for your DwC import for how to create the records referenced in these mappings.
In cases where you need to import predicate values targetting the imported collection object or collecting event you may do so by naming the column with a pattern like TW:DataAttribute:<target_class>:<predicate_identifier>
. <target_class>
may be CollectionObject
or CollectingEvent
, and the <predicate_identifier>
may be the either the name of the predicate or its URI. As an example if you have a predicate registered with name ageInDays
and URI http://rs.gbif.org/terms/1.0/ageInDays
, both TW:DataAttribute:CollectionObject:ageInDays
and TW:DataAttribute:CollectionObject:http://rs.gbif.org/terms/1.0/ageInDays
can be used to refer to the same predicate.
The importer is able to map sex
into the appropriate biocuration group and select the approriate class according to the value. For additional mappings you may use a special column name pattern to select a biocuration group like TW::BiocurationGroup:<group_identifier>
where <group_identifier>
can be the name of the biocuration group or its URI. In addition the values must match an existing biocuration class and you may use either its name or URI. For example, if you have a biocuration group registered with name Caste
and URI urn:example:ants:caste
and biocuration class with name Queen
and URI urn:example:ants:caste:queen
the following examples do all create the same biocuration classification:
Caste urn:example:ants:caste Queen urn:example:ants:caste:queen urn:example:ants:caste:queen Queen
Whenever the importer sees that your project has custom attributes for collecting events and/or collection objects that matches Darwin Core URI terms (http://rs.tdwg.org/dwc/terms/<term>
), them will be imported as data attributes regardless of any existing mapping of the same field. This allows to preserve verbatim dataaset value for reference as also to import data from terms not supported by the importer.
This is an advance mapping and requires knowledge of the underlying TW models. The pattern is TW:<model_class>:<field>
where model can be either CollectionObject
or CollectingEvent
, and <field>
can be the ones listed below.
Class fields CollectionObject
buffered_collecting_event
, buffered_determinations
, buffered_other_labels
, total
,CollectingEvent
document_label
, print_label
, verbatim_label
, field_notes
, formation
, group
, lithology
, max_ma
, maximum_elevation
, member
, min_ma
, minimum_elevation
, elevation_precision
, start_date_day
, start_date_month
, start_date_year
, end_date_day
, end_date_month
, end_date_year
, time_end_hour
, time_end_minute
, time_end_second
, time_start_hour
, time_start_minute
, time_start_second
, verbatim_collectors
, verbatim_date
, verbatim_datum
, verbatim_elevation
, verbatim_geolocation_uncertainty
, verbatim_habitat
, verbatim_latitude
, verbatim_locality
, verbatim_longitude
, verbatim_method
, verbatim_trip_identifier
To import your DwC you many need to create several types of things in TaxonWorks. These include namespaces and controlled vocabulary terms .
In the context of the DwC importer namespaces allow TW to
Assign an Identifier as a CatalogNumber Track uniqueness of each object during the import, helping TW to normalize your data, turning it from rows to Things Group your Identifiers (and therefor the CollectionObjects they reference) as coming from a specific place There are several kinds of CVTs that may be used in the import process.
TIP
All CVTs are created and managed via the Manage controlled vocabulary terms task
.
Think of Predicates as your custom column headers. Predicates are referenced in DataAttributes. Use a Predicate when you want to assign many different values (have rows with many different values) under one heading.
Think of biocuration classes as custom attributes for your collection objects, things like 'male', 'pupa', or 'larva'. These let you assign values useful for your curation of your specimens in a controlled way, ensuring problems like 'M.', 'MALE', 'ale' don't happen in what might otherwise be a "Sex" field. [TODO: reference groups?]. This approach is used when your rows have only a few specific values across the dataset.
Column headers that can't be linked via one of the 3 mechanisms are ignored during the import process. This means its important to do some trial runs in a sandbox, or with a smaller dataset to see that your values are mapping over. The Browse collection object
task is a good place to check this.
DANGER
No warning is given when columns do not map, they are simply ignored.
TIP
You can augment your data after import with batch update functionality inside TW. Carefully planning your overal import process can lead to a more efficient overall approach. Sometimes its easier to work in spreadsheets, sometimes within a database.
Drag and drop loading of images and documents are accessible in various places in including the Radial annotator , and, notable, Tasks -> New image
.
When first learning TaxonWorks, entering records one-at-a-time offers you the opportunity to learn about more of the features in TW and get a feel for how you and others experience the UI.
For example, you want to enter a specimen record. You have two Tasks enabling you to do this. Choose to use Comprehensive Specimen Digitization Task or the Simple New Specimen Task.
In your project, try creating a simple new specimen record.
Note you will need to select a namespace. You may find you need to add a namespace before you can do this TW task. Adding a value for namespace ensures your uploaded data records will be unique inside your TW project and across TW projects. In your project, you may also need more than one namespace. [Use Tommy’s INHS Insect Collection as an example, with 12 different namespaces that effectively group the various collections housed at INHS ENT].
If you tried the OTU batch loader you can pick one of your OTUs for the name to assign to this specimen.
Add an image if you wish
Select the Preparation type for this specimen. You may need to add a new value to the dropdown using the New preparation type task.
We are in the process of exploring two routes to come from Scratchpads to TaxonWorks.
The DwC import should work well for occurrence data that is based on collected objects. The SFG team is has worked with a select number of individual Scratchpad curators to script the process of transferring their datadata. Contact us if you are interested in what this approach entails. Note that this process takes programming effort that is a limited resource within the SFG. Prev
Data Quality Help and Hints
Next
Export
+
+
+
diff --git a/guide/index.html b/guide/index.html
new file mode 100644
index 00000000..b5cafe01
--- /dev/null
+++ b/guide/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ The big picture | TaxonWorks Docs
+
+
+
+
+
+ The view from 30K feet at TaxonWorks and why this online documentation tool.
Our vision is a world in which the descriptions of Earth's life permeates humanity.
Our mission is to make TaxonWorks, and its companions, as excellent as those that describe life on Earth. As the requirements, needs, and goals for those that describe life evolve, so too should the resources and tools that facilitate their work.
Read more at TaxonWorks.org .
Here in docs.taxonworks.org , everyone contributes to the content, development, and evolution of TaxonWorks' documentation. Click where you see "Edit this page" to offer new information and update existing content.
+
+
+
diff --git a/guide/migrate-to-TaxonWorks.html b/guide/migrate-to-TaxonWorks.html
new file mode 100644
index 00000000..4353ecf7
--- /dev/null
+++ b/guide/migrate-to-TaxonWorks.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Migrate to TaxonWorks | TaxonWorks Docs
+
+
+
+
+
+ General strategies and tips for migrating complete projects into TaxonWorks with reference to broader considerations for any data migration.
For general import and input methods see Import and Export .
Those considering TaxonWorks often have existing data in many different formats. One of their first questions is how can they get their existing data in to TaxonWorks. In your considerations it might help to read the Checklist , a generic list of things to consider.
TaxonWorks collectively provides a nice spectrum of strategies for moving projects into it depending on the nature of your data and the skill-sets of those helping you. These range from completely manually typing in the data to using code to script enter everything. All the strategies listed below have been employed by at least one project within TaxonWorks.
Even with a large dataset some see coming into a new project as a way to start fresh. Keying in your data has the benefit of forcing you to look carefully at it. It ensures a maximal match to TaxonWorks concepts (data models) as everything is done "natively". It lets you master the interfaces you'll ultimately use through repeated use and experimentation. For incoming datasets with tables of less than 500 rows this is very feasible. Remember that the time spent starting, even if weeks or months, is a tiny fraction of the years spent curating into the future. The elephant in the room- the time it takes to write a script, reformat your data, test and refine batch loads is all time spent, often waiting for others, that you and your team could have been entering data.
We've worked hard to build interfaces that variously:
Facilitate adding multiple items via drag and drop (e.g. images) Use "smart selectors" that predict what values you might use based on your recent use Use hot keys to copy values from field to field Use locks to lock in values from record to record Use locks to increment values from record to record Let you build a list of current favourites, and default forms to use one of them Reference an extended clipboard toggling between 4 values Use hot keys to clone records Use in-line data creation for related values when autocompletes fail to find a search target Select-paste from one target to another Make annotation easy in many contexts via radial popups This option is most likely to fully cover needs if your data are encodable in Darwin Core Occurrence and Checklist formats. Other batch loaders exist per model, though without the sophistication of the former.
If your data are old and rich/complex then writing a 1-off script is often the most effective strategy. It's the practice that SFG members use for datasets that span decades of curation. This is also useful for data not covered in other batch-loaders as part of the hybrid approach.
This process is not comprehensive, i.e. complete datasets are not migrated in this way. It augments the Hybrid approach outlined below. Small updates are possible directly via careful code execution in the Rails console. In production this option is only accessible by server administrators, however crafting this code is possible by users, with the execution step provided via communication with those administrators.
Hybrid approaches use one or more of the above options to achieve complete coverage. For example use BibTeX formatted sources to import References followed by DwC Checklist data for names, DwC Occurrence data for specimens followed by a script that adds BiologicalAssociation data and Citations.
Accessing the database directly via SQL calls is very rarely done by admins, almost exclusively to address bad data that was not initially caught by model validation but has been, i.e. for retroactive fixes. No batch import uses direct calls to write or update as this avoids the data validation layer.
The external API does not allow POST/PATCH requests, i.e. you can't write to the system in that way.
TODO, document paths from other broadly used software platforms. In general many platforms export to DwC, this is the first step then see Batch Load.
Here the idea is to import the core of your data via the built-in importer, see Darwin Core Archive (DwC-A) import , then, if needed, augment the with the Hybrid approach.
The intent is that these apply to any migration, not just into TaxonWorks.
Regardless of what you're migrating, and where you are migrating to, one of the very first questions you should ask is not "How do I get in?", but rather "How do I get out ?". We know of no software that has lasted forever in its current form, and there is little reason to expect this to change.
How long do I need to use the platform I'm using? What platforms can you migrate to? What data-formats does the new platform let me export to. Do I understand those formats. Do others understand them? And what can I afford to lose
Going from one system to another means you will lose, so to speak, some things. In addition to the opposite of what you might gain (below) these might include:
Institutional memory on how things were done in the old system, for example how to use interfaces, and how data got in-and-out. Documentation that is now not relevant in the new system Data semantics In addition to the opposite of what you might lose (above):
Improved data semantics, which translates to an increase in data quality
and the FAIRness
of your data. This is one of the primary motivators for moving to a new system New, better documentation (if it exists) Improved interfaces. Greater flexibility Access to a community of support Longer than you expect, however this is highly dependent on what you're coming in with. In our experience, particularly with regards to complex, old data, a rough rule of thumb is that for every year of curation you've done on your dataset you can expect up to 1/2 a years time for the migration process to complete . This assumes that you want to be a lossless as possible. Research datasets 20 years old have gone through multiple revisions, have had their semantics drift here and there, cover things that are often very specific to some domain and contain other complexities that make this a difficult process. If we think about taking into account the time between the "AHA! This data should move!" moment to the time at which the dataset is moved then you might take into account such things as (in no particular order): 1) writing grants for support (and resubmitting them, that's 4 years right there); 2) finding people to do the work; 3) waiting for those people to have the time to do the work; 4) finding a community to join you in the move; 5) educating you and your community on how to use the new platform; 5) validating data at all steps; 6) practicing the migration; 7) modelling the transition of your data to the new model; 8) iteratively updating your data to match the new model; 9) writing the tools or processes that do the data migration; 10) waiting for new features that must be there to meet your needs to be created on the target platform; 11) debating other platforms to use; 12) building community consensus on what platform to migrate to; 13) doing feature comparisons; 14) learning about your options; 15) waiting for the original curator to retire; 16) waiting for the original curator to retire and "be done" with their data; 16) migrating your data to a platform and finding out near the end (or shortly thereafter) that the platform is no longer supported and starting all over again (thanks big G); 17) some standards group changing what identifier you should use; 18) some ontology group changing the meaning of the things the identifiers point to; 19) staff turnover; 20) your ace post-doc who ran the show retiring and never, ever, coming back; 21) big arguments with your governmental agency as to why you should be allowed to move; 22) doing the migration, then figuring out you missed that 1 critical field; 22) waiting for the server that hosts the data to finally die to induce that real motivating moment of panic. These are all things we've experienced, please share yours!
Or, "get to text"
Many systems that you migrate too will want your data in a text format (e.g. CSV). This is in contrast to something like a Spreadsheet. Depending on who is supporting the migration it might be valuable for you to get eperienced in exporting to this format, as it may happen iteratively and frequently. If your data are in a wide-spread SQL format that is compatible (e.g. SQLlite or PostgresQL)
Consider archiving snapshots of your data as they originally existed for all the future digital-archaeologist who need to justify their jobs.
Keep original
copies of exported text files, as "pristine" as possible in one directory. Clone
those files into a working directory. Use Git to commit the files to persist changes at different times. TODO: Reference to data carpentry class or R for data science setup.
Coming, a pointer to a checklist of data quality utilities.
The process at this step seeks to accomplish a number of things:
Improving the consistency of your data prior to migration Pre-adapting, so to speak, your data to the semantics of the new system. For example using specific column-headers or splitting data into multiple fields if the new system prefers a specific format. A general cleaning of your data. Since you don't have to go back to your old tools you can use new tools to update your data (see list above) without having the problem of synchronizing the data back to your original tools format. At this point you'll engage the import capabilities of the system you're moving to.
Hopefully that system has ways to trial the import, and re-do it from scratch. This is key for complex data. Practice also means using the new system, getting familiar with the user-interfaces and tools. This helps to confirm whether or not you really want to migrate. It gives you new views on your data. You, as the expert, will best see anomalies in the data, some of which may suggests problems with the import process.
Set a date-time a making the final import run. Make sure your community is aware and engaged.
You may also consider taking the opportunity to:
Broaden your community by encouraging others to join. Solo-run projects on complex data are "fragile" in ways that groups of collaborators don't face. Adding new ways to communicate issues. Remember, no migration is perfect, immediately after the import run expect to see a flurry of communication that points out problems with the data, tools, etc. Perhaps you can start a shared issue tracker or chat-room so that these issues become visible and accessible to others beyond yourself. Open, shared communications lets experts outside your community hop in and help, as opposed to, for example emails from 1 person to another that are "hidden"from others who might help. Open communication also leaves an audit-trail that can be used to highlight the broader impacts of your project (e.g. look, X number of people need our data, and took the time to engage us) in ways that emails can not. You're never done. Sorry.
Prev
Start a project
Next
Getting started with some basics
+
+
+
diff --git a/guide/other-documents.html b/guide/other-documents.html
new file mode 100644
index 00000000..216e8b1a
--- /dev/null
+++ b/guide/other-documents.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Other documents | TaxonWorks Docs
+
+
+
+
+
+ The intent is to move this content here, and remove the files from this list at that time.
Prev
API
+
+
+
diff --git a/guide/start-a-project.html b/guide/start-a-project.html
new file mode 100644
index 00000000..c2510b2a
--- /dev/null
+++ b/guide/start-a-project.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Start a project | TaxonWorks Docs
+
+
+
+
+
+ Before you start a project it is important to understand:
TaxonWorks is open-source software that can be installed by anyone who wishes to. There is no one central TaxonWorks installation. One installation (sometimes referred to as "an instance") of TaxonWorks supports the creation of many projects. Organizations or individuals who collaborate with you by sharing their installation of TaxonWorks are doing this on their own terms. These terms may vary. Is possible to use TaxonWorks locally, for example developers have active instances they work with.
Considerations:
Offline use beyond development and experimenting is not officially supported at the moment, however the core developers are open to discussing making this happen. Offline TaxonWorks runs slower than online, however if you are serious about making it work the developers can work with you to tune your setup. Besides the various means of import and export there are no direct synchronization methods from offline to online projects. Some providers (see below) offer accounts in sandboxes. A sandbox is a temporary installation of TaxonWorks that can be used without fear of damaging "real" data. They are used to test functionality, practice making changes, preview large data imports, and assess whether necessary requirements are met. Each sandbox provider may have their own conditions as to how a sandbox should be used, be sure to understand the terms of use before using a sandbox account.
The Species File Group manages multiple sandboxes. Their terms of use are outlined here .
The following is a list of organizations or individuals with TaxonWorks installations. Starting a project here is a form of collaboration.
If you wish to be added to this list contact us or make a pull request .
The Species File group has a document outlining how they collobarate , its purpose is to get everyone on the same page as to what a TaxonWorks project in the instances they support means.
As more and more projects are created in TaxonWorks the scope of the taxa covered grows. If your projects overlap then we encourage you to find an existing project and join up, rather than work in parallel.
We encourage organizations or individuals with the resources to run their own instance of TaxonWorks. The core development team is mandated to facilitate this happening, and is committed to working with you to navigate the technical challenges to this. When individuals or organizations manage their own instance then this demonstrates to the broader community the growing role and importance of TaxonWorks. New instances help distribute valuable technical resources and underlying responsibility across our community.
From a technical perspective you can get started with install_taxonworks repository .
From a social perspective we encourage you to reach out and discuss with us how to best setup a new production-ready instance.
Prev
The big picture
Next
Migrate to TaxonWorks
+
+
+
diff --git a/guide/videos.html b/guide/videos.html
new file mode 100644
index 00000000..5830da17
--- /dev/null
+++ b/guide/videos.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Videos | TaxonWorks Docs
+
+
+
+
+
+
+
+
+
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-Black.eps b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Black.eps
new file mode 100644
index 00000000..6e5a4e68
Binary files /dev/null and b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Black.eps differ
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-Black.svg b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Black.svg
new file mode 100644
index 00000000..0dad61bb
--- /dev/null
+++ b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Black.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-Brown.eps b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Brown.eps
new file mode 100644
index 00000000..b09dd11b
Binary files /dev/null and b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Brown.eps differ
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-Brown.svg b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Brown.svg
new file mode 100644
index 00000000..13bd528d
--- /dev/null
+++ b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Brown.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-DarkGreen.eps b/images/branding/Logo-Full/TaxonWorks_Logo-Full-DarkGreen.eps
new file mode 100644
index 00000000..61aacd88
Binary files /dev/null and b/images/branding/Logo-Full/TaxonWorks_Logo-Full-DarkGreen.eps differ
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-DarkGreen.svg b/images/branding/Logo-Full/TaxonWorks_Logo-Full-DarkGreen.svg
new file mode 100644
index 00000000..934fb15c
--- /dev/null
+++ b/images/branding/Logo-Full/TaxonWorks_Logo-Full-DarkGreen.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-Green.eps b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Green.eps
new file mode 100644
index 00000000..d28f78da
Binary files /dev/null and b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Green.eps differ
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-Green.svg b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Green.svg
new file mode 100644
index 00000000..8e879c7b
--- /dev/null
+++ b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Green.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-Tan.eps b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Tan.eps
new file mode 100644
index 00000000..cd950229
Binary files /dev/null and b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Tan.eps differ
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-Tan.svg b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Tan.svg
new file mode 100644
index 00000000..4bacd89f
--- /dev/null
+++ b/images/branding/Logo-Full/TaxonWorks_Logo-Full-Tan.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-White.eps b/images/branding/Logo-Full/TaxonWorks_Logo-Full-White.eps
new file mode 100644
index 00000000..863a68b9
Binary files /dev/null and b/images/branding/Logo-Full/TaxonWorks_Logo-Full-White.eps differ
diff --git a/images/branding/Logo-Full/TaxonWorks_Logo-Full-White.svg b/images/branding/Logo-Full/TaxonWorks_Logo-Full-White.svg
new file mode 100644
index 00000000..67e5e3d6
--- /dev/null
+++ b/images/branding/Logo-Full/TaxonWorks_Logo-Full-White.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Black.eps b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Black.eps
new file mode 100644
index 00000000..239aac80
Binary files /dev/null and b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Black.eps differ
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Black.svg b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Black.svg
new file mode 100644
index 00000000..9579c335
--- /dev/null
+++ b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Black.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Brown.eps b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Brown.eps
new file mode 100644
index 00000000..cb3e7803
Binary files /dev/null and b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Brown.eps differ
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Brown.svg b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Brown.svg
new file mode 100644
index 00000000..90bcd8c6
--- /dev/null
+++ b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Brown.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-DarkGreen.eps b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-DarkGreen.eps
new file mode 100644
index 00000000..0c0a6c66
Binary files /dev/null and b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-DarkGreen.eps differ
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-DarkGreen.svg b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-DarkGreen.svg
new file mode 100644
index 00000000..2f8f17b4
--- /dev/null
+++ b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-DarkGreen.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Green.eps b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Green.eps
new file mode 100644
index 00000000..0de36769
Binary files /dev/null and b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Green.eps differ
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Green.svg b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Green.svg
new file mode 100644
index 00000000..d44c8739
--- /dev/null
+++ b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Green.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Tan.eps b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Tan.eps
new file mode 100644
index 00000000..e99c0495
Binary files /dev/null and b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Tan.eps differ
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Tan.svg b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Tan.svg
new file mode 100644
index 00000000..52d0aeb4
--- /dev/null
+++ b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-Tan.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-White.eps b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-White.eps
new file mode 100644
index 00000000..fca984c5
Binary files /dev/null and b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-White.eps differ
diff --git a/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-White.svg b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-White.svg
new file mode 100644
index 00000000..7bcb0139
--- /dev/null
+++ b/images/branding/Logo-Symbol/TaxonWorks_Logo-Symbol-White.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-Black.eps b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Black.eps
new file mode 100644
index 00000000..579667f8
Binary files /dev/null and b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Black.eps differ
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-Black.svg b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Black.svg
new file mode 100644
index 00000000..41698f20
--- /dev/null
+++ b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Black.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-Brown.eps b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Brown.eps
new file mode 100644
index 00000000..1f1601ea
Binary files /dev/null and b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Brown.eps differ
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-Brown.svg b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Brown.svg
new file mode 100644
index 00000000..3dc5b6b5
--- /dev/null
+++ b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Brown.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-DarkGreen.eps b/images/branding/Logo-Type/TaxonWorks_Logo-Type-DarkGreen.eps
new file mode 100644
index 00000000..e07d0810
Binary files /dev/null and b/images/branding/Logo-Type/TaxonWorks_Logo-Type-DarkGreen.eps differ
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-DarkGreen.svg b/images/branding/Logo-Type/TaxonWorks_Logo-Type-DarkGreen.svg
new file mode 100644
index 00000000..e76a5eeb
--- /dev/null
+++ b/images/branding/Logo-Type/TaxonWorks_Logo-Type-DarkGreen.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-Green.eps b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Green.eps
new file mode 100644
index 00000000..b38635e2
Binary files /dev/null and b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Green.eps differ
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-Green.svg b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Green.svg
new file mode 100644
index 00000000..5695aec3
--- /dev/null
+++ b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Green.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-Tan.eps b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Tan.eps
new file mode 100644
index 00000000..a0cb5b17
Binary files /dev/null and b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Tan.eps differ
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-Tan.svg b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Tan.svg
new file mode 100644
index 00000000..e64a12dd
--- /dev/null
+++ b/images/branding/Logo-Type/TaxonWorks_Logo-Type-Tan.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-White.eps b/images/branding/Logo-Type/TaxonWorks_Logo-Type-White.eps
new file mode 100644
index 00000000..9118056d
Binary files /dev/null and b/images/branding/Logo-Type/TaxonWorks_Logo-Type-White.eps differ
diff --git a/images/branding/Logo-Type/TaxonWorks_Logo-Type-White.svg b/images/branding/Logo-Type/TaxonWorks_Logo-Type-White.svg
new file mode 100644
index 00000000..a3ecae2e
--- /dev/null
+++ b/images/branding/Logo-Type/TaxonWorks_Logo-Type-White.svg
@@ -0,0 +1 @@
+TaxonWorks
\ No newline at end of file
diff --git a/images/favicon.svg b/images/favicon.svg
new file mode 100644
index 00000000..a9055d42
--- /dev/null
+++ b/images/favicon.svg
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/model/alternate_values_model_er.svg b/images/model/alternate_values_model_er.svg
new file mode 100644
index 00000000..c868fe56
--- /dev/null
+++ b/images/model/alternate_values_model_er.svg
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+AlternateValue
+
+
+
+AlternateValue->PinboardItem
+
+
+
+
+
+AlternateValue->Role
+
+
+
+
+
+AlternateValue->VerifierRole
+
+
+
+
+
+AlternateValue->Creator
+
+
+
+
+
+AlternateValue->Language
+
+
+
+
+
+AlternateValue->Project
+
+
+
+
+
+AlternateValue->Updater
+
+
+
+
+
+AlternateValue->Objects with Alternate values
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+AlternateValue
+
+
+
+AlternateValue
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Language
+
+
+Language
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Alternate values
+
+
+Objects with Alternate values
+
+
+
+
+
diff --git a/images/model/asserted_distributions_model_er.svg b/images/model/asserted_distributions_model_er.svg
new file mode 100644
index 00000000..432f202e
--- /dev/null
+++ b/images/model/asserted_distributions_model_er.svg
@@ -0,0 +1,506 @@
+
+
+
+
+
+
+AssertedDistribution
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+AssertedDistribution->Citation
+
+
+
+
+
+AssertedDistribution->Confidence
+
+
+
+
+
+AssertedDistribution->DataAttribute
+
+
+
+
+
+AssertedDistribution->Identifier
+
+
+
+
+
+AssertedDistribution->Tag
+
+
+
+
+
+AssertedDistribution->Note
+
+
+
+
+
+AssertedDistribution->Source
+
+
+
+
+
+
+
+
+AssertedDistribution->Otu
+
+
+
+
+
+AssertedDistribution->TaxonName
+
+
+
+
+
+
+
+
+AssertedDistribution->GeographicArea
+
+
+
+
+
+AssertedDistribution->GeographicItem
+
+
+
+
+
+
+
+
+AssertedDistribution->RelatedOriginRelationship
+
+
+
+
+
+AssertedDistribution->OriginRelationship
+
+
+
+
+
+AssertedDistribution->PinboardItem
+
+
+
+
+
+AssertedDistribution->Role
+
+
+
+
+
+AssertedDistribution->SubsequentCitation
+
+
+
+
+
+AssertedDistribution->VerifierRole
+
+
+
+
+
+AssertedDistribution->Creator
+
+
+
+
+
+AssertedDistribution->Project
+
+
+
+
+
+AssertedDistribution->Updater
+
+
+
+
+
+AssertedDistribution->DwcOccurrence
+
+
+
+
+
+
+
+
+AssertedDistribution->OriginCitation
+
+
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+GeographicArea->GeographicItem
+
+
+
+
+
+RelatedOriginRelationship->OriginLot
+
+
+
+
+
+RelatedOriginRelationship->OriginSpecimen
+
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+AssertedDistribution
+
+
+
+AssertedDistribution
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+TaxonName
+
+
+TaxonName
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+GeographicArea
+
+
+GeographicArea
+
+
+
+
+
+GeographicItem
+
+
+GeographicItem
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+RelatedOriginRelationship
+
+
+RelatedOriginRelationship
+
+
+
+
+
+OriginLot
+
+
+OriginLot
+
+
+
+
+
+OriginRelationship
+
+
+OriginRelationship
+
+
+
+
+
+OriginSpecimen
+
+
+OriginSpecimen
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+DwcOccurrence
+
+
+DwcOccurrence
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/attributions_model_er.svg b/images/model/attributions_model_er.svg
new file mode 100644
index 00000000..8688c3c2
--- /dev/null
+++ b/images/model/attributions_model_er.svg
@@ -0,0 +1,341 @@
+
+
+
+
+
+
+Attribution
+
+
+
+Attribution->Confidence
+
+
+
+
+
+Attribution->Tag
+
+
+
+
+
+Attribution->Note
+
+
+
+
+
+Attribution->CopyrightHolderRole
+
+
+
+
+
+Attribution->CreatorRole
+
+
+
+
+
+Attribution->EditorRole
+
+
+
+
+
+Attribution->OwnerRole
+
+
+
+
+
+Attribution->PinboardItem
+
+
+
+
+
+Attribution->Role
+
+
+
+
+
+Attribution->VerifierRole
+
+
+
+
+
+Attribution->Creator
+
+
+
+
+
+Attribution->Project
+
+
+
+
+
+Attribution->Updater
+
+
+
+
+
+Attribution->Objects with Attributions
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+CopyrightHolderRole->AttributionCopyrightHolder
+
+
+
+
+
+CreatorRole->AttributionCreator
+
+
+
+
+
+EditorRole->AttributionEditor
+
+
+
+
+
+OwnerRole->AttributionOwner
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Attribution
+
+
+
+Attribution
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+CopyrightHolderRole
+
+
+CopyrightHolderRole
+
+
+
+
+
+AttributionCopyrightHolder
+
+
+AttributionCopyrightHolder
+
+
+
+
+
+CreatorRole
+
+
+CreatorRole
+
+
+
+
+
+AttributionCreator
+
+
+AttributionCreator
+
+
+
+
+
+EditorRole
+
+
+EditorRole
+
+
+
+
+
+AttributionEditor
+
+
+AttributionEditor
+
+
+
+
+
+OwnerRole
+
+
+OwnerRole
+
+
+
+
+
+AttributionOwner
+
+
+AttributionOwner
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Attributions
+
+
+Objects with Attributions
+
+
+
+
+
diff --git a/images/model/biocuration_classifications_model_er.svg b/images/model/biocuration_classifications_model_er.svg
new file mode 100644
index 00000000..5730ebb2
--- /dev/null
+++ b/images/model/biocuration_classifications_model_er.svg
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+BiocurationClassification
+
+
+
+BiocurationClassification->PinboardItem
+
+
+
+
+
+BiocurationClassification->Role
+
+
+
+
+
+BiocurationClassification->VerifierRole
+
+
+
+
+
+BiocurationClassification->BiocurationClass
+
+
+
+
+
+BiocurationClassification->BiologicalCollectionObject
+
+
+
+
+
+BiocurationClassification->Creator
+
+
+
+
+
+BiocurationClassification->Project
+
+
+
+
+
+BiocurationClassification->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+BiocurationClassification
+
+
+
+BiocurationClassification
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+BiocurationClass
+
+
+BiocurationClass
+
+
+
+
+
+BiologicalCollectionObject
+
+
+BiologicalCollectionObject
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/biological_associations_biological_associations_graphs_model_er.svg b/images/model/biological_associations_biological_associations_graphs_model_er.svg
new file mode 100644
index 00000000..c5f39e4e
--- /dev/null
+++ b/images/model/biological_associations_biological_associations_graphs_model_er.svg
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph->BiologicalAssociation
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph->PinboardItem
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph->Role
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph->VerifierRole
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph->BiologicalAssociationsGraph
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph->Creator
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph->Project
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+BiologicalAssociation
+
+
+BiologicalAssociation
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+BiologicalAssociationsGraph
+
+
+BiologicalAssociationsGraph
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/biological_associations_graphs_model_er.svg b/images/model/biological_associations_graphs_model_er.svg
new file mode 100644
index 00000000..4ca95242
--- /dev/null
+++ b/images/model/biological_associations_graphs_model_er.svg
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+BiologicalAssociationsGraph
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+
+
+BiologicalAssociationsGraph->Citation
+
+
+
+
+
+BiologicalAssociationsGraph->Source
+
+
+
+
+
+
+
+
+BiologicalAssociationsGraph->BiologicalAssociationsBiologicalAssociationsGraph
+
+
+
+
+
+BiologicalAssociationsGraph->PinboardItem
+
+
+
+
+
+BiologicalAssociationsGraph->Role
+
+
+
+
+
+BiologicalAssociationsGraph->SubsequentCitation
+
+
+
+
+
+BiologicalAssociationsGraph->VerifierRole
+
+
+
+
+
+BiologicalAssociationsGraph->Creator
+
+
+
+
+
+BiologicalAssociationsGraph->Project
+
+
+
+
+
+BiologicalAssociationsGraph->Updater
+
+
+
+
+
+BiologicalAssociationsGraph->OriginCitation
+
+
+
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph->BiologicalAssociation
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+BiologicalAssociation
+
+
+BiologicalAssociation
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+BiologicalAssociationsGraph
+
+
+
+BiologicalAssociationsGraph
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph
+
+
+BiologicalAssociationsBiologicalAssociationsGraph
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/biological_associations_model_er.svg b/images/model/biological_associations_model_er.svg
new file mode 100644
index 00000000..6ebc709b
--- /dev/null
+++ b/images/model/biological_associations_model_er.svg
@@ -0,0 +1,400 @@
+
+
+
+
+
+
+BiologicalAssociation
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+BiologicalAssociation->Citation
+
+
+
+
+
+BiologicalAssociation->Confidence
+
+
+
+
+
+BiologicalAssociation->DataAttribute
+
+
+
+
+
+BiologicalAssociation->Identifier
+
+
+
+
+
+BiologicalAssociation->Tag
+
+
+
+
+
+BiologicalAssociation->Note
+
+
+
+
+
+BiologicalAssociation->Source
+
+
+
+
+
+
+
+
+BiologicalAssociation->BiologicalAssociationsBiologicalAssociationsGraph
+
+
+
+
+
+BiologicalAssociation->PinboardItem
+
+
+
+
+
+BiologicalAssociation->Role
+
+
+
+
+
+BiologicalAssociation->SubsequentCitation
+
+
+
+
+
+BiologicalAssociation->VerifierRole
+
+
+
+
+
+BiologicalAssociation->BiologicalRelationship
+
+
+
+
+
+BiologicalAssociation->Creator
+
+
+
+
+
+BiologicalAssociation->Project
+
+
+
+
+
+BiologicalAssociation->Updater
+
+
+
+
+
+BiologicalAssociation->OriginCitation
+
+
+
+
+
+
+
+
+BiologicalAssociation->Objects with Biological associations
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+BiologicalAssociation
+
+
+
+BiologicalAssociation
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+BiologicalAssociationsBiologicalAssociationsGraph
+
+
+BiologicalAssociationsBiologicalAssociationsGraph
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+BiologicalRelationship
+
+
+BiologicalRelationship
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
+Objects with Biological associations
+
+
+Objects with Biological associations
+
+
+
+
+
diff --git a/images/model/biological_relationship_types_model_er.svg b/images/model/biological_relationship_types_model_er.svg
new file mode 100644
index 00000000..708554df
--- /dev/null
+++ b/images/model/biological_relationship_types_model_er.svg
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+BiologicalRelationshipType
+
+
+
+BiologicalRelationshipType->PinboardItem
+
+
+
+
+
+BiologicalRelationshipType->Role
+
+
+
+
+
+BiologicalRelationshipType->VerifierRole
+
+
+
+
+
+BiologicalRelationshipType->BiologicalProperty
+
+
+
+
+
+BiologicalRelationshipType->BiologicalRelationship
+
+
+
+
+
+BiologicalRelationshipType->Creator
+
+
+
+
+
+BiologicalRelationshipType->Project
+
+
+
+
+
+BiologicalRelationshipType->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+BiologicalRelationshipType
+
+
+
+BiologicalRelationshipType
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+BiologicalProperty
+
+
+BiologicalProperty
+
+
+
+
+
+BiologicalRelationship
+
+
+BiologicalRelationship
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/biological_relationships_model_er.svg b/images/model/biological_relationships_model_er.svg
new file mode 100644
index 00000000..0f2a494f
--- /dev/null
+++ b/images/model/biological_relationships_model_er.svg
@@ -0,0 +1,415 @@
+
+
+
+
+
+
+BiologicalRelationship
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+
+
+BiologicalRelationship->Citation
+
+
+
+
+
+BiologicalRelationship->DataAttribute
+
+
+
+
+
+BiologicalRelationship->Tag
+
+
+
+
+
+BiologicalRelationship->Note
+
+
+
+
+
+BiologicalRelationship->BiologicalAssociation
+
+
+
+
+
+BiologicalRelationship->Source
+
+
+
+
+
+
+
+
+BiologicalRelationship->BiologicalRelationshipType
+
+
+
+
+
+BiologicalRelationship->ObjectBiologicalRelationshipType
+
+
+
+
+
+BiologicalRelationship->PinboardItem
+
+
+
+
+
+BiologicalRelationship->Role
+
+
+
+
+
+BiologicalRelationship->SubjectBiologicalRelationshipType
+
+
+
+
+
+BiologicalRelationship->SubsequentCitation
+
+
+
+
+
+BiologicalRelationship->VerifierRole
+
+
+
+
+
+BiologicalRelationship->Creator
+
+
+
+
+
+BiologicalRelationship->Project
+
+
+
+
+
+BiologicalRelationship->Updater
+
+
+
+
+
+BiologicalRelationship->OriginCitation
+
+
+
+
+
+
+
+
+BiologicalRelationshipType->BiologicalProperty
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+ObjectBiologicalRelationshipType->ObjectBiologicalProperty
+
+
+
+
+
+
+SubjectBiologicalRelationshipType->SubjectBiologicalProperty
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+BiologicalAssociation
+
+
+BiologicalAssociation
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+BiologicalRelationship
+
+
+
+BiologicalRelationship
+
+
+
+
+
+BiologicalRelationshipType
+
+
+BiologicalRelationshipType
+
+
+
+
+
+BiologicalProperty
+
+
+BiologicalProperty
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+ObjectBiologicalRelationshipType
+
+
+ObjectBiologicalRelationshipType
+
+
+
+
+
+ObjectBiologicalProperty
+
+
+ObjectBiologicalProperty
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubjectBiologicalRelationshipType
+
+
+SubjectBiologicalRelationshipType
+
+
+
+
+
+SubjectBiologicalProperty
+
+
+SubjectBiologicalProperty
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/character_states_model_er.svg b/images/model/character_states_model_er.svg
new file mode 100644
index 00000000..00d8c211
--- /dev/null
+++ b/images/model/character_states_model_er.svg
@@ -0,0 +1,475 @@
+
+
+
+
+
+
+CharacterState
+
+
+
+AlternateValue->AlternateValueLanguage
+
+
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+
+
+CharacterState->AlternateValue
+
+
+
+
+
+CharacterState->Citation
+
+
+
+
+
+CharacterState->Confidence
+
+
+
+
+
+CharacterState->DataAttribute
+
+
+
+
+
+CharacterState->Depiction
+
+
+
+
+
+CharacterState->Identifier
+
+
+
+
+
+CharacterState->Tag
+
+
+
+
+
+CharacterState->Note
+
+
+
+
+
+CharacterState->Observation
+
+
+
+
+
+CharacterState->Source
+
+
+
+
+
+
+
+
+CharacterState->Descriptor
+
+
+
+
+
+CharacterState->Documentation
+
+
+
+
+
+CharacterState->PinboardItem
+
+
+
+
+
+CharacterState->Role
+
+
+
+
+
+CharacterState->SubsequentCitation
+
+
+
+
+
+CharacterState->VerifierRole
+
+
+
+
+
+CharacterState->Creator
+
+
+
+
+
+CharacterState->Project
+
+
+
+
+
+CharacterState->Updater
+
+
+
+
+
+CharacterState->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+Documentation->Document
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Observation
+
+
+Observation
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Descriptor
+
+
+Descriptor
+
+
+
+
+
+CharacterState
+
+
+
+CharacterState
+
+
+
+
+
+AlternateValueLanguage
+
+
+AlternateValueLanguage
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Documentation
+
+
+Documentation
+
+
+
+
+
+Document
+
+
+Document
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/citation_topics_model_er.svg b/images/model/citation_topics_model_er.svg
new file mode 100644
index 00000000..7adceb9c
--- /dev/null
+++ b/images/model/citation_topics_model_er.svg
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+CitationTopic
+
+
+
+CitationTopic->Citation
+
+
+
+
+
+CitationTopic->Source
+
+
+
+
+
+
+
+
+CitationTopic->PinboardItem
+
+
+
+
+
+CitationTopic->Role
+
+
+
+
+
+CitationTopic->VerifierRole
+
+
+
+
+
+CitationTopic->Creator
+
+
+
+
+
+CitationTopic->Project
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+CitationTopic->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+CitationTopic
+
+
+
+CitationTopic
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/citations_model_er.svg b/images/model/citations_model_er.svg
new file mode 100644
index 00000000..5ee21327
--- /dev/null
+++ b/images/model/citations_model_er.svg
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+Citation
+
+
+
+Citation->Tag
+
+
+
+
+
+Citation->Note
+
+
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Citation->PinboardItem
+
+
+
+
+
+Citation->Role
+
+
+
+
+
+Citation->VerifierRole
+
+
+
+
+
+Citation->Creator
+
+
+
+
+
+Citation->Project
+
+
+
+
+
+Citation->Updater
+
+
+
+
+
+Citation->Objects with Citations
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+Source->Document
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+
+Citation
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+Document
+
+
+Document
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Citations
+
+
+Objects with Citations
+
+
+
+
+
diff --git a/images/model/collecting_events_model_er.svg b/images/model/collecting_events_model_er.svg
new file mode 100644
index 00000000..85aadbd8
--- /dev/null
+++ b/images/model/collecting_events_model_er.svg
@@ -0,0 +1,667 @@
+
+
+
+
+
+
+CollectingEvent
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+CollectingEvent->Citation
+
+
+
+
+
+CollectingEvent->Confidence
+
+
+
+
+
+CollectingEvent->DataAttribute
+
+
+
+
+
+CollectingEvent->Depiction
+
+
+
+
+
+CollectingEvent->Identifier
+
+
+
+
+
+CollectingEvent->Tag
+
+
+
+
+
+CollectingEvent->Note
+
+
+
+
+
+CollectingEvent->CollectionObject
+
+
+
+
+
+CollectingEvent->Source
+
+
+
+
+
+
+
+
+CollectingEvent->CollectorRole
+
+
+
+
+
+CollectingEvent->Documentation
+
+
+
+
+
+CollectingEvent->Georeference
+
+
+
+
+
+CollectingEvent->GeoLocateGeoreference
+
+
+
+
+
+CollectingEvent->GpxGeoreference
+
+
+
+
+
+CollectingEvent->Label
+
+
+
+
+
+CollectingEvent->PinboardItem
+
+
+
+
+
+CollectingEvent->Role
+
+
+
+
+
+CollectingEvent->SubsequentCitation
+
+
+
+
+
+CollectingEvent->VerifierRole
+
+
+
+
+
+CollectingEvent->Version
+
+
+
+
+
+CollectingEvent->Creator
+
+
+
+
+
+CollectingEvent->GeographicArea
+
+
+
+
+
+CollectingEvent->Project
+
+
+
+
+
+CollectingEvent->Updater
+
+
+
+
+
+CollectingEvent->AccessionProviderRole
+
+
+
+
+
+
+
+
+CollectingEvent->DeaccessionRecipientRole
+
+
+
+
+
+
+
+
+CollectingEvent->OriginCitation
+
+
+
+
+
+
+
+
+CollectingEvent->VerbatimDataGeoreference
+
+
+
+
+
+
+
+
+CollectionObject->Otu
+
+
+
+
+
+CollectionObject->DwcOccurrence
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+CollectorRole->Collector
+
+
+
+
+
+Documentation->Document
+
+
+
+
+
+Georeference->ErrorGeographicItem
+
+
+
+
+
+Georeference->GeographicItem
+
+
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+CollectingEvent
+
+
+
+CollectingEvent
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+CollectorRole
+
+
+CollectorRole
+
+
+
+
+
+Collector
+
+
+Collector
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Documentation
+
+
+Documentation
+
+
+
+
+
+Document
+
+
+Document
+
+
+
+
+
+DwcOccurrence
+
+
+DwcOccurrence
+
+
+
+
+
+Georeference
+
+
+Georeference
+
+
+
+
+
+ErrorGeographicItem
+
+
+ErrorGeographicItem
+
+
+
+
+
+GeoLocateGeoreference
+
+
+GeoLocateGeoreference
+
+
+
+
+
+GeographicItem
+
+
+GeographicItem
+
+
+
+
+
+GpxGeoreference
+
+
+GpxGeoreference
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+Label
+
+
+Label
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+GeographicArea
+
+
+GeographicArea
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+AccessionProviderRole
+
+
+AccessionProviderRole
+
+
+
+
+
+DeaccessionRecipientRole
+
+
+DeaccessionRecipientRole
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
+VerbatimDataGeoreference
+
+
+VerbatimDataGeoreference
+
+
+
+
+
diff --git a/images/model/collection_object_observations_model_er.svg b/images/model/collection_object_observations_model_er.svg
new file mode 100644
index 00000000..f6528406
--- /dev/null
+++ b/images/model/collection_object_observations_model_er.svg
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+CollectionObjectObservation
+
+
+
+Depiction->Image
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+CollectionObjectObservation->Depiction
+
+
+
+
+
+CollectionObjectObservation->Tag
+
+
+
+
+
+CollectionObjectObservation->Note
+
+
+
+
+
+CollectionObjectObservation->DerivedCollectionObject
+
+
+
+
+
+CollectionObjectObservation->PinboardItem
+
+
+
+
+
+CollectionObjectObservation->Role
+
+
+
+
+
+CollectionObjectObservation->VerifierRole
+
+
+
+
+
+CollectionObjectObservation->Creator
+
+
+
+
+
+CollectionObjectObservation->Project
+
+
+
+
+
+CollectionObjectObservation->Updater
+
+
+
+
+
+DerivedCollectionObject->CollectionObject
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+CollectionObjectObservation
+
+
+
+CollectionObjectObservation
+
+
+
+
+
+DerivedCollectionObject
+
+
+DerivedCollectionObject
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/collection_objects_model_er.svg b/images/model/collection_objects_model_er.svg
new file mode 100644
index 00000000..cc64284a
--- /dev/null
+++ b/images/model/collection_objects_model_er.svg
@@ -0,0 +1,1028 @@
+
+
+
+
+
+
+CollectionObject
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+Depiction->SqedDepiction
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+ProtocolRelationship->Protocol
+
+
+
+
+
+CollectionObject->Citation
+
+
+
+
+
+CollectionObject->Confidence
+
+
+
+
+
+CollectionObject->DataAttribute
+
+
+
+
+
+CollectionObject->Depiction
+
+
+
+
+
+CollectionObject->Identifier
+
+
+
+
+
+CollectionObject->Tag
+
+
+
+
+
+CollectionObject->Note
+
+
+
+
+
+CollectionObject->ProtocolRelationship
+
+
+
+
+
+CollectionObject->BiologicalAssociation
+
+
+
+
+
+CollectionObject->Observation
+
+
+
+
+
+CollectionObject->CollectingEvent
+
+
+
+
+
+CollectionObject->Source
+
+
+
+
+
+
+
+
+CollectionObject->BiocurationClassification
+
+
+
+
+
+CollectionObject->DerivedCollectionObject
+
+
+
+
+
+CollectionObject->TaxonDetermination
+
+
+
+
+
+CollectionObject->OriginRelationship
+
+
+
+
+
+CollectionObject->LoanItem
+
+
+
+
+
+CollectionObject->Loan
+
+
+
+
+
+
+
+
+CollectionObject->ObservationMatrixRow
+
+
+
+
+
+CollectionObject->ObservationMatrixRowItem
+
+
+
+
+
+CollectionObject->PinboardItem
+
+
+
+
+
+CollectionObject->RelatedBiologicalAssociation
+
+
+
+
+
+CollectionObject->RelatedOriginRelationship
+
+
+
+
+
+CollectionObject->Role
+
+
+
+
+
+CollectionObject->SubsequentCitation
+
+
+
+
+
+CollectionObject->TypeMaterial
+
+
+
+
+
+CollectionObject->VerifierRole
+
+
+
+
+
+CollectionObject->Version
+
+
+
+
+
+CollectionObject->Creator
+
+
+
+
+
+CollectionObject->PreparationType
+
+
+
+
+
+CollectionObject->Project
+
+
+
+
+
+CollectionObject->RangedLotCategory
+
+
+
+
+
+CollectionObject->Repository
+
+
+
+
+
+CollectionObject->Updater
+
+
+
+
+
+CollectionObject->AccessionProvider
+
+
+
+
+
+
+
+
+CollectionObject->AccessionProviderRole
+
+
+
+
+
+
+
+
+CollectionObject->Container
+
+
+
+
+
+
+
+
+CollectionObject->ContainerItem
+
+
+
+
+
+
+
+
+CollectionObject->DeaccessionRecipient
+
+
+
+
+
+
+
+
+CollectionObject->DeaccessionRecipientRole
+
+
+
+
+
+
+
+
+CollectionObject->DwcOccurrence
+
+
+
+
+
+
+
+
+CollectionObject->OriginCitation
+
+
+
+
+
+
+
+
+CollectionObject->ParentContainerItem
+
+
+
+
+
+
+
+
+
+Observation->Descriptor
+
+
+
+
+
+
+CollectingEvent->Georeference
+
+
+
+
+
+Otu->TaxonName
+
+
+
+
+
+
+
+BiocurationClassification->BiocurationClass
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+DerivedCollectionObject->CollectionObjectObservation
+
+
+
+
+
+TaxonDetermination->Otu
+
+
+
+
+
+TaxonDetermination->Determiner
+
+
+
+
+
+OriginRelationship->Extract
+
+
+
+
+
+
+Extract->Sequence
+
+
+
+
+
+Georeference->GeographicItem
+
+
+
+
+
+LoanItem->Loan
+
+
+
+
+
+ObservationMatrixRow->ObservationMatrix
+
+
+
+
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+ProtocolRelationship
+
+
+ProtocolRelationship
+
+
+
+
+
+CollectionObject
+
+
+
+CollectionObject
+
+
+
+
+
+BiologicalAssociation
+
+
+BiologicalAssociation
+
+
+
+
+
+Observation
+
+
+Observation
+
+
+
+
+
+Descriptor
+
+
+Descriptor
+
+
+
+
+
+CollectingEvent
+
+
+CollectingEvent
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+Sequence
+
+
+Sequence
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+TaxonName
+
+
+TaxonName
+
+
+
+
+
+BiocurationClassification
+
+
+BiocurationClassification
+
+
+
+
+
+BiocurationClass
+
+
+BiocurationClass
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+DerivedCollectionObject
+
+
+DerivedCollectionObject
+
+
+
+
+
+CollectionObjectObservation
+
+
+CollectionObjectObservation
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+TaxonDetermination
+
+
+TaxonDetermination
+
+
+
+
+
+Determiner
+
+
+Determiner
+
+
+
+
+
+OriginRelationship
+
+
+OriginRelationship
+
+
+
+
+
+Extract
+
+
+Extract
+
+
+
+
+
+Georeference
+
+
+Georeference
+
+
+
+
+
+GeographicItem
+
+
+GeographicItem
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+LoanItem
+
+
+LoanItem
+
+
+
+
+
+Loan
+
+
+Loan
+
+
+
+
+
+ObservationMatrixRow
+
+
+ObservationMatrixRow
+
+
+
+
+
+ObservationMatrix
+
+
+ObservationMatrix
+
+
+
+
+
+ObservationMatrixRowItem
+
+
+ObservationMatrixRowItem
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Protocol
+
+
+Protocol
+
+
+
+
+
+RelatedBiologicalAssociation
+
+
+RelatedBiologicalAssociation
+
+
+
+
+
+RelatedOriginRelationship
+
+
+RelatedOriginRelationship
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SqedDepiction
+
+
+SqedDepiction
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+TypeMaterial
+
+
+TypeMaterial
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+PreparationType
+
+
+PreparationType
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+RangedLotCategory
+
+
+RangedLotCategory
+
+
+
+
+
+Repository
+
+
+Repository
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+AccessionProvider
+
+
+AccessionProvider
+
+
+
+
+
+AccessionProviderRole
+
+
+AccessionProviderRole
+
+
+
+
+
+Container
+
+
+Container
+
+
+
+
+
+ContainerItem
+
+
+ContainerItem
+
+
+
+
+
+DeaccessionRecipient
+
+
+DeaccessionRecipient
+
+
+
+
+
+DeaccessionRecipientRole
+
+
+DeaccessionRecipientRole
+
+
+
+
+
+DwcOccurrence
+
+
+DwcOccurrence
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
+ParentContainerItem
+
+
+ParentContainerItem
+
+
+
+
+
diff --git a/images/model/collection_profiles_model_er.svg b/images/model/collection_profiles_model_er.svg
new file mode 100644
index 00000000..a73745e7
--- /dev/null
+++ b/images/model/collection_profiles_model_er.svg
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+CollectionProfile
+
+
+
+Tag->Keyword
+
+
+
+
+
+CollectionProfile->Identifier
+
+
+
+
+
+CollectionProfile->Tag
+
+
+
+
+
+CollectionProfile->Note
+
+
+
+
+
+CollectionProfile->Otu
+
+
+
+
+
+CollectionProfile->PinboardItem
+
+
+
+
+
+CollectionProfile->Role
+
+
+
+
+
+CollectionProfile->VerifierRole
+
+
+
+
+
+CollectionProfile->Container
+
+
+
+
+
+CollectionProfile->Creator
+
+
+
+
+
+CollectionProfile->Project
+
+
+
+
+
+CollectionProfile->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+CollectionProfile
+
+
+
+CollectionProfile
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Container
+
+
+Container
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/common_names_model_er.svg b/images/model/common_names_model_er.svg
new file mode 100644
index 00000000..9a9e51a6
--- /dev/null
+++ b/images/model/common_names_model_er.svg
@@ -0,0 +1,418 @@
+
+
+
+
+
+
+CommonName
+
+
+
+AlternateValue->AlternateValueLanguage
+
+
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+
+
+CommonName->AlternateValue
+
+
+
+
+
+CommonName->Citation
+
+
+
+
+
+CommonName->DataAttribute
+
+
+
+
+
+CommonName->Identifier
+
+
+
+
+
+CommonName->Tag
+
+
+
+
+
+CommonName->Note
+
+
+
+
+
+CommonName->Source
+
+
+
+
+
+
+
+
+CommonName->Otu
+
+
+
+
+
+CommonName->TaxonName
+
+
+
+
+
+
+
+
+CommonName->PinboardItem
+
+
+
+
+
+CommonName->Role
+
+
+
+
+
+CommonName->SubsequentCitation
+
+
+
+
+
+CommonName->VerifierRole
+
+
+
+
+
+CommonName->Creator
+
+
+
+
+
+CommonName->GeographicArea
+
+
+
+
+
+CommonName->Language
+
+
+
+
+
+CommonName->Project
+
+
+
+
+
+CommonName->Updater
+
+
+
+
+
+CommonName->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+TaxonName
+
+
+TaxonName
+
+
+
+
+
+CommonName
+
+
+
+CommonName
+
+
+
+
+
+AlternateValueLanguage
+
+
+AlternateValueLanguage
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+GeographicArea
+
+
+GeographicArea
+
+
+
+
+
+Language
+
+
+Language
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/confidences_model_er.svg b/images/model/confidences_model_er.svg
new file mode 100644
index 00000000..d012cf7a
--- /dev/null
+++ b/images/model/confidences_model_er.svg
@@ -0,0 +1,295 @@
+
+
+
+
+
+
+Confidence
+
+
+
+Confidence->Citation
+
+
+
+
+
+Confidence->Source
+
+
+
+
+
+
+
+
+Confidence->ControlledVocabularyTerm
+
+
+
+
+
+Confidence->PinboardItem
+
+
+
+
+
+Confidence->Role
+
+
+
+
+
+Confidence->SubsequentCitation
+
+
+
+
+
+Confidence->VerifierRole
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Confidence->Creator
+
+
+
+
+
+Confidence->Project
+
+
+
+
+
+Confidence->Updater
+
+
+
+
+
+Confidence->OriginCitation
+
+
+
+
+
+
+
+
+Confidence->Objects with Confidences
+
+
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Confidence
+
+
+
+Confidence
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+ControlledVocabularyTerm
+
+
+ControlledVocabularyTerm
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
+Objects with Confidences
+
+
+Objects with Confidences
+
+
+
+
+
diff --git a/images/model/container_items_model_er.svg b/images/model/container_items_model_er.svg
new file mode 100644
index 00000000..629cc71a
--- /dev/null
+++ b/images/model/container_items_model_er.svg
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+ContainerItem
+
+
+
+ContainerItem->AncestorHierarchy
+
+
+
+
+
+ContainerItem->Child
+
+
+
+
+
+ContainerItem->DescendantHierarchy
+
+
+
+
+
+ContainerItem->PinboardItem
+
+
+
+
+
+ContainerItem->Role
+
+
+
+
+
+ContainerItem->VerifierRole
+
+
+
+
+
+ContainerItem->Creator
+
+
+
+
+
+ContainerItem->Parent
+
+
+
+
+
+ContainerItem->Project
+
+
+
+
+
+ContainerItem->Updater
+
+
+
+
+
+ContainerItem->Objects with Container items
+
+
+
+
+
+AncestorHierarchy->SelfAndAncestor
+
+
+
+
+
+DescendantHierarchy->SelfAndDescendant
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+ContainerItem
+
+
+
+ContainerItem
+
+
+
+
+
+AncestorHierarchy
+
+
+AncestorHierarchy
+
+
+
+
+
+Child
+
+
+Child
+
+
+
+
+
+DescendantHierarchy
+
+
+DescendantHierarchy
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SelfAndAncestor
+
+
+SelfAndAncestor
+
+
+
+
+
+SelfAndDescendant
+
+
+SelfAndDescendant
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Parent
+
+
+Parent
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Container items
+
+
+Objects with Container items
+
+
+
+
+
diff --git a/images/model/containers_model_er.svg b/images/model/containers_model_er.svg
new file mode 100644
index 00000000..400b0aaf
--- /dev/null
+++ b/images/model/containers_model_er.svg
@@ -0,0 +1,291 @@
+
+
+
+
+
+
+Container
+
+
+
+Tag->Keyword
+
+
+
+
+
+Container->Identifier
+
+
+
+
+
+Container->Tag
+
+
+
+
+
+Container->Container
+
+
+
+
+
+
+
+
+Container->CollectionProfile
+
+
+
+
+
+Container->Label
+
+
+
+
+
+Container->LoanItem
+
+
+
+
+
+Container->Loan
+
+
+
+
+
+
+
+
+Container->PinboardItem
+
+
+
+
+
+Container->Role
+
+
+
+
+
+Container->VerifierRole
+
+
+
+
+
+Container->Creator
+
+
+
+
+
+Container->Project
+
+
+
+
+
+Container->Updater
+
+
+
+
+
+Container->ContainerItem
+
+
+
+
+
+
+
+
+
+Container->ParentContainerItem
+
+
+
+
+
+
+
+
+LoanItem->Loan
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Container
+
+
+
+Container
+
+
+
+
+
+CollectionProfile
+
+
+CollectionProfile
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+Label
+
+
+Label
+
+
+
+
+
+LoanItem
+
+
+LoanItem
+
+
+
+
+
+Loan
+
+
+Loan
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+ContainerItem
+
+
+ContainerItem
+
+
+
+
+
+ParentContainerItem
+
+
+ParentContainerItem
+
+
+
+
+
diff --git a/images/model/contents_model_er.svg b/images/model/contents_model_er.svg
new file mode 100644
index 00000000..051ea6f2
--- /dev/null
+++ b/images/model/contents_model_er.svg
@@ -0,0 +1,413 @@
+
+
+
+
+
+
+Content
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+
+
+Content->Citation
+
+
+
+
+
+Content->Confidence
+
+
+
+
+
+Content->DataAttribute
+
+
+
+
+
+Content->Depiction
+
+
+
+
+
+Content->Attribution
+
+
+
+
+
+
+
+
+Content->Source
+
+
+
+
+
+
+
+
+Content->Otu
+
+
+
+
+
+Content->PinboardItem
+
+
+
+
+
+Content->Role
+
+
+
+
+
+Content->SubsequentCitation
+
+
+
+
+
+Content->Topic
+
+
+
+
+
+Content->VerifierRole
+
+
+
+
+
+Content->Version
+
+
+
+
+
+Content->Creator
+
+
+
+
+
+Content->Language
+
+
+
+
+
+Content->Project
+
+
+
+
+
+Content->Updater
+
+
+
+
+
+Content->OriginCitation
+
+
+
+
+
+
+
+
+Content->PublicContent
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Attribution
+
+
+Attribution
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+Content
+
+
+
+Content
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Language
+
+
+Language
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
+PublicContent
+
+
+PublicContent
+
+
+
+
+
diff --git a/images/model/controlled_vocabulary_terms_model_er.svg b/images/model/controlled_vocabulary_terms_model_er.svg
new file mode 100644
index 00000000..ba587bca
--- /dev/null
+++ b/images/model/controlled_vocabulary_terms_model_er.svg
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+ControlledVocabularyTerm
+
+
+
+AlternateValue->AlternateValueLanguage
+
+
+
+
+
+ControlledVocabularyTerm->AlternateValue
+
+
+
+
+
+ControlledVocabularyTerm->ObservationMatrixRowItem
+
+
+
+
+
+ControlledVocabularyTerm->ObservationMatrixColumnItem
+
+
+
+
+
+ControlledVocabularyTerm->PinboardItem
+
+
+
+
+
+ControlledVocabularyTerm->Role
+
+
+
+
+
+ControlledVocabularyTerm->VerifierRole
+
+
+
+
+
+ControlledVocabularyTerm->Version
+
+
+
+
+
+ControlledVocabularyTerm->Creator
+
+
+
+
+
+ControlledVocabularyTerm->Project
+
+
+
+
+
+ControlledVocabularyTerm->Updater
+
+
+
+
+
+ObservationMatrixRowItem->ObservationMatrix
+
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+ControlledVocabularyTerm
+
+
+
+ControlledVocabularyTerm
+
+
+
+
+
+AlternateValueLanguage
+
+
+AlternateValueLanguage
+
+
+
+
+
+ObservationMatrixRowItem
+
+
+ObservationMatrixRowItem
+
+
+
+
+
+ObservationMatrix
+
+
+ObservationMatrix
+
+
+
+
+
+ObservationMatrixColumnItem
+
+
+ObservationMatrixColumnItem
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/data/specimen_object_graph_eg1.svg b/images/model/data/specimen_object_graph_eg1.svg
new file mode 100644
index 00000000..688d689b
--- /dev/null
+++ b/images/model/data/specimen_object_graph_eg1.svg
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CollectionObject 1131633, 5c5ff4a9-0986-4748-a8ea-5573fccb4e36
+
+
+
+ 5c5ff4a9-0986-4748-a8ea-5573fccb4e36
+
+
+
+ crowPontiac, IllMay 15, 1934J.C. McConaha
+
+
+
+
+
+
+
+ McConaha, J.C.
+
+
+
+ Georeference
+
+
+
+ Illinois Natural History Survey (INHS)
+
+
+
+ Female
+
+
+
+ Myrsidea interrupta (Osborn, 1896) by Emerson on 1947
+
+
+
+ Myrsidea interrupta (Osborn, 1896)
+
+
+
+ Taxon Code 48026
+
+
+
+ Myrsidea interrupta (Osborn, 1896)
+
+
+
+ Myrsidea
+
+
+
+ Menoponidae
+
+
+
+ Amblycera
+
+
+
+ Psocodea
+
+
+
+ Insecta Linnaeus, 1758
+
+
+
+
+
+
+
+ Linnaeus, Carolus
+
+
+
+ Q1043
+
+
+
+ Arthropoda
+
+
+
+ Animalia
+
+
+
+ Root
+
+
+
+
+
+
+
+ Emerson, K. C.
+
+
+
+ Corvus brachyrhynchos Brehm, 1822
+
+
+
+ Has biological relationship with
+
+
diff --git a/images/model/data_attributes_model_er.svg b/images/model/data_attributes_model_er.svg
new file mode 100644
index 00000000..0b3729f9
--- /dev/null
+++ b/images/model/data_attributes_model_er.svg
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+DataAttribute
+
+
+
+DataAttribute->Citation
+
+
+
+
+
+DataAttribute->Source
+
+
+
+
+
+
+
+
+DataAttribute->PinboardItem
+
+
+
+
+
+DataAttribute->Role
+
+
+
+
+
+DataAttribute->SubsequentCitation
+
+
+
+
+
+DataAttribute->VerifierRole
+
+
+
+
+
+DataAttribute->Creator
+
+
+
+
+
+DataAttribute->Predicate
+
+
+
+
+
+DataAttribute->Project
+
+
+
+
+
+DataAttribute->Updater
+
+
+
+
+
+DataAttribute->OriginCitation
+
+
+
+
+
+
+
+
+DataAttribute->Objects with Data attributes
+
+
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+DataAttribute
+
+
+
+DataAttribute
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Predicate
+
+
+Predicate
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
+Objects with Data attributes
+
+
+Objects with Data attributes
+
+
+
+
+
diff --git a/images/model/dataset_record_fields_model_er.svg b/images/model/dataset_record_fields_model_er.svg
new file mode 100644
index 00000000..e4be5da0
--- /dev/null
+++ b/images/model/dataset_record_fields_model_er.svg
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+DatasetRecordField
+
+
+
+DatasetRecordField->PinboardItem
+
+
+
+
+
+DatasetRecordField->Role
+
+
+
+
+
+DatasetRecordField->VerifierRole
+
+
+
+
+
+DatasetRecordField->DatasetRecord
+
+
+
+
+
+DatasetRecordField->ImportDataset
+
+
+
+
+
+
+
+
+DatasetRecordField->Project
+
+
+
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+DatasetRecordField
+
+
+
+DatasetRecordField
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+DatasetRecord
+
+
+DatasetRecord
+
+
+
+
+
+ImportDataset
+
+
+ImportDataset
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
diff --git a/images/model/dataset_records_model_er.svg b/images/model/dataset_records_model_er.svg
new file mode 100644
index 00000000..87cba224
--- /dev/null
+++ b/images/model/dataset_records_model_er.svg
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+DatasetRecord
+
+
+
+DatasetRecord->PinboardItem
+
+
+
+
+
+DatasetRecord->Role
+
+
+
+
+
+DatasetRecord->VerifierRole
+
+
+
+
+
+DatasetRecord->Creator
+
+
+
+
+
+DatasetRecord->ImportDataset
+
+
+
+
+
+DatasetRecord->Project
+
+
+
+
+
+DatasetRecord->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+DatasetRecord
+
+
+
+DatasetRecord
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+ImportDataset
+
+
+ImportDataset
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/depictions_model_er.svg b/images/model/depictions_model_er.svg
new file mode 100644
index 00000000..d07cb3e8
--- /dev/null
+++ b/images/model/depictions_model_er.svg
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+Depiction
+
+
+
+Depiction->DataAttribute
+
+
+
+
+
+Depiction->Tag
+
+
+
+
+
+Depiction->PinboardItem
+
+
+
+
+
+Depiction->Role
+
+
+
+
+
+Depiction->VerifierRole
+
+
+
+
+
+Depiction->Creator
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+Depiction->Project
+
+
+
+
+
+Depiction->SledImage
+
+
+
+
+
+Depiction->Updater
+
+
+
+
+
+Depiction->SqedDepiction
+
+
+
+
+
+
+
+
+Depiction->Objects with Depictions
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Depiction
+
+
+
+Depiction
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+SledImage
+
+
+SledImage
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+SqedDepiction
+
+
+SqedDepiction
+
+
+
+
+
+Objects with Depictions
+
+
+Objects with Depictions
+
+
+
+
+
diff --git a/images/model/derived_collection_objects_model_er.svg b/images/model/derived_collection_objects_model_er.svg
new file mode 100644
index 00000000..c85f9a3d
--- /dev/null
+++ b/images/model/derived_collection_objects_model_er.svg
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+DerivedCollectionObject
+
+
+
+DerivedCollectionObject->CollectionObject
+
+
+
+
+
+DerivedCollectionObject->PinboardItem
+
+
+
+
+
+DerivedCollectionObject->Role
+
+
+
+
+
+DerivedCollectionObject->VerifierRole
+
+
+
+
+
+DerivedCollectionObject->CollectionObjectObservation
+
+
+
+
+
+DerivedCollectionObject->Creator
+
+
+
+
+
+DerivedCollectionObject->Project
+
+
+
+
+
+DerivedCollectionObject->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+DerivedCollectionObject
+
+
+
+DerivedCollectionObject
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+CollectionObjectObservation
+
+
+CollectionObjectObservation
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/descriptors_model_er.svg b/images/model/descriptors_model_er.svg
new file mode 100644
index 00000000..11799c37
--- /dev/null
+++ b/images/model/descriptors_model_er.svg
@@ -0,0 +1,521 @@
+
+
+
+
+
+
+Descriptor
+
+
+
+AlternateValue->AlternateValueLanguage
+
+
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+Descriptor->AlternateValue
+
+
+
+
+
+Descriptor->Citation
+
+
+
+
+
+Descriptor->Confidence
+
+
+
+
+
+Descriptor->DataAttribute
+
+
+
+
+
+Descriptor->Depiction
+
+
+
+
+
+Descriptor->Identifier
+
+
+
+
+
+Descriptor->Tag
+
+
+
+
+
+Descriptor->Note
+
+
+
+
+
+Descriptor->Observation
+
+
+
+
+
+Descriptor->Source
+
+
+
+
+
+
+
+
+Descriptor->Documentation
+
+
+
+
+
+Descriptor->ObservationMatrixColumn
+
+
+
+
+
+Descriptor->ObservationMatrixColumnItem
+
+
+
+
+
+Descriptor->PinboardItem
+
+
+
+
+
+Descriptor->Role
+
+
+
+
+
+Descriptor->SubsequentCitation
+
+
+
+
+
+Descriptor->VerifierRole
+
+
+
+
+
+Descriptor->Creator
+
+
+
+
+
+Descriptor->Project
+
+
+
+
+
+Descriptor->Updater
+
+
+
+
+
+Descriptor->OriginCitation
+
+
+
+
+
+
+
+
+Observation->Otu
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+Documentation->Document
+
+
+
+
+
+ObservationMatrixColumn->ObservationMatrix
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Descriptor
+
+
+
+Descriptor
+
+
+
+
+
+Observation
+
+
+Observation
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+AlternateValueLanguage
+
+
+AlternateValueLanguage
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Documentation
+
+
+Documentation
+
+
+
+
+
+Document
+
+
+Document
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+ObservationMatrixColumn
+
+
+ObservationMatrixColumn
+
+
+
+
+
+ObservationMatrix
+
+
+ObservationMatrix
+
+
+
+
+
+ObservationMatrixColumnItem
+
+
+ObservationMatrixColumnItem
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/documentation_model_er.svg b/images/model/documentation_model_er.svg
new file mode 100644
index 00000000..f98492ba
--- /dev/null
+++ b/images/model/documentation_model_er.svg
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+Documentation
+
+
+
+Tag->Keyword
+
+
+
+
+
+Documentation->Identifier
+
+
+
+
+
+Documentation->Tag
+
+
+
+
+
+Documentation->Note
+
+
+
+
+
+Documentation->PinboardItem
+
+
+
+
+
+Documentation->Role
+
+
+
+
+
+Documentation->VerifierRole
+
+
+
+
+
+Documentation->Creator
+
+
+
+
+
+Documentation->Document
+
+
+
+
+
+Documentation->Project
+
+
+
+
+
+Documentation->Updater
+
+
+
+
+
+Documentation->Objects with Documentation
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Documentation
+
+
+
+Documentation
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Document
+
+
+Document
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Documentation
+
+
+Objects with Documentation
+
+
+
+
+
diff --git a/images/model/documents_model_er.svg b/images/model/documents_model_er.svg
new file mode 100644
index 00000000..f286da48
--- /dev/null
+++ b/images/model/documents_model_er.svg
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+Document
+
+
+
+Tag->Keyword
+
+
+
+
+
+Document->Identifier
+
+
+
+
+
+Document->Tag
+
+
+
+
+
+Document->Note
+
+
+
+
+
+Document->Documentation
+
+
+
+
+
+Document->PinboardItem
+
+
+
+
+
+Document->Role
+
+
+
+
+
+Document->VerifierRole
+
+
+
+
+
+Document->Creator
+
+
+
+
+
+Document->Project
+
+
+
+
+
+Document->Updater
+
+
+
+
+
+Documentation->Source
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Document
+
+
+
+Document
+
+
+
+
+
+Documentation
+
+
+Documentation
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/er.svg b/images/model/er.svg
new file mode 100644
index 00000000..e6966f3c
--- /dev/null
+++ b/images/model/er.svg
@@ -0,0 +1,434 @@
+
+
+
+
+
+
+G
+
+Generated 2022-02-08 10:47:04 -0600 via 'rake tw:docs:er'.
+
+
+CollectingEvent->CollectionObject
+
+
+
+
+
+CollectionObject->Source
+
+
+
+
+
+CollectionObject->BiologicalAssociation
+
+
+
+
+
+CollectionObject->Observation
+
+
+
+
+
+CollectionObject->TypeMaterial
+
+
+
+
+
+CollectionObject->TaxonDetermination
+
+
+
+
+
+Otu->AssertedDistribution
+
+
+
+
+
+Otu->BiologicalAssociation
+
+
+
+
+
+Otu->Observation
+
+
+
+
+
+Otu->TaxonDetermination
+
+
+
+
+
+Otu->Identifier
+
+
+
+
+
+Otu->Depiction
+
+
+
+
+
+TaxonName->Otu
+
+
+
+
+
+TaxonName->TypeMaterial
+
+
+
+
+
+Descriptor->Observation
+
+
+
+
+
+Source->Citation
+
+
+
+
+
+Source->AlternateValue
+
+
+
+
+
+AssertedDistribution->Confidence
+
+
+
+
+
+Sequence->OriginRelationship
+
+
+
+
+
+ControlledVocabularyTerm->Tag
+
+
+
+
+
+ControlledVocabularyTerm->DataAttribute
+
+
+
+
+
+Image->Depiction
+
+
+
+
+
+Image->Attribution
+
+
+
+
+
+TaxonDetermination->Note
+
+
+
+
+
+TaxonDetermination->ProtocolRelationship
+
+
+
+
+
+Georeference->CollectingEvent
+
+
+
+
+
+Person->Role:Collector
+
+
+
+
+
+Role:Collector->CollectionObject
+
+
+
+
+
+CollectingEvent
+
+
+CollectingEvent
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+TaxonName
+
+
+TaxonName
+
+
+
+
+
+Descriptor
+
+
+Descriptor
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+AssertedDistribution
+
+
+AssertedDistribution
+
+
+
+
+
+BiologicalAssociation
+
+
+BiologicalAssociation
+
+
+
+
+
+Observation
+
+
+Observation
+
+
+
+
+
+Sequence
+
+
+Sequence
+
+
+
+
+
+ControlledVocabularyTerm
+
+
+ControlledVocabularyTerm
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+TypeMaterial
+
+
+TypeMaterial
+
+
+
+
+
+TaxonDetermination
+
+
+TaxonDetermination
+
+
+
+
+
+Georeference
+
+
+Georeference
+
+
+
+
+
+OriginRelationship
+
+
+OriginRelationship
+
+
+
+
+
+Person
+
+
+Person
+
+
+
+
+
+Role:Collector
+
+
+Role:Collector
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+ProtocolRelationship
+
+
+ProtocolRelationship
+
+
+
+
+
+Attribution
+
+
+Attribution
+
+
+
+
+
diff --git a/images/model/extracts_model_er.svg b/images/model/extracts_model_er.svg
new file mode 100644
index 00000000..6b515d45
--- /dev/null
+++ b/images/model/extracts_model_er.svg
@@ -0,0 +1,478 @@
+
+
+
+
+
+
+Extract
+
+
+
+ProtocolRelationship->Protocol
+
+
+
+
+
+Extract->DataAttribute
+
+
+
+
+
+Extract->Identifier
+
+
+
+
+
+Extract->ProtocolRelationship
+
+
+
+
+
+Extract->RelatedOriginRelationship
+
+
+
+
+
+Extract->OriginRelationship
+
+
+
+
+
+Extract->ExtractorRole
+
+
+
+
+
+Extract->PinboardItem
+
+
+
+
+
+Extract->Role
+
+
+
+
+
+Extract->VerifierRole
+
+
+
+
+
+Extract->Creator
+
+
+
+
+
+Extract->Project
+
+
+
+
+
+Extract->Repository
+
+
+
+
+
+Extract->Updater
+
+
+
+
+
+Extract->Container
+
+
+
+
+
+
+
+
+Extract->ContainerItem
+
+
+
+
+
+
+
+
+Extract->ParentContainerItem
+
+
+
+
+
+
+
+
+RelatedOriginRelationship->CollectionObject
+
+
+
+
+
+RelatedOriginRelationship->Otu
+
+
+
+
+
+RelatedOriginRelationship->Extract
+
+
+
+
+
+RelatedOriginRelationship->OriginExtract
+
+
+
+
+
+RelatedOriginRelationship->OriginLot
+
+
+
+
+
+RelatedOriginRelationship->OriginOtu
+
+
+
+
+
+RelatedOriginRelationship->OriginRangedLot
+
+
+
+
+
+RelatedOriginRelationship->OriginSpecimen
+
+
+
+
+
+OriginRelationship->Sequence
+
+
+
+
+
+
+OriginRelationship->DerivedExtract
+
+
+
+
+
+OriginRelationship->DerivedSequence
+
+
+
+
+
+ExtractorRole->Extractor
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+ProtocolRelationship
+
+
+ProtocolRelationship
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+Sequence
+
+
+Sequence
+
+
+
+
+
+Extract
+
+
+
+Extract
+
+
+
+
+
+RelatedOriginRelationship
+
+
+RelatedOriginRelationship
+
+
+
+
+
+OriginRelationship
+
+
+OriginRelationship
+
+
+
+
+
+DerivedExtract
+
+
+DerivedExtract
+
+
+
+
+
+DerivedSequence
+
+
+DerivedSequence
+
+
+
+
+
+ExtractorRole
+
+
+ExtractorRole
+
+
+
+
+
+Extractor
+
+
+Extractor
+
+
+
+
+
+OriginExtract
+
+
+OriginExtract
+
+
+
+
+
+OriginLot
+
+
+OriginLot
+
+
+
+
+
+OriginOtu
+
+
+OriginOtu
+
+
+
+
+
+OriginRangedLot
+
+
+OriginRangedLot
+
+
+
+
+
+OriginSpecimen
+
+
+OriginSpecimen
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Protocol
+
+
+Protocol
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Repository
+
+
+Repository
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Container
+
+
+Container
+
+
+
+
+
+ContainerItem
+
+
+ContainerItem
+
+
+
+
+
+ParentContainerItem
+
+
+ParentContainerItem
+
+
+
+
+
diff --git a/images/model/gene_attributes_model_er.svg b/images/model/gene_attributes_model_er.svg
new file mode 100644
index 00000000..b008b10c
--- /dev/null
+++ b/images/model/gene_attributes_model_er.svg
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+GeneAttribute
+
+
+
+Tag->Keyword
+
+
+
+
+
+GeneAttribute->Identifier
+
+
+
+
+
+GeneAttribute->Tag
+
+
+
+
+
+GeneAttribute->Note
+
+
+
+
+
+GeneAttribute->Descriptor
+
+
+
+
+
+GeneAttribute->Sequence
+
+
+
+
+
+GeneAttribute->PinboardItem
+
+
+
+
+
+GeneAttribute->Role
+
+
+
+
+
+GeneAttribute->VerifierRole
+
+
+
+
+
+GeneAttribute->Creator
+
+
+
+
+
+GeneAttribute->Project
+
+
+
+
+
+GeneAttribute->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Descriptor
+
+
+Descriptor
+
+
+
+
+
+Sequence
+
+
+Sequence
+
+
+
+
+
+GeneAttribute
+
+
+
+GeneAttribute
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/geographic_area_types_model_er.svg b/images/model/geographic_area_types_model_er.svg
new file mode 100644
index 00000000..36d6b4e4
--- /dev/null
+++ b/images/model/geographic_area_types_model_er.svg
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+GeographicAreaType
+
+
+
+GeographicAreaType->GeographicArea
+
+
+
+
+
+GeographicAreaType->PinboardItem
+
+
+
+
+
+GeographicAreaType->Role
+
+
+
+
+
+GeographicAreaType->VerifierRole
+
+
+
+
+
+GeographicAreaType->Creator
+
+
+
+
+
+GeographicAreaType->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+GeographicAreaType
+
+
+
+GeographicAreaType
+
+
+
+
+
+GeographicArea
+
+
+GeographicArea
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/geographic_areas_geographic_items_model_er.svg b/images/model/geographic_areas_geographic_items_model_er.svg
new file mode 100644
index 00000000..68bf9e0b
--- /dev/null
+++ b/images/model/geographic_areas_geographic_items_model_er.svg
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+GeographicAreasGeographicItem
+
+
+
+GeographicAreasGeographicItem->PinboardItem
+
+
+
+
+
+GeographicAreasGeographicItem->Role
+
+
+
+
+
+GeographicAreasGeographicItem->VerifierRole
+
+
+
+
+
+GeographicAreasGeographicItem->GeographicArea
+
+
+
+
+
+GeographicAreasGeographicItem->GeographicItem
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+GeographicAreasGeographicItem
+
+
+
+GeographicAreasGeographicItem
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+GeographicArea
+
+
+GeographicArea
+
+
+
+
+
+GeographicItem
+
+
+GeographicItem
+
+
+
+
+
diff --git a/images/model/geographic_areas_model_er.svg b/images/model/geographic_areas_model_er.svg
new file mode 100644
index 00000000..0aa984b1
--- /dev/null
+++ b/images/model/geographic_areas_model_er.svg
@@ -0,0 +1,325 @@
+
+
+
+
+
+
+GeographicArea
+
+
+
+GeographicArea->AssertedDistribution
+
+
+
+
+
+GeographicArea->CollectingEvent
+
+
+
+
+
+GeographicArea->AncestorHierarchy
+
+
+
+
+
+GeographicArea->Child
+
+
+
+
+
+GeographicArea->DescendantHierarchy
+
+
+
+
+
+GeographicArea->GeographicAreasGeographicItem
+
+
+
+
+
+GeographicArea->PinboardItem
+
+
+
+
+
+GeographicArea->Role
+
+
+
+
+
+GeographicArea->VerifierRole
+
+
+
+
+
+GeographicArea->Creator
+
+
+
+
+
+GeographicArea->GeographicAreaType
+
+
+
+
+
+GeographicArea->Level0
+
+
+
+
+
+GeographicArea->Level1
+
+
+
+
+
+GeographicArea->Level2
+
+
+
+
+
+GeographicArea->Parent
+
+
+
+
+
+GeographicArea->Updater
+
+
+
+
+
+AncestorHierarchy->SelfAndAncestor
+
+
+
+
+
+DescendantHierarchy->SelfAndDescendant
+
+
+
+
+
+GeographicAreasGeographicItem->GeographicItem
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+AssertedDistribution
+
+
+AssertedDistribution
+
+
+
+
+
+CollectingEvent
+
+
+CollectingEvent
+
+
+
+
+
+GeographicArea
+
+
+
+GeographicArea
+
+
+
+
+
+AncestorHierarchy
+
+
+AncestorHierarchy
+
+
+
+
+
+Child
+
+
+Child
+
+
+
+
+
+DescendantHierarchy
+
+
+DescendantHierarchy
+
+
+
+
+
+GeographicAreasGeographicItem
+
+
+GeographicAreasGeographicItem
+
+
+
+
+
+GeographicItem
+
+
+GeographicItem
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SelfAndAncestor
+
+
+SelfAndAncestor
+
+
+
+
+
+SelfAndDescendant
+
+
+SelfAndDescendant
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+GeographicAreaType
+
+
+GeographicAreaType
+
+
+
+
+
+Level0
+
+
+Level0
+
+
+
+
+
+Level1
+
+
+Level1
+
+
+
+
+
+Level2
+
+
+Level2
+
+
+
+
+
+Parent
+
+
+Parent
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/geographic_items_model_er.svg b/images/model/geographic_items_model_er.svg
new file mode 100644
index 00000000..d3a39ec3
--- /dev/null
+++ b/images/model/geographic_items_model_er.svg
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+GeographicItem
+
+
+
+GeographicItem->GeoreferencesThroughErrorGeographicItem
+
+
+
+
+
+GeographicItem->Georeference
+
+
+
+
+
+GeographicItem->GadmGeographicArea
+
+
+
+
+
+GeographicItem->GeographicAreasGeographicItem
+
+
+
+
+
+GeographicItem->NeGeographicArea
+
+
+
+
+
+GeographicItem->PinboardItem
+
+
+
+
+
+GeographicItem->Role
+
+
+
+
+
+GeographicItem->TdwgGeographicArea
+
+
+
+
+
+GeographicItem->VerifierRole
+
+
+
+
+
+GeographicItem->Creator
+
+
+
+
+
+GeographicItem->Updater
+
+
+
+
+
+GeoreferencesThroughErrorGeographicItem->CollectingEventsThroughGeoreferenceErrorGeographicItem
+
+
+
+
+
+Georeference->CollectingEventsThroughGeoreference
+
+
+
+
+
+GeographicArea->GeographicAreaType
+
+
+
+
+
+GeographicArea->ParentGeographicArea
+
+
+
+
+
+GeographicAreasGeographicItem->GeographicArea
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+GeographicItem
+
+
+
+GeographicItem
+
+
+
+
+
+GeoreferencesThroughErrorGeographicItem
+
+
+GeoreferencesThroughErrorGeographicItem
+
+
+
+
+
+CollectingEventsThroughGeoreferenceErrorGeographicItem
+
+
+CollectingEventsThroughGeoreferenceErrorGeographicItem
+
+
+
+
+
+Georeference
+
+
+Georeference
+
+
+
+
+
+CollectingEventsThroughGeoreference
+
+
+CollectingEventsThroughGeoreference
+
+
+
+
+
+GadmGeographicArea
+
+
+GadmGeographicArea
+
+
+
+
+
+GeographicArea
+
+
+GeographicArea
+
+
+
+
+
+GeographicAreaType
+
+
+GeographicAreaType
+
+
+
+
+
+GeographicAreasGeographicItem
+
+
+GeographicAreasGeographicItem
+
+
+
+
+
+NeGeographicArea
+
+
+NeGeographicArea
+
+
+
+
+
+ParentGeographicArea
+
+
+ParentGeographicArea
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+TdwgGeographicArea
+
+
+TdwgGeographicArea
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/georeferences_model_er.svg b/images/model/georeferences_model_er.svg
new file mode 100644
index 00000000..ac17030d
--- /dev/null
+++ b/images/model/georeferences_model_er.svg
@@ -0,0 +1,460 @@
+
+
+
+
+
+
+Georeference
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+ProtocolRelationship->Protocol
+
+
+
+
+
+CollectingEvent->CollectionObject
+
+
+
+
+
+
+
+Georeference->Citation
+
+
+
+
+
+Georeference->Confidence
+
+
+
+
+
+Georeference->DataAttribute
+
+
+
+
+
+Georeference->Tag
+
+
+
+
+
+Georeference->Note
+
+
+
+
+
+Georeference->ProtocolRelationship
+
+
+
+
+
+Georeference->CollectingEvent
+
+
+
+
+
+Georeference->Source
+
+
+
+
+
+
+
+
+Georeference->GeoreferencerRole
+
+
+
+
+
+Georeference->PinboardItem
+
+
+
+
+
+Georeference->Role
+
+
+
+
+
+Georeference->SubsequentCitation
+
+
+
+
+
+Georeference->VerifierRole
+
+
+
+
+
+Georeference->Creator
+
+
+
+
+
+Georeference->ErrorGeographicItem
+
+
+
+
+
+Georeference->GeographicItem
+
+
+
+
+
+Georeference->Project
+
+
+
+
+
+Georeference->Updater
+
+
+
+
+
+Georeference->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+GeoreferencerRole->Georeferencer
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+ProtocolRelationship
+
+
+ProtocolRelationship
+
+
+
+
+
+CollectingEvent
+
+
+CollectingEvent
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Georeference
+
+
+
+Georeference
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+GeoreferencerRole
+
+
+GeoreferencerRole
+
+
+
+
+
+Georeferencer
+
+
+Georeferencer
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Protocol
+
+
+Protocol
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+ErrorGeographicItem
+
+
+ErrorGeographicItem
+
+
+
+
+
+GeographicItem
+
+
+GeographicItem
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/identifiers_model_er.svg b/images/model/identifiers_model_er.svg
new file mode 100644
index 00000000..9d2cde7b
--- /dev/null
+++ b/images/model/identifiers_model_er.svg
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+Identifier
+
+
+
+Identifier->Label
+
+
+
+
+
+Identifier->PinboardItem
+
+
+
+
+
+Identifier->Role
+
+
+
+
+
+Identifier->VerifierRole
+
+
+
+
+
+Identifier->Creator
+
+
+
+
+
+Identifier->Namespace
+
+
+
+
+
+Identifier->Project
+
+
+
+
+
+Identifier->Updater
+
+
+
+
+
+Identifier->Objects with Identifiers
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Identifier
+
+
+
+Identifier
+
+
+
+
+
+Label
+
+
+Label
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Namespace
+
+
+Namespace
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Identifiers
+
+
+Objects with Identifiers
+
+
+
+
+
diff --git a/images/model/images_model_er.svg b/images/model/images_model_er.svg
new file mode 100644
index 00000000..8567cf29
--- /dev/null
+++ b/images/model/images_model_er.svg
@@ -0,0 +1,586 @@
+
+
+
+
+
+
+Image
+
+
+
+Depiction->CollectingEvent
+
+
+
+
+
+Depiction->CollectionObject
+
+
+
+
+
+Depiction->Descriptor
+
+
+
+
+
+Depiction->Observation
+
+
+
+
+
+Depiction->Otu
+
+
+
+
+
+Depiction->TaxonName
+
+
+
+
+
+Depiction->CharacterState
+
+
+
+
+
+Depiction->CollectionObjectObservation
+
+
+
+
+
+Depiction->Content
+
+
+
+
+
+Depiction->Label
+
+
+
+
+
+Depiction->Loan
+
+
+
+
+
+Depiction->Person
+
+
+
+
+
+Depiction->TaxonDetermination
+
+
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+ProtocolRelationship->Protocol
+
+
+
+
+
+
+
+Image->Depiction
+
+
+
+
+
+Image->Citation
+
+
+
+
+
+Image->Identifier
+
+
+
+
+
+Image->Tag
+
+
+
+
+
+Image->Note
+
+
+
+
+
+Image->ProtocolRelationship
+
+
+
+
+
+Image->Attribution
+
+
+
+
+
+
+
+
+Image->Source
+
+
+
+
+
+
+
+
+Image->PinboardItem
+
+
+
+
+
+Image->Role
+
+
+
+
+
+Image->SubsequentCitation
+
+
+
+
+
+Image->VerifierRole
+
+
+
+
+
+Image->Creator
+
+
+
+
+
+Image->Project
+
+
+
+
+
+Image->Updater
+
+
+
+
+
+Image->OriginCitation
+
+
+
+
+
+
+
+
+Image->SledImage
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+ProtocolRelationship
+
+
+ProtocolRelationship
+
+
+
+
+
+Attribution
+
+
+Attribution
+
+
+
+
+
+CollectingEvent
+
+
+CollectingEvent
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Descriptor
+
+
+Descriptor
+
+
+
+
+
+Observation
+
+
+Observation
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+TaxonName
+
+
+TaxonName
+
+
+
+
+
+Image
+
+
+
+Image
+
+
+
+
+
+CharacterState
+
+
+CharacterState
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+CollectionObjectObservation
+
+
+CollectionObjectObservation
+
+
+
+
+
+Content
+
+
+Content
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+Label
+
+
+Label
+
+
+
+
+
+Loan
+
+
+Loan
+
+
+
+
+
+Person
+
+
+Person
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Protocol
+
+
+Protocol
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+TaxonDetermination
+
+
+TaxonDetermination
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
+SledImage
+
+
+SledImage
+
+
+
+
+
diff --git a/images/model/import_datasets_model_er.svg b/images/model/import_datasets_model_er.svg
new file mode 100644
index 00000000..eff1e72c
--- /dev/null
+++ b/images/model/import_datasets_model_er.svg
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+ImportDataset
+
+
+
+ImportDataset->DatasetRecordField
+
+
+
+
+
+ImportDataset->DatasetRecord
+
+
+
+
+
+ImportDataset->OriginRelationship
+
+
+
+
+
+ImportDataset->PinboardItem
+
+
+
+
+
+ImportDataset->RelatedOriginRelationship
+
+
+
+
+
+ImportDataset->Role
+
+
+
+
+
+ImportDataset->VerifierRole
+
+
+
+
+
+ImportDataset->Creator
+
+
+
+
+
+ImportDataset->Project
+
+
+
+
+
+ImportDataset->Updater
+
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+ImportDataset
+
+
+
+ImportDataset
+
+
+
+
+
+DatasetRecordField
+
+
+DatasetRecordField
+
+
+
+
+
+DatasetRecord
+
+
+DatasetRecord
+
+
+
+
+
+OriginRelationship
+
+
+OriginRelationship
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+RelatedOriginRelationship
+
+
+RelatedOriginRelationship
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/labels_model_er.svg b/images/model/labels_model_er.svg
new file mode 100644
index 00000000..f784e388
--- /dev/null
+++ b/images/model/labels_model_er.svg
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+Label
+
+
+
+Depiction->Image
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+Label->Depiction
+
+
+
+
+
+Label->Tag
+
+
+
+
+
+Label->Note
+
+
+
+
+
+Label->PinboardItem
+
+
+
+
+
+Label->Role
+
+
+
+
+
+Label->VerifierRole
+
+
+
+
+
+Label->Creator
+
+
+
+
+
+Label->Project
+
+
+
+
+
+Label->Updater
+
+
+
+
+
+Label->Objects with Labels
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Label
+
+
+
+Label
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Labels
+
+
+Objects with Labels
+
+
+
+
+
diff --git a/images/model/languages_model_er.svg b/images/model/languages_model_er.svg
new file mode 100644
index 00000000..573266a4
--- /dev/null
+++ b/images/model/languages_model_er.svg
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+Language
+
+
+
+Language->Source
+
+
+
+
+
+Language->AlternateValueTranslation
+
+
+
+
+
+Language->PinboardItem
+
+
+
+
+
+Language->Role
+
+
+
+
+
+Language->Serial
+
+
+
+
+
+Language->VerifierRole
+
+
+
+
+
+Language->Creator
+
+
+
+
+
+Language->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Language
+
+
+
+Language
+
+
+
+
+
+AlternateValueTranslation
+
+
+AlternateValueTranslation
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+Serial
+
+
+Serial
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/loan_items_model_er.svg b/images/model/loan_items_model_er.svg
new file mode 100644
index 00000000..6080dd94
--- /dev/null
+++ b/images/model/loan_items_model_er.svg
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+LoanItem
+
+
+
+Tag->Keyword
+
+
+
+
+
+LoanItem->DataAttribute
+
+
+
+
+
+LoanItem->Tag
+
+
+
+
+
+LoanItem->Note
+
+
+
+
+
+LoanItem->PinboardItem
+
+
+
+
+
+LoanItem->Role
+
+
+
+
+
+LoanItem->VerifierRole
+
+
+
+
+
+LoanItem->Creator
+
+
+
+
+
+LoanItem->Loan
+
+
+
+
+
+LoanItem->Project
+
+
+
+
+
+LoanItem->Updater
+
+
+
+
+
+LoanItem->Objects with Loan items
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+LoanItem
+
+
+
+LoanItem
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Loan
+
+
+Loan
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Loan items
+
+
+Objects with Loan items
+
+
+
+
+
diff --git a/images/model/loans_model_er.svg b/images/model/loans_model_er.svg
new file mode 100644
index 00000000..5df87f58
--- /dev/null
+++ b/images/model/loans_model_er.svg
@@ -0,0 +1,372 @@
+
+
+
+
+
+
+Loan
+
+
+
+Depiction->Image
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+Loan->DataAttribute
+
+
+
+
+
+Loan->Depiction
+
+
+
+
+
+Loan->Identifier
+
+
+
+
+
+Loan->Tag
+
+
+
+
+
+Loan->Note
+
+
+
+
+
+Loan->Documentation
+
+
+
+
+
+Loan->LoanItem
+
+
+
+
+
+Loan->LoanRecipientRole
+
+
+
+
+
+Loan->LoanSupervisorRole
+
+
+
+
+
+Loan->Role
+
+
+
+
+
+Loan->PinboardItem
+
+
+
+
+
+Loan->VerifierRole
+
+
+
+
+
+Loan->Version
+
+
+
+
+
+Loan->Creator
+
+
+
+
+
+Loan->Project
+
+
+
+
+
+Loan->Updater
+
+
+
+
+
+Documentation->Document
+
+
+
+
+
+LoanRecipientRole->LoanRecipient
+
+
+
+
+
+LoanSupervisorRole->LoanSupervisor
+
+
+
+
+
+Role->Person
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Loan
+
+
+
+Loan
+
+
+
+
+
+Documentation
+
+
+Documentation
+
+
+
+
+
+Document
+
+
+Document
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+LoanItem
+
+
+LoanItem
+
+
+
+
+
+LoanRecipientRole
+
+
+LoanRecipientRole
+
+
+
+
+
+LoanRecipient
+
+
+LoanRecipient
+
+
+
+
+
+LoanSupervisorRole
+
+
+LoanSupervisorRole
+
+
+
+
+
+LoanSupervisor
+
+
+LoanSupervisor
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+Person
+
+
+Person
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/namespaces_model_er.svg b/images/model/namespaces_model_er.svg
new file mode 100644
index 00000000..0a458b29
--- /dev/null
+++ b/images/model/namespaces_model_er.svg
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+Namespace
+
+
+
+Namespace->Identifier
+
+
+
+
+
+Namespace->PinboardItem
+
+
+
+
+
+Namespace->Role
+
+
+
+
+
+Namespace->VerifierRole
+
+
+
+
+
+Namespace->Version
+
+
+
+
+
+Namespace->Creator
+
+
+
+
+
+Namespace->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Namespace
+
+
+
+Namespace
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/notes_model_er.svg b/images/model/notes_model_er.svg
new file mode 100644
index 00000000..e60a90cf
--- /dev/null
+++ b/images/model/notes_model_er.svg
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+Note
+
+
+
+Note->Tag
+
+
+
+
+
+Note->PinboardItem
+
+
+
+
+
+Note->Role
+
+
+
+
+
+Note->VerifierRole
+
+
+
+
+
+Note->Creator
+
+
+
+
+
+Note->Project
+
+
+
+
+
+Note->Updater
+
+
+
+
+
+Note->Objects with Notes
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Note
+
+
+
+Note
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Notes
+
+
+Objects with Notes
+
+
+
+
+
diff --git a/images/model/observation_matrices_model_er.svg b/images/model/observation_matrices_model_er.svg
new file mode 100644
index 00000000..570c34a5
--- /dev/null
+++ b/images/model/observation_matrices_model_er.svg
@@ -0,0 +1,433 @@
+
+
+
+
+
+
+ObservationMatrix
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+
+
+ObservationMatrix->Citation
+
+
+
+
+
+ObservationMatrix->DataAttribute
+
+
+
+
+
+ObservationMatrix->Identifier
+
+
+
+
+
+ObservationMatrix->Tag
+
+
+
+
+
+ObservationMatrix->Note
+
+
+
+
+
+ObservationMatrix->Source
+
+
+
+
+
+
+
+
+ObservationMatrix->ObservationMatrixRow
+
+
+
+
+
+ObservationMatrix->ObservationMatrixColumn
+
+
+
+
+
+ObservationMatrix->ObservationMatrixColumnItem
+
+
+
+
+
+ObservationMatrix->ObservationMatrixRowItem
+
+
+
+
+
+ObservationMatrix->PinboardItem
+
+
+
+
+
+ObservationMatrix->Role
+
+
+
+
+
+ObservationMatrix->SubsequentCitation
+
+
+
+
+
+ObservationMatrix->VerifierRole
+
+
+
+
+
+ObservationMatrix->Creator
+
+
+
+
+
+ObservationMatrix->Project
+
+
+
+
+
+ObservationMatrix->Updater
+
+
+
+
+
+ObservationMatrix->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+ObservationMatrixRow->CollectionObject
+
+
+
+
+
+ObservationMatrixRow->Otu
+
+
+
+
+
+
+ObservationMatrixColumn->Descriptor
+
+
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Descriptor
+
+
+Descriptor
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+ObservationMatrix
+
+
+
+ObservationMatrix
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ObservationMatrixRow
+
+
+ObservationMatrixRow
+
+
+
+
+
+ObservationMatrixColumn
+
+
+ObservationMatrixColumn
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+ObservationMatrixColumnItem
+
+
+ObservationMatrixColumnItem
+
+
+
+
+
+ObservationMatrixRowItem
+
+
+ObservationMatrixRowItem
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/observation_matrix_column_items_model_er.svg b/images/model/observation_matrix_column_items_model_er.svg
new file mode 100644
index 00000000..85df2047
--- /dev/null
+++ b/images/model/observation_matrix_column_items_model_er.svg
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+ObservationMatrixColumnItem
+
+
+
+Tag->Keyword
+
+
+
+
+
+ObservationMatrixColumnItem->Identifier
+
+
+
+
+
+ObservationMatrixColumnItem->Tag
+
+
+
+
+
+ObservationMatrixColumnItem->Note
+
+
+
+
+
+ObservationMatrixColumnItem->PinboardItem
+
+
+
+
+
+ObservationMatrixColumnItem->Role
+
+
+
+
+
+ObservationMatrixColumnItem->VerifierRole
+
+
+
+
+
+ObservationMatrixColumnItem->Creator
+
+
+
+
+
+ObservationMatrixColumnItem->ObservationMatrix
+
+
+
+
+
+ObservationMatrixColumnItem->Project
+
+
+
+
+
+ObservationMatrixColumnItem->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+ObservationMatrixColumnItem
+
+
+
+ObservationMatrixColumnItem
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+ObservationMatrix
+
+
+ObservationMatrix
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/observation_matrix_columns_model_er.svg b/images/model/observation_matrix_columns_model_er.svg
new file mode 100644
index 00000000..65653d31
--- /dev/null
+++ b/images/model/observation_matrix_columns_model_er.svg
@@ -0,0 +1,222 @@
+
+
+
+
+
+
+ObservationMatrixColumn
+
+
+
+Tag->Keyword
+
+
+
+
+
+
+ObservationMatrixColumn->Tag
+
+
+
+
+
+ObservationMatrixColumn->Note
+
+
+
+
+
+ObservationMatrixColumn->Observation
+
+
+
+
+
+ObservationMatrixColumn->Descriptor
+
+
+
+
+
+ObservationMatrixColumn->PinboardItem
+
+
+
+
+
+ObservationMatrixColumn->Role
+
+
+
+
+
+ObservationMatrixColumn->VerifierRole
+
+
+
+
+
+ObservationMatrixColumn->Creator
+
+
+
+
+
+ObservationMatrixColumn->ObservationMatrix
+
+
+
+
+
+ObservationMatrixColumn->Project
+
+
+
+
+
+ObservationMatrixColumn->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Observation
+
+
+Observation
+
+
+
+
+
+Descriptor
+
+
+Descriptor
+
+
+
+
+
+ObservationMatrixColumn
+
+
+
+ObservationMatrixColumn
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+ObservationMatrix
+
+
+ObservationMatrix
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/observation_matrix_row_items_model_er.svg b/images/model/observation_matrix_row_items_model_er.svg
new file mode 100644
index 00000000..c2d15c3d
--- /dev/null
+++ b/images/model/observation_matrix_row_items_model_er.svg
@@ -0,0 +1,325 @@
+
+
+
+
+
+
+ObservationMatrixRowItem
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+
+
+ObservationMatrixRowItem->Citation
+
+
+
+
+
+ObservationMatrixRowItem->Identifier
+
+
+
+
+
+ObservationMatrixRowItem->Tag
+
+
+
+
+
+ObservationMatrixRowItem->Note
+
+
+
+
+
+ObservationMatrixRowItem->Source
+
+
+
+
+
+
+
+
+ObservationMatrixRowItem->PinboardItem
+
+
+
+
+
+ObservationMatrixRowItem->Role
+
+
+
+
+
+ObservationMatrixRowItem->SubsequentCitation
+
+
+
+
+
+ObservationMatrixRowItem->VerifierRole
+
+
+
+
+
+ObservationMatrixRowItem->Creator
+
+
+
+
+
+ObservationMatrixRowItem->ObservationMatrix
+
+
+
+
+
+ObservationMatrixRowItem->Project
+
+
+
+
+
+ObservationMatrixRowItem->Updater
+
+
+
+
+
+ObservationMatrixRowItem->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+ObservationMatrixRowItem
+
+
+
+ObservationMatrixRowItem
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+ObservationMatrix
+
+
+ObservationMatrix
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/observation_matrix_rows_model_er.svg b/images/model/observation_matrix_rows_model_er.svg
new file mode 100644
index 00000000..12185fa8
--- /dev/null
+++ b/images/model/observation_matrix_rows_model_er.svg
@@ -0,0 +1,355 @@
+
+
+
+
+
+
+ObservationMatrixRow
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+
+
+ObservationMatrixRow->Citation
+
+
+
+
+
+ObservationMatrixRow->Identifier
+
+
+
+
+
+ObservationMatrixRow->Tag
+
+
+
+
+
+ObservationMatrixRow->Note
+
+
+
+
+
+ObservationMatrixRow->Source
+
+
+
+
+
+
+
+
+ObservationMatrixRow->CollectionObject
+
+
+
+
+
+ObservationMatrixRow->Otu
+
+
+
+
+
+ObservationMatrixRow->PinboardItem
+
+
+
+
+
+ObservationMatrixRow->Role
+
+
+
+
+
+ObservationMatrixRow->SubsequentCitation
+
+
+
+
+
+ObservationMatrixRow->VerifierRole
+
+
+
+
+
+ObservationMatrixRow->Creator
+
+
+
+
+
+ObservationMatrixRow->ObservationMatrix
+
+
+
+
+
+ObservationMatrixRow->Project
+
+
+
+
+
+ObservationMatrixRow->Updater
+
+
+
+
+
+ObservationMatrixRow->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+ObservationMatrixRow
+
+
+
+ObservationMatrixRow
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+ObservationMatrix
+
+
+ObservationMatrix
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/observations_model_er.svg b/images/model/observations_model_er.svg
new file mode 100644
index 00000000..102a5119
--- /dev/null
+++ b/images/model/observations_model_er.svg
@@ -0,0 +1,445 @@
+
+
+
+
+
+
+Observation
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+Observation->Citation
+
+
+
+
+
+Observation->Confidence
+
+
+
+
+
+Observation->DataAttribute
+
+
+
+
+
+Observation->Depiction
+
+
+
+
+
+Observation->Identifier
+
+
+
+
+
+Observation->Tag
+
+
+
+
+
+Observation->Note
+
+
+
+
+
+Observation->Source
+
+
+
+
+
+
+
+
+Observation->CollectionObject
+
+
+
+
+
+Observation->Descriptor
+
+
+
+
+
+Observation->Otu
+
+
+
+
+
+Observation->PinboardItem
+
+
+
+
+
+Observation->Role
+
+
+
+
+
+Observation->SubsequentCitation
+
+
+
+
+
+Observation->VerifierRole
+
+
+
+
+
+Observation->CharacterState
+
+
+
+
+
+Observation->Creator
+
+
+
+
+
+Observation->Project
+
+
+
+
+
+Observation->Updater
+
+
+
+
+
+Observation->OriginCitation
+
+
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Observation
+
+
+
+Observation
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Descriptor
+
+
+Descriptor
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+CharacterState
+
+
+CharacterState
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/organizations_model_er.svg b/images/model/organizations_model_er.svg
new file mode 100644
index 00000000..23748e15
--- /dev/null
+++ b/images/model/organizations_model_er.svg
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+Organization
+
+
+
+Organization->Identifier
+
+
+
+
+
+Organization->Note
+
+
+
+
+
+Organization->PinboardItem
+
+
+
+
+
+Organization->Role
+
+
+
+
+
+Organization->VerifierRole
+
+
+
+
+
+Organization->AreaServed
+
+
+
+
+
+Organization->Creator
+
+
+
+
+
+Organization->Department
+
+
+
+
+
+Organization->ParentOrganization
+
+
+
+
+
+Organization->SameA
+
+
+
+
+
+Organization->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Organization
+
+
+
+Organization
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+AreaServed
+
+
+AreaServed
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Department
+
+
+Department
+
+
+
+
+
+ParentOrganization
+
+
+ParentOrganization
+
+
+
+
+
+SameA
+
+
+SameA
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/origin_relationships_model_er.svg b/images/model/origin_relationships_model_er.svg
new file mode 100644
index 00000000..4a8bb066
--- /dev/null
+++ b/images/model/origin_relationships_model_er.svg
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+OriginRelationship
+
+
+
+OriginRelationship->PinboardItem
+
+
+
+
+
+OriginRelationship->Role
+
+
+
+
+
+OriginRelationship->VerifierRole
+
+
+
+
+
+OriginRelationship->Creator
+
+
+
+
+
+OriginRelationship->Project
+
+
+
+
+
+OriginRelationship->Updater
+
+
+
+
+
+OriginRelationship->Objects with Origin relationships
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+OriginRelationship
+
+
+
+OriginRelationship
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Origin relationships
+
+
+Objects with Origin relationships
+
+
+
+
+
diff --git a/images/model/otu_page_layout_sections_model_er.svg b/images/model/otu_page_layout_sections_model_er.svg
new file mode 100644
index 00000000..9c1c8a9e
--- /dev/null
+++ b/images/model/otu_page_layout_sections_model_er.svg
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+OtuPageLayoutSection
+
+
+
+OtuPageLayoutSection->PinboardItem
+
+
+
+
+
+OtuPageLayoutSection->Role
+
+
+
+
+
+OtuPageLayoutSection->VerifierRole
+
+
+
+
+
+OtuPageLayoutSection->Creator
+
+
+
+
+
+OtuPageLayoutSection->OtuPageLayout
+
+
+
+
+
+OtuPageLayoutSection->Project
+
+
+
+
+
+OtuPageLayoutSection->Topic
+
+
+
+
+
+OtuPageLayoutSection->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+OtuPageLayoutSection
+
+
+
+OtuPageLayoutSection
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+OtuPageLayout
+
+
+OtuPageLayout
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/otu_page_layouts_model_er.svg b/images/model/otu_page_layouts_model_er.svg
new file mode 100644
index 00000000..537bdb1b
--- /dev/null
+++ b/images/model/otu_page_layouts_model_er.svg
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+OtuPageLayout
+
+
+
+OtuPageLayout->OtuPageLayoutSection
+
+
+
+
+
+OtuPageLayout->PinboardItem
+
+
+
+
+
+OtuPageLayout->Role
+
+
+
+
+
+OtuPageLayout->StandardSection
+
+
+
+
+
+OtuPageLayout->VerifierRole
+
+
+
+
+
+OtuPageLayout->Creator
+
+
+
+
+
+OtuPageLayout->Project
+
+
+
+
+
+OtuPageLayout->Updater
+
+
+
+
+
+
+StandardSection->Topic
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+OtuPageLayout
+
+
+
+OtuPageLayout
+
+
+
+
+
+OtuPageLayoutSection
+
+
+OtuPageLayoutSection
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+StandardSection
+
+
+StandardSection
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/otus_model_er.svg b/images/model/otus_model_er.svg
new file mode 100644
index 00000000..0b06c797
--- /dev/null
+++ b/images/model/otus_model_er.svg
@@ -0,0 +1,819 @@
+
+
+
+
+
+
+Otu
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+Otu->Citation
+
+
+
+
+
+Otu->Confidence
+
+
+
+
+
+Otu->DataAttribute
+
+
+
+
+
+Otu->Depiction
+
+
+
+
+
+Otu->Identifier
+
+
+
+
+
+Otu->Tag
+
+
+
+
+
+Otu->Note
+
+
+
+
+
+Otu->AssertedDistribution
+
+
+
+
+
+Otu->BiologicalAssociation
+
+
+
+
+
+Otu->Observation
+
+
+
+
+
+Otu->Source
+
+
+
+
+
+
+
+
+Otu->TaxonName
+
+
+
+
+
+Otu->TaxonDetermination
+
+
+
+
+
+Otu->CollectionProfile
+
+
+
+
+
+Otu->CommonName
+
+
+
+
+
+Otu->Content
+
+
+
+
+
+Otu->OriginRelationship
+
+
+
+
+
+Otu->LoanItem
+
+
+
+
+
+Otu->Loan
+
+
+
+
+
+
+
+
+Otu->ObservationMatrixRow
+
+
+
+
+
+Otu->ObservationMatrixRowItem
+
+
+
+
+
+Otu->PinboardItem
+
+
+
+
+
+Otu->RelatedBiologicalAssociation
+
+
+
+
+
+Otu->RelatedOriginRelationship
+
+
+
+
+
+Otu->Role
+
+
+
+
+
+Otu->SubsequentCitation
+
+
+
+
+
+Otu->VerifierRole
+
+
+
+
+
+Otu->Version
+
+
+
+
+
+Otu->Creator
+
+
+
+
+
+Otu->Project
+
+
+
+
+
+Otu->Updater
+
+
+
+
+
+Otu->OriginCitation
+
+
+
+
+
+
+
+
+AssertedDistribution->GeographicAreasFromAssertedDistribution
+
+
+
+
+
+
+CollectionObject->CollectingEvent
+
+
+
+
+
+CollectionObject->Extract
+
+
+
+
+
+CollectingEvent->GeographicAreasFromCollectingEvent
+
+
+
+
+
+CollectingEvent->Georeference
+
+
+
+
+
+Observation->Descriptor
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+TaxonDetermination->CollectionObject
+
+
+
+
+
+Content->ContentTopic
+
+
+
+
+
+OriginRelationship->DerivedExtract
+
+
+
+
+
+OriginRelationship->DerivedSequence
+
+
+
+
+
+
+Extract->Sequence
+
+
+
+
+
+LoanItem->Loan
+
+
+
+
+
+ObservationMatrixRow->ObservationMatrix
+
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Otu
+
+
+
+Otu
+
+
+
+
+
+AssertedDistribution
+
+
+AssertedDistribution
+
+
+
+
+
+BiologicalAssociation
+
+
+BiologicalAssociation
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+CollectingEvent
+
+
+CollectingEvent
+
+
+
+
+
+Observation
+
+
+Observation
+
+
+
+
+
+Descriptor
+
+
+Descriptor
+
+
+
+
+
+Sequence
+
+
+Sequence
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+TaxonName
+
+
+TaxonName
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+TaxonDetermination
+
+
+TaxonDetermination
+
+
+
+
+
+CollectionProfile
+
+
+CollectionProfile
+
+
+
+
+
+CommonName
+
+
+CommonName
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Content
+
+
+Content
+
+
+
+
+
+ContentTopic
+
+
+ContentTopic
+
+
+
+
+
+OriginRelationship
+
+
+OriginRelationship
+
+
+
+
+
+DerivedExtract
+
+
+DerivedExtract
+
+
+
+
+
+DerivedSequence
+
+
+DerivedSequence
+
+
+
+
+
+Extract
+
+
+Extract
+
+
+
+
+
+GeographicAreasFromAssertedDistribution
+
+
+GeographicAreasFromAssertedDistribution
+
+
+
+
+
+GeographicAreasFromCollectingEvent
+
+
+GeographicAreasFromCollectingEvent
+
+
+
+
+
+Georeference
+
+
+Georeference
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+LoanItem
+
+
+LoanItem
+
+
+
+
+
+Loan
+
+
+Loan
+
+
+
+
+
+ObservationMatrixRow
+
+
+ObservationMatrixRow
+
+
+
+
+
+ObservationMatrix
+
+
+ObservationMatrix
+
+
+
+
+
+ObservationMatrixRowItem
+
+
+ObservationMatrixRowItem
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+RelatedBiologicalAssociation
+
+
+RelatedBiologicalAssociation
+
+
+
+
+
+RelatedOriginRelationship
+
+
+RelatedOriginRelationship
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/people_model_er.svg b/images/model/people_model_er.svg
new file mode 100644
index 00000000..323d24c1
--- /dev/null
+++ b/images/model/people_model_er.svg
@@ -0,0 +1,570 @@
+
+
+
+
+
+
+Person
+
+
+
+AlternateValue->AlternateValueLanguage
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+CollectingEvent->CollectionObject
+
+
+
+
+
+CollectionObject->DwcOccurrence
+
+
+
+
+
+Person->AlternateValue
+
+
+
+
+
+Person->DataAttribute
+
+
+
+
+
+Person->Depiction
+
+
+
+
+
+Person->Identifier
+
+
+
+
+
+Person->Tag
+
+
+
+
+
+Person->Note
+
+
+
+
+
+Person->AuthorRole
+
+
+
+
+
+Person->TaxonNameAuthorRole
+
+
+
+
+
+Person->CollectorRole
+
+
+
+
+
+Person->DeterminerRole
+
+
+
+
+
+Person->EditorRole
+
+
+
+
+
+Person->GeoreferencerRole
+
+
+
+
+
+Person->SourceRole
+
+
+
+
+
+Person->OriginRelationship
+
+
+
+
+
+Person->PinboardItem
+
+
+
+
+
+Person->RelatedOriginRelationship
+
+
+
+
+
+Person->Role
+
+
+
+
+
+Person->VerifierRole
+
+
+
+
+
+Person->Version
+
+
+
+
+
+Person->Creator
+
+
+
+
+
+Person->Updater
+
+
+
+
+
+Person->User
+
+
+
+
+
+
+
+
+AuthorRole->AuthoredSource
+
+
+
+
+
+TaxonNameAuthorRole->AuthoredTaxonName
+
+
+
+
+
+CollectorRole->CollectingEvent
+
+
+
+
+
+DeterminerRole->TaxonDetermination
+
+
+
+
+
+EditorRole->EditedSource
+
+
+
+
+
+GeoreferencerRole->Georeference
+
+
+
+
+
+SourceRole->HumanSource
+
+
+
+
+
+
+Role->Source
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+CollectingEvent
+
+
+CollectingEvent
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Person
+
+
+
+Person
+
+
+
+
+
+AlternateValueLanguage
+
+
+AlternateValueLanguage
+
+
+
+
+
+AuthorRole
+
+
+AuthorRole
+
+
+
+
+
+AuthoredSource
+
+
+AuthoredSource
+
+
+
+
+
+TaxonNameAuthorRole
+
+
+TaxonNameAuthorRole
+
+
+
+
+
+AuthoredTaxonName
+
+
+AuthoredTaxonName
+
+
+
+
+
+CollectorRole
+
+
+CollectorRole
+
+
+
+
+
+DeterminerRole
+
+
+DeterminerRole
+
+
+
+
+
+DwcOccurrence
+
+
+DwcOccurrence
+
+
+
+
+
+EditorRole
+
+
+EditorRole
+
+
+
+
+
+EditedSource
+
+
+EditedSource
+
+
+
+
+
+GeoreferencerRole
+
+
+GeoreferencerRole
+
+
+
+
+
+Georeference
+
+
+Georeference
+
+
+
+
+
+SourceRole
+
+
+SourceRole
+
+
+
+
+
+HumanSource
+
+
+HumanSource
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+OriginRelationship
+
+
+OriginRelationship
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+RelatedOriginRelationship
+
+
+RelatedOriginRelationship
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+TaxonDetermination
+
+
+TaxonDetermination
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+User
+
+
+User
+
+
+
+
+
diff --git a/images/model/preparation_types_model_er.svg b/images/model/preparation_types_model_er.svg
new file mode 100644
index 00000000..baa06601
--- /dev/null
+++ b/images/model/preparation_types_model_er.svg
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+PreparationType
+
+
+
+Tag->Keyword
+
+
+
+
+
+PreparationType->Tag
+
+
+
+
+
+PreparationType->CollectionObject
+
+
+
+
+
+PreparationType->PinboardItem
+
+
+
+
+
+PreparationType->Role
+
+
+
+
+
+PreparationType->VerifierRole
+
+
+
+
+
+PreparationType->Version
+
+
+
+
+
+PreparationType->Creator
+
+
+
+
+
+PreparationType->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+PreparationType
+
+
+
+PreparationType
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/project_members_model_er.svg b/images/model/project_members_model_er.svg
new file mode 100644
index 00000000..4ea32188
--- /dev/null
+++ b/images/model/project_members_model_er.svg
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+ProjectMember
+
+
+
+ProjectMember->PinboardItem
+
+
+
+
+
+ProjectMember->Role
+
+
+
+
+
+ProjectMember->VerifierRole
+
+
+
+
+
+ProjectMember->Creator
+
+
+
+
+
+ProjectMember->Project
+
+
+
+
+
+ProjectMember->Updater
+
+
+
+
+
+ProjectMember->User
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+ProjectMember
+
+
+
+ProjectMember
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+User
+
+
+User
+
+
+
+
+
diff --git a/images/model/project_sources_model_er.svg b/images/model/project_sources_model_er.svg
new file mode 100644
index 00000000..09055a2e
--- /dev/null
+++ b/images/model/project_sources_model_er.svg
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+ProjectSource
+
+
+
+ProjectSource->Source
+
+
+
+
+
+ProjectSource->PinboardItem
+
+
+
+
+
+ProjectSource->Role
+
+
+
+
+
+ProjectSource->VerifierRole
+
+
+
+
+
+ProjectSource->Creator
+
+
+
+
+
+ProjectSource->Project
+
+
+
+
+
+ProjectSource->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+ProjectSource
+
+
+
+ProjectSource
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/protocol_relationships_model_er.svg b/images/model/protocol_relationships_model_er.svg
new file mode 100644
index 00000000..ac840db0
--- /dev/null
+++ b/images/model/protocol_relationships_model_er.svg
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+ProtocolRelationship
+
+
+
+ProtocolRelationship->PinboardItem
+
+
+
+
+
+ProtocolRelationship->Role
+
+
+
+
+
+ProtocolRelationship->VerifierRole
+
+
+
+
+
+ProtocolRelationship->Creator
+
+
+
+
+
+ProtocolRelationship->Project
+
+
+
+
+
+ProtocolRelationship->Protocol
+
+
+
+
+
+ProtocolRelationship->Updater
+
+
+
+
+
+ProtocolRelationship->Objects with Protocol relationships
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+ProtocolRelationship
+
+
+
+ProtocolRelationship
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Protocol
+
+
+Protocol
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Protocol relationships
+
+
+Objects with Protocol relationships
+
+
+
+
+
diff --git a/images/model/protocols_model_er.svg b/images/model/protocols_model_er.svg
new file mode 100644
index 00000000..2702eca2
--- /dev/null
+++ b/images/model/protocols_model_er.svg
@@ -0,0 +1,295 @@
+
+
+
+
+
+
+Protocol
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+
+
+Protocol->Citation
+
+
+
+
+
+Protocol->ProtocolRelationship
+
+
+
+
+
+Protocol->Source
+
+
+
+
+
+
+
+
+Protocol->Documentation
+
+
+
+
+
+Protocol->PinboardItem
+
+
+
+
+
+Protocol->Role
+
+
+
+
+
+Protocol->SubsequentCitation
+
+
+
+
+
+Protocol->VerifierRole
+
+
+
+
+
+Protocol->Creator
+
+
+
+
+
+Protocol->Project
+
+
+
+
+
+Protocol->Updater
+
+
+
+
+
+Protocol->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+Documentation->Document
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+ProtocolRelationship
+
+
+ProtocolRelationship
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Protocol
+
+
+
+Protocol
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+Documentation
+
+
+Documentation
+
+
+
+
+
+Document
+
+
+Document
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/ranged_lot_categories_model_er.svg b/images/model/ranged_lot_categories_model_er.svg
new file mode 100644
index 00000000..608ebe03
--- /dev/null
+++ b/images/model/ranged_lot_categories_model_er.svg
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+RangedLotCategory
+
+
+
+RangedLotCategory->PinboardItem
+
+
+
+
+
+RangedLotCategory->RangedLot
+
+
+
+
+
+RangedLotCategory->Role
+
+
+
+
+
+RangedLotCategory->VerifierRole
+
+
+
+
+
+RangedLotCategory->Creator
+
+
+
+
+
+RangedLotCategory->Project
+
+
+
+
+
+RangedLotCategory->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+RangedLotCategory
+
+
+
+RangedLotCategory
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+RangedLot
+
+
+RangedLot
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/repositories_model_er.svg b/images/model/repositories_model_er.svg
new file mode 100644
index 00000000..e6f8d27b
--- /dev/null
+++ b/images/model/repositories_model_er.svg
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+Repository
+
+
+
+AlternateValue->AlternateValueLanguage
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+Repository->AlternateValue
+
+
+
+
+
+Repository->Confidence
+
+
+
+
+
+Repository->DataAttribute
+
+
+
+
+
+Repository->Identifier
+
+
+
+
+
+Repository->Tag
+
+
+
+
+
+Repository->Note
+
+
+
+
+
+Repository->CollectionObject
+
+
+
+
+
+Repository->Extract
+
+
+
+
+
+Repository->PinboardItem
+
+
+
+
+
+Repository->Role
+
+
+
+
+
+Repository->VerifierRole
+
+
+
+
+
+Repository->Creator
+
+
+
+
+
+Repository->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Repository
+
+
+
+Repository
+
+
+
+
+
+AlternateValueLanguage
+
+
+AlternateValueLanguage
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Extract
+
+
+Extract
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/roles_model_er.svg b/images/model/roles_model_er.svg
new file mode 100644
index 00000000..3b934be6
--- /dev/null
+++ b/images/model/roles_model_er.svg
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+Role
+
+
+
+Role->Role
+
+
+
+
+
+Role->PinboardItem
+
+
+
+
+
+Role->VerifierRole
+
+
+
+
+
+
+Role->Creator
+
+
+
+
+
+Role->Organization
+
+
+
+
+
+Role->Person
+
+
+
+
+
+Role->Updater
+
+
+
+
+
+Role->Objects with Roles
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+Role
+
+
+
+Role
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Organization
+
+
+Organization
+
+
+
+
+
+Person
+
+
+Person
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Roles
+
+
+Objects with Roles
+
+
+
+
+
diff --git a/images/model/sequence_relationships_model_er.svg b/images/model/sequence_relationships_model_er.svg
new file mode 100644
index 00000000..5f9c512d
--- /dev/null
+++ b/images/model/sequence_relationships_model_er.svg
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+SequenceRelationship
+
+
+
+Tag->Keyword
+
+
+
+
+
+SequenceRelationship->Identifier
+
+
+
+
+
+SequenceRelationship->Tag
+
+
+
+
+
+SequenceRelationship->Note
+
+
+
+
+
+SequenceRelationship->PinboardItem
+
+
+
+
+
+SequenceRelationship->Role
+
+
+
+
+
+SequenceRelationship->VerifierRole
+
+
+
+
+
+SequenceRelationship->Creator
+
+
+
+
+
+SequenceRelationship->ObjectSequence
+
+
+
+
+
+SequenceRelationship->Project
+
+
+
+
+
+SequenceRelationship->SubjectSequence
+
+
+
+
+
+SequenceRelationship->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+SequenceRelationship
+
+
+
+SequenceRelationship
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+ObjectSequence
+
+
+ObjectSequence
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+SubjectSequence
+
+
+SubjectSequence
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/sequences_model_er.svg b/images/model/sequences_model_er.svg
new file mode 100644
index 00000000..5e65ec57
--- /dev/null
+++ b/images/model/sequences_model_er.svg
@@ -0,0 +1,649 @@
+
+
+
+
+
+
+Sequence
+
+
+
+AlternateValue->AlternateValueLanguage
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+ProtocolRelationship->Protocol
+
+
+
+
+
+Sequence->AlternateValue
+
+
+
+
+
+Sequence->Confidence
+
+
+
+
+
+Sequence->DataAttribute
+
+
+
+
+
+Sequence->Identifier
+
+
+
+
+
+Sequence->Tag
+
+
+
+
+
+Sequence->Note
+
+
+
+
+
+Sequence->ProtocolRelationship
+
+
+
+
+
+Sequence->BlastQuerySequenceRelationship
+
+
+
+
+
+Sequence->OriginRelationship
+
+
+
+
+
+Sequence->Documentation
+
+
+
+
+
+Sequence->ForwardPrimerRelationship
+
+
+
+
+
+Sequence->GeneAttribute
+
+
+
+
+
+Sequence->RelatedOriginRelationship
+
+
+
+
+
+Sequence->PinboardItem
+
+
+
+
+
+Sequence->ReferenceSequenceForAssemblyRelationship
+
+
+
+
+
+Sequence->RelatedSequenceRelationship
+
+
+
+
+
+Sequence->ReversePrimerRelationship
+
+
+
+
+
+Sequence->Role
+
+
+
+
+
+Sequence->SequenceRelationship
+
+
+
+
+
+Sequence->VerifierRole
+
+
+
+
+
+Sequence->Version
+
+
+
+
+
+Sequence->Creator
+
+
+
+
+
+Sequence->Project
+
+
+
+
+
+Sequence->Updater
+
+
+
+
+
+BlastQuerySequenceRelationship->BlastQuerySequenceSequence
+
+
+
+
+
+OriginRelationship->DerivedSequence
+
+
+
+
+
+
+Documentation->Document
+
+
+
+
+
+ForwardPrimerRelationship->ForwardPrimerSequence
+
+
+
+
+
+RelatedOriginRelationship->OriginExtract
+
+
+
+
+
+RelatedOriginRelationship->OriginLot
+
+
+
+
+
+RelatedOriginRelationship->OriginRangedLot
+
+
+
+
+
+RelatedOriginRelationship->OriginSequence
+
+
+
+
+
+RelatedOriginRelationship->OriginSpecimen
+
+
+
+
+
+ReferenceSequenceForAssemblyRelationship->ReferenceSequenceForAssemblySequence
+
+
+
+
+
+RelatedSequenceRelationship->RelatedSequence
+
+
+
+
+
+ReversePrimerRelationship->ReversePrimerSequence
+
+
+
+
+
+
+SequenceRelationship->Sequence
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+ProtocolRelationship
+
+
+ProtocolRelationship
+
+
+
+
+
+Sequence
+
+
+
+Sequence
+
+
+
+
+
+AlternateValueLanguage
+
+
+AlternateValueLanguage
+
+
+
+
+
+BlastQuerySequenceRelationship
+
+
+BlastQuerySequenceRelationship
+
+
+
+
+
+BlastQuerySequenceSequence
+
+
+BlastQuerySequenceSequence
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+OriginRelationship
+
+
+OriginRelationship
+
+
+
+
+
+DerivedSequence
+
+
+DerivedSequence
+
+
+
+
+
+Documentation
+
+
+Documentation
+
+
+
+
+
+Document
+
+
+Document
+
+
+
+
+
+ForwardPrimerRelationship
+
+
+ForwardPrimerRelationship
+
+
+
+
+
+ForwardPrimerSequence
+
+
+ForwardPrimerSequence
+
+
+
+
+
+GeneAttribute
+
+
+GeneAttribute
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+RelatedOriginRelationship
+
+
+RelatedOriginRelationship
+
+
+
+
+
+OriginExtract
+
+
+OriginExtract
+
+
+
+
+
+OriginLot
+
+
+OriginLot
+
+
+
+
+
+OriginRangedLot
+
+
+OriginRangedLot
+
+
+
+
+
+OriginSequence
+
+
+OriginSequence
+
+
+
+
+
+OriginSpecimen
+
+
+OriginSpecimen
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Protocol
+
+
+Protocol
+
+
+
+
+
+ReferenceSequenceForAssemblyRelationship
+
+
+ReferenceSequenceForAssemblyRelationship
+
+
+
+
+
+ReferenceSequenceForAssemblySequence
+
+
+ReferenceSequenceForAssemblySequence
+
+
+
+
+
+RelatedSequenceRelationship
+
+
+RelatedSequenceRelationship
+
+
+
+
+
+RelatedSequence
+
+
+RelatedSequence
+
+
+
+
+
+ReversePrimerRelationship
+
+
+ReversePrimerRelationship
+
+
+
+
+
+ReversePrimerSequence
+
+
+ReversePrimerSequence
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SequenceRelationship
+
+
+SequenceRelationship
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/serial_chronologies_model_er.svg b/images/model/serial_chronologies_model_er.svg
new file mode 100644
index 00000000..c2210606
--- /dev/null
+++ b/images/model/serial_chronologies_model_er.svg
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+SerialChronology
+
+
+
+SerialChronology->PinboardItem
+
+
+
+
+
+SerialChronology->Role
+
+
+
+
+
+SerialChronology->VerifierRole
+
+
+
+
+
+SerialChronology->Creator
+
+
+
+
+
+SerialChronology->PrecedingSerial
+
+
+
+
+
+SerialChronology->SucceedingSerial
+
+
+
+
+
+SerialChronology->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+SerialChronology
+
+
+
+SerialChronology
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+PrecedingSerial
+
+
+PrecedingSerial
+
+
+
+
+
+SucceedingSerial
+
+
+SucceedingSerial
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/serials_model_er.svg b/images/model/serials_model_er.svg
new file mode 100644
index 00000000..ee9e9a6b
--- /dev/null
+++ b/images/model/serials_model_er.svg
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+Serial
+
+
+
+AlternateValue->AlternateValueLanguage
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+Serial->AlternateValue
+
+
+
+
+
+Serial->DataAttribute
+
+
+
+
+
+Serial->Identifier
+
+
+
+
+
+Serial->Tag
+
+
+
+
+
+Serial->Note
+
+
+
+
+
+Serial->Source
+
+
+
+
+
+Serial->SucceedingSerialChronology
+
+
+
+
+
+Serial->PrecedingSerialChronology
+
+
+
+
+
+Serial->PinboardItem
+
+
+
+
+
+Serial->Role
+
+
+
+
+
+Serial->Translation
+
+
+
+
+
+Serial->VerifierRole
+
+
+
+
+
+Serial->Version
+
+
+
+
+
+Serial->Creator
+
+
+
+
+
+Serial->Language
+
+
+
+
+
+Serial->TranslatedFromSerial
+
+
+
+
+
+Serial->Updater
+
+
+
+
+
+SucceedingSerialChronology->ImmediatelyPrecedingSerial
+
+
+
+
+
+PrecedingSerialChronology->ImmediatelySucceedingSerial
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Serial
+
+
+
+Serial
+
+
+
+
+
+AlternateValueLanguage
+
+
+AlternateValueLanguage
+
+
+
+
+
+SucceedingSerialChronology
+
+
+SucceedingSerialChronology
+
+
+
+
+
+ImmediatelyPrecedingSerial
+
+
+ImmediatelyPrecedingSerial
+
+
+
+
+
+PrecedingSerialChronology
+
+
+PrecedingSerialChronology
+
+
+
+
+
+ImmediatelySucceedingSerial
+
+
+ImmediatelySucceedingSerial
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+Translation
+
+
+Translation
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Language
+
+
+Language
+
+
+
+
+
+TranslatedFromSerial
+
+
+TranslatedFromSerial
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/sled_images_model_er.svg b/images/model/sled_images_model_er.svg
new file mode 100644
index 00000000..a2ac6169
--- /dev/null
+++ b/images/model/sled_images_model_er.svg
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+SledImage
+
+
+
+Depiction->CollectionObject
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+SledImage->Tag
+
+
+
+
+
+SledImage->Note
+
+
+
+
+
+SledImage->Image
+
+
+
+
+
+SledImage->PinboardItem
+
+
+
+
+
+SledImage->Role
+
+
+
+
+
+SledImage->VerifierRole
+
+
+
+
+
+SledImage->Creator
+
+
+
+
+
+SledImage->Project
+
+
+
+
+
+SledImage->Updater
+
+
+
+
+
+Image->Depiction
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+SledImage
+
+
+
+SledImage
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/sources_model_er.svg b/images/model/sources_model_er.svg
new file mode 100644
index 00000000..194a4c7c
--- /dev/null
+++ b/images/model/sources_model_er.svg
@@ -0,0 +1,357 @@
+
+
+
+
+
+
+Source
+
+
+
+AlternateValue->AlternateValueLanguage
+
+
+
+
+
+Citation->AssertedDistribution
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+Source->AlternateValue
+
+
+
+
+
+Source->Citation
+
+
+
+
+
+Source->DataAttribute
+
+
+
+
+
+Source->Identifier
+
+
+
+
+
+Source->Tag
+
+
+
+
+
+Source->Note
+
+
+
+
+
+Source->Documentation
+
+
+
+
+
+Source->PinboardItem
+
+
+
+
+
+Source->ProjectSource
+
+
+
+
+
+Source->Role
+
+
+
+
+
+Source->VerifierRole
+
+
+
+
+
+Source->Version
+
+
+
+
+
+Source->Creator
+
+
+
+
+
+Source->Updater
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+Documentation->Document
+
+
+
+
+
+ProjectSource->Project
+
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Source
+
+
+
+Source
+
+
+
+
+
+AssertedDistribution
+
+
+AssertedDistribution
+
+
+
+
+
+AlternateValueLanguage
+
+
+AlternateValueLanguage
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+Documentation
+
+
+Documentation
+
+
+
+
+
+Document
+
+
+Document
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+ProjectSource
+
+
+ProjectSource
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/tagged_section_keywords_model_er.svg b/images/model/tagged_section_keywords_model_er.svg
new file mode 100644
index 00000000..82611e28
--- /dev/null
+++ b/images/model/tagged_section_keywords_model_er.svg
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+TaggedSectionKeyword
+
+
+
+TaggedSectionKeyword->PinboardItem
+
+
+
+
+
+TaggedSectionKeyword->Role
+
+
+
+
+
+TaggedSectionKeyword->VerifierRole
+
+
+
+
+
+TaggedSectionKeyword->Creator
+
+
+
+
+
+TaggedSectionKeyword->Keyword
+
+
+
+
+
+TaggedSectionKeyword->OtuPageLayoutSection
+
+
+
+
+
+TaggedSectionKeyword->Project
+
+
+
+
+
+TaggedSectionKeyword->Updater
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+TaggedSectionKeyword
+
+
+
+TaggedSectionKeyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+OtuPageLayoutSection
+
+
+OtuPageLayoutSection
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
diff --git a/images/model/tags_model_er.svg b/images/model/tags_model_er.svg
new file mode 100644
index 00000000..f11e88a7
--- /dev/null
+++ b/images/model/tags_model_er.svg
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+Tag
+
+
+
+Tag->ControlledVocabularyTerm
+
+
+
+
+
+Tag->PinboardItem
+
+
+
+
+
+Tag->Role
+
+
+
+
+
+Tag->VerifierRole
+
+
+
+
+
+Tag->Creator
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+Tag->Project
+
+
+
+
+
+Tag->Updater
+
+
+
+
+
+Tag->Objects with Tags
+
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Tag
+
+
+
+Tag
+
+
+
+
+
+ControlledVocabularyTerm
+
+
+ControlledVocabularyTerm
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+Objects with Tags
+
+
+Objects with Tags
+
+
+
+
+
diff --git a/images/model/taxon_determinations_model_er.svg b/images/model/taxon_determinations_model_er.svg
new file mode 100644
index 00000000..4616b2bb
--- /dev/null
+++ b/images/model/taxon_determinations_model_er.svg
@@ -0,0 +1,445 @@
+
+
+
+
+
+
+TaxonDetermination
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+ProtocolRelationship->Protocol
+
+
+
+
+
+
+
+TaxonDetermination->Citation
+
+
+
+
+
+TaxonDetermination->Confidence
+
+
+
+
+
+TaxonDetermination->DataAttribute
+
+
+
+
+
+TaxonDetermination->Depiction
+
+
+
+
+
+TaxonDetermination->Note
+
+
+
+
+
+TaxonDetermination->ProtocolRelationship
+
+
+
+
+
+TaxonDetermination->Source
+
+
+
+
+
+
+
+
+TaxonDetermination->Otu
+
+
+
+
+
+TaxonDetermination->DeterminerRole
+
+
+
+
+
+TaxonDetermination->Label
+
+
+
+
+
+TaxonDetermination->PinboardItem
+
+
+
+
+
+TaxonDetermination->Role
+
+
+
+
+
+TaxonDetermination->SubsequentCitation
+
+
+
+
+
+TaxonDetermination->VerifierRole
+
+
+
+
+
+TaxonDetermination->BiologicalCollectionObject
+
+
+
+
+
+TaxonDetermination->Creator
+
+
+
+
+
+TaxonDetermination->Project
+
+
+
+
+
+TaxonDetermination->Updater
+
+
+
+
+
+TaxonDetermination->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+DeterminerRole->Determiner
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+ProtocolRelationship
+
+
+ProtocolRelationship
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+TaxonDetermination
+
+
+
+TaxonDetermination
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+DeterminerRole
+
+
+DeterminerRole
+
+
+
+
+
+Determiner
+
+
+Determiner
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Label
+
+
+Label
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Protocol
+
+
+Protocol
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+BiologicalCollectionObject
+
+
+BiologicalCollectionObject
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/taxon_name_classifications_model_er.svg b/images/model/taxon_name_classifications_model_er.svg
new file mode 100644
index 00000000..0294d5cb
--- /dev/null
+++ b/images/model/taxon_name_classifications_model_er.svg
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+TaxonNameClassification
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+
+
+TaxonNameClassification->Citation
+
+
+
+
+
+TaxonNameClassification->Note
+
+
+
+
+
+TaxonNameClassification->Source
+
+
+
+
+
+
+
+
+TaxonNameClassification->TaxonName
+
+
+
+
+
+TaxonNameClassification->PinboardItem
+
+
+
+
+
+TaxonNameClassification->Role
+
+
+
+
+
+TaxonNameClassification->SubsequentCitation
+
+
+
+
+
+TaxonNameClassification->VerifierRole
+
+
+
+
+
+TaxonNameClassification->Creator
+
+
+
+
+
+TaxonNameClassification->Project
+
+
+
+
+
+TaxonNameClassification->Updater
+
+
+
+
+
+TaxonNameClassification->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+TaxonName
+
+
+TaxonName
+
+
+
+
+
+TaxonNameClassification
+
+
+
+TaxonNameClassification
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/taxon_name_relationships_model_er.svg b/images/model/taxon_name_relationships_model_er.svg
new file mode 100644
index 00000000..07c6cde2
--- /dev/null
+++ b/images/model/taxon_name_relationships_model_er.svg
@@ -0,0 +1,295 @@
+
+
+
+
+
+
+TaxonNameRelationship
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+
+
+TaxonNameRelationship->Citation
+
+
+
+
+
+TaxonNameRelationship->Note
+
+
+
+
+
+TaxonNameRelationship->Source
+
+
+
+
+
+
+
+
+TaxonNameRelationship->PinboardItem
+
+
+
+
+
+TaxonNameRelationship->Role
+
+
+
+
+
+TaxonNameRelationship->SubsequentCitation
+
+
+
+
+
+TaxonNameRelationship->VerifierRole
+
+
+
+
+
+TaxonNameRelationship->Creator
+
+
+
+
+
+TaxonNameRelationship->ObjectTaxonName
+
+
+
+
+
+TaxonNameRelationship->Project
+
+
+
+
+
+TaxonNameRelationship->SubjectTaxonName
+
+
+
+
+
+TaxonNameRelationship->Updater
+
+
+
+
+
+TaxonNameRelationship->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+TaxonNameRelationship
+
+
+
+TaxonNameRelationship
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+ObjectTaxonName
+
+
+ObjectTaxonName
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+SubjectTaxonName
+
+
+SubjectTaxonName
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/model/taxon_names_model_er.svg b/images/model/taxon_names_model_er.svg
new file mode 100644
index 00000000..aa918181
--- /dev/null
+++ b/images/model/taxon_names_model_er.svg
@@ -0,0 +1,752 @@
+
+
+
+
+
+
+TaxonName
+
+
+
+AlternateValue->AlternateValueLanguage
+
+
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Depiction->Image
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+TaxonName->AlternateValue
+
+
+
+
+
+TaxonName->Citation
+
+
+
+
+
+TaxonName->Confidence
+
+
+
+
+
+TaxonName->DataAttribute
+
+
+
+
+
+TaxonName->Depiction
+
+
+
+
+
+TaxonName->Identifier
+
+
+
+
+
+TaxonName->Tag
+
+
+
+
+
+TaxonName->Note
+
+
+
+
+
+TaxonName->Otu
+
+
+
+
+
+TaxonName->Source
+
+
+
+
+
+
+
+
+TaxonName->AncestorHierarchy
+
+
+
+
+
+TaxonName->Child
+
+
+
+
+
+TaxonName->ClassifiedAsUnavailableOrInvalid
+
+
+
+
+
+TaxonName->DescendantHierarchy
+
+
+
+
+
+TaxonName->HistoricalTaxonName
+
+
+
+
+
+TaxonName->ObservationMatrixRowItem
+
+
+
+
+
+TaxonName->PinboardItem
+
+
+
+
+
+TaxonName->RelatedTaxonNameRelationship
+
+
+
+
+
+TaxonName->Role
+
+
+
+
+
+TaxonName->SubsequentCitation
+
+
+
+
+
+TaxonName->TaxonNameAuthorRole
+
+
+
+
+
+TaxonName->TaxonNameClassification
+
+
+
+
+
+TaxonName->TaxonNameRelationship
+
+
+
+
+
+TaxonName->VerifierRole
+
+
+
+
+
+TaxonName->Version
+
+
+
+
+
+TaxonName->Creator
+
+
+
+
+
+TaxonName->Parent
+
+
+
+
+
+TaxonName->Project
+
+
+
+
+
+TaxonName->Updater
+
+
+
+
+
+TaxonName->ValidTaxonName
+
+
+
+
+
+TaxonName->OriginCitation
+
+
+
+
+
+
+
+
+TaxonName->SourceClassifiedA
+
+
+
+
+
+
+
+
+TaxonName->SourceClassifiedAsRelationship
+
+
+
+
+
+
+
+
+Otu->TaxonDetermination
+
+
+
+
+
+
+
+AncestorHierarchy->SelfAndAncestor
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+TaxonDetermination->CollectionObject
+
+
+
+
+
+DescendantHierarchy->SelfAndDescendant
+
+
+
+
+
+ObservationMatrixRowItem->ObservationMatrix
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+TaxonNameAuthorRole->TaxonNameAuthor
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+
+AlternateValue
+
+
+AlternateValue
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Depiction
+
+
+Depiction
+
+
+
+
+
+Identifier
+
+
+Identifier
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+TaxonName
+
+
+
+TaxonName
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+Otu
+
+
+Otu
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+AlternateValueLanguage
+
+
+AlternateValueLanguage
+
+
+
+
+
+AncestorHierarchy
+
+
+AncestorHierarchy
+
+
+
+
+
+Child
+
+
+Child
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ClassifiedAsUnavailableOrInvalid
+
+
+ClassifiedAsUnavailableOrInvalid
+
+
+
+
+
+TaxonDetermination
+
+
+TaxonDetermination
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+DescendantHierarchy
+
+
+DescendantHierarchy
+
+
+
+
+
+HistoricalTaxonName
+
+
+HistoricalTaxonName
+
+
+
+
+
+Image
+
+
+Image
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+ObservationMatrixRowItem
+
+
+ObservationMatrixRowItem
+
+
+
+
+
+ObservationMatrix
+
+
+ObservationMatrix
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+RelatedTaxonNameRelationship
+
+
+RelatedTaxonNameRelationship
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SelfAndAncestor
+
+
+SelfAndAncestor
+
+
+
+
+
+SelfAndDescendant
+
+
+SelfAndDescendant
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+TaxonNameAuthorRole
+
+
+TaxonNameAuthorRole
+
+
+
+
+
+TaxonNameAuthor
+
+
+TaxonNameAuthor
+
+
+
+
+
+TaxonNameClassification
+
+
+TaxonNameClassification
+
+
+
+
+
+TaxonNameRelationship
+
+
+TaxonNameRelationship
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Version
+
+
+Version
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Parent
+
+
+Parent
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+ValidTaxonName
+
+
+ValidTaxonName
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
+SourceClassifiedA
+
+
+SourceClassifiedA
+
+
+
+
+
+SourceClassifiedAsRelationship
+
+
+SourceClassifiedAsRelationship
+
+
+
+
+
diff --git a/images/model/type_materials_model_er.svg b/images/model/type_materials_model_er.svg
new file mode 100644
index 00000000..b27cb163
--- /dev/null
+++ b/images/model/type_materials_model_er.svg
@@ -0,0 +1,370 @@
+
+
+
+
+
+
+TypeMaterial
+
+
+
+Citation->Source
+
+
+
+
+
+Citation->CitationTopic
+
+
+
+
+
+Confidence->ConfidenceLevel
+
+
+
+
+
+Tag->Keyword
+
+
+
+
+
+
+
+TypeMaterial->Citation
+
+
+
+
+
+TypeMaterial->Confidence
+
+
+
+
+
+TypeMaterial->DataAttribute
+
+
+
+
+
+TypeMaterial->Tag
+
+
+
+
+
+TypeMaterial->Note
+
+
+
+
+
+TypeMaterial->Source
+
+
+
+
+
+
+
+
+TypeMaterial->CollectionObject
+
+
+
+
+
+TypeMaterial->PinboardItem
+
+
+
+
+
+TypeMaterial->Role
+
+
+
+
+
+TypeMaterial->SubsequentCitation
+
+
+
+
+
+TypeMaterial->VerifierRole
+
+
+
+
+
+TypeMaterial->Creator
+
+
+
+
+
+TypeMaterial->Project
+
+
+
+
+
+TypeMaterial->Protonym
+
+
+
+
+
+TypeMaterial->Updater
+
+
+
+
+
+TypeMaterial->OriginCitation
+
+
+
+
+
+
+
+
+CitationTopic->Topic
+
+
+
+
+
+
+SubsequentCitation->SubsequentSource
+
+
+
+
+
+VerifierRole->Verifier
+
+
+
+
+
+
+
+Citation
+
+
+Citation
+
+
+
+
+
+Confidence
+
+
+Confidence
+
+
+
+
+
+DataAttribute
+
+
+DataAttribute
+
+
+
+
+
+Tag
+
+
+Tag
+
+
+
+
+
+Note
+
+
+Note
+
+
+
+
+
+Source
+
+
+Source
+
+
+
+
+
+CollectionObject
+
+
+CollectionObject
+
+
+
+
+
+TypeMaterial
+
+
+
+TypeMaterial
+
+
+
+
+
+CitationTopic
+
+
+CitationTopic
+
+
+
+
+
+ConfidenceLevel
+
+
+ConfidenceLevel
+
+
+
+
+
+Keyword
+
+
+Keyword
+
+
+
+
+
+PinboardItem
+
+
+PinboardItem
+
+
+
+
+
+Role
+
+
+Role
+
+
+
+
+
+SubsequentCitation
+
+
+SubsequentCitation
+
+
+
+
+
+SubsequentSource
+
+
+SubsequentSource
+
+
+
+
+
+Topic
+
+
+Topic
+
+
+
+
+
+VerifierRole
+
+
+VerifierRole
+
+
+
+
+
+Verifier
+
+
+Verifier
+
+
+
+
+
+Creator
+
+
+Creator
+
+
+
+
+
+Project
+
+
+Project
+
+
+
+
+
+Protonym
+
+
+Protonym
+
+
+
+
+
+Updater
+
+
+Updater
+
+
+
+
+
+OriginCitation
+
+
+OriginCitation
+
+
+
+
+
diff --git a/images/taxonworks-black-circle.svg b/images/taxonworks-black-circle.svg
new file mode 100644
index 00000000..acaa339b
--- /dev/null
+++ b/images/taxonworks-black-circle.svg
@@ -0,0 +1,10 @@
+
+ 5B0334BE-6F60-46AA-8E99-5EF2E5EC3231
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/taxonworks-white-circle.svg b/images/taxonworks-white-circle.svg
new file mode 100644
index 00000000..23355466
--- /dev/null
+++ b/images/taxonworks-white-circle.svg
@@ -0,0 +1,10 @@
+
+ 5B0334BE-6F60-46AA-8E99-5EF2E5EC3231
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/taxonworks_home.svg b/images/taxonworks_home.svg
new file mode 100644
index 00000000..d257a515
--- /dev/null
+++ b/images/taxonworks_home.svg
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..1a721148
--- /dev/null
+++ b/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ Home | TaxonWorks Docs
+
+
+
+
+
+
+
+
+