# Darwin Core XML guide Title : Darwin Core XML guide Date version issued : 2015-06-02 Date created : 2009-02-12 Part of TDWG Standard : This version : Latest version : Previous version : Replaced by : Abstract : Guidelines for the implementation of Darwin Core in XML. Contributors : John Wieczorek (MVZ), Markus Döring (GBIF), Renato De Giovanni (CRIA), Tim Robertson (GBIF), Dave Vieglais (KUNHM) Creator : Darwin Core Task Group Bibliographic citation : Darwin Core Task Group. 2014. Darwin Core XML guide. Biodiversity Information Standards (TDWG). ## 1 Introduction This document provides guidelines for implementing application schemas based on [Darwin Core terms](../../terms/) using [XML](http://www.w3.org/XML/). The underlying metadata model is described (in a syntax neutral way), followed by some specific guidelines for XML implementations. Some guidance on the use of non-Darwin Core terms is also provided. This document does not provide guidelines for encoding Darwin Core in RDF/XML. Nor does it take a position on the relative merits of encoding metadata in "plain" XML rather than RDF/XML. This document provides guidelines in those cases where RDF/XML is not considered appropriate. ### 1.1 Status of the content of this document All sections of this document are normative, except for sections that are explicitly marked as non-normative. ### 1.2 Audience This document is targeted toward those who wish to use or construct application schemas using Darwin Core terms in XML. It includes explanations of existing schemas such as [Simple Darwin Core](../simple/) and how to build new schemas to meet specific models of information. ## 2 Implementation guide ### 2.1 XML schema Implementors should base their XML applications on [XML Schemas](http://www.w3.org/XML/Schema) rather than _XML DTDs_. Approaches based on _XML Schemas_ are more flexible and are more easily re-used within other XML applications. ### 2.2 XML namespaces Implementors should use [XML Namespaces](http://www.w3.org/TR/1999/REC-xml-names-19990114/) to uniquely identify elements. Darwin Core namespaces are defined in the [Darwin Core Namespace Policy](../../namespace/), while Dublin Core namespaces are defined in the [DCMI Namespace Recommendation](http://dublincore.org/documents/dcmi-namespace/). ### 2.3 Abstract model The Darwin Core follows the [Dublin Core Metadata Initiative Abstract Model](http://dublincore.org/documents/abstract-model/) except that the Darwin Core _record_ is roughly equivalent to the Dublin Core _resource_. - Darwin Core terms are either `classes` or `properties`. - Each `property` has at most one `class` as its domain (describes no more than one `class`). - A `Darwin Core record` is made up of zero or more `classes` and one or more `properties` with their associated `values`. - Each `value` is a literal string. - The `values` of `properties` within a `Darwin Core record` describe that record. - A `Darwin Core record` must include all required `properties`, if any, and their associated `values`. ### 2.4 Properties and values Darwin Core follows the guidelines for expressing [Dublin Core metadata using XML](http://dublincore.org/documents/dc-xml/) except in that Darwin Core implementors should encode `properties` as XML elements and `values` as the content of those elements instead of having each property contain a value representation and its associated value. The name of the XML element should be an XML qualified name (QName), which associates the value given in the `Term name` attribute in the [Darwin Core Terms](../../terms/) recommendation with the appropriate namespace name. For example, use: ```xml ... HumanObservation ``` rather than: ```xml ``` ### 2.5 Null values Elements for which the value is null should be omitted from the document or explicitly coded using the attribute `xsi:nil="true"`. ```xml ``` Do not use an empty string - an element with no content: ```xml ``` ### 2.6 Simple Darwin Core [Simple Darwin Core](tdwg_dwc_simple.xsd) most closely models the "flat" nature of many data sets. It is a ready-made schema for sharing information with no structure beyond properties of a _record_ (equivalent to fields in a table, or columns in a spreadsheet). It is meant to accommodate all properties except those that require further structure to be meaningful (auxilliary terms in the classes [ResourceRelationship](http://rs.tdwg.org/dwc/terms/ResourceRelationship) and [MeasurementOrFact](http://rs.tdwg.org/dwc/terms/MeasurementOrFact). The schema has no required terms and no term is repeated within a given _record_. Refer to [Simple Darwin Core](../simple/) for the rationale behind this schema. The term [`dcterms:type`](http://rs.tdwg.org/dwc/terms/dcterms:type) (which is controlled by the [Dublin Core Type Vocabulary](http://dublincore.org/documents/dcmi-type-vocabulary/)), gives the basic category of object (`PhysicalObject`, `StillImage`, `MovingImage`, `Sound`, `Text`) the record is about. The term [`basisOfRecord`](http://rs.tdwg.org/dwc/terms/basisOfRecord), which has a controlled vocabulary distinct from that of `dcterms:type`, shows the name of the Darwin Core class (e.g., [`LivingSpecimen`](http://rs.tdwg.org/dwc/terms/LivingSpecimen), [`PreservedSpecimen`](http://rs.tdwg.org/dwc/terms/PreservedSpecimen), [`FossilSpecimen`](http://rs.tdwg.org/dwc/terms/FossilSpecimen), [`HumanObservation`](http://rs.tdwg.org/dwc/terms/HumanObservation), [`MachineObservation`](http://rs.tdwg.org/dwc/terms/MachineObservation), [`Taxon`](http://rs.tdwg.org/dwc/terms/Taxon)) the record is about. #### 2.6.1 Simple Darwin Core example (non-normative) Following is a brief example of an XML document for a single specimen complying with the [Simple Darwin Core Schema](tdwg_dwc_simple.xsd)]. The [Simple Darwin Core XML example document](example_simple.xml) (if this link shows a blank page in your browser, use the View Source option to see the XML document) shows detail for a single record having a more complete set of elements. ```xml PhysicalObject 2009-02-12T12:43:31 Museum of Vertebrate Zoology Creative Commons License MVZ Mammals urn:catalog:MVZ:Mammals:14523 PreservedSpecimen Argentina AR Neuquén 25 km al NNE de Bariloche por Ruta 40 (=237) ``` ### 2.7 Classes and containment Many Darwin Core terms (`properties`) are defined as being associated with another term (a `class`). For example, [`scientificName`](http://rs.tdwg.org/dwc/terms/scientificName) and [`Taxon`](http://rs.tdwg.org/dwc/terms/Taxon) are both Darwin Core terms, but `scientificName` is a property associated with the `Taxon` class. When constructing schemas that take advantage of classes in structures, implementors are encouraged to maintain the property/class relationships defined by the terms whenever possible (refer to the `Class` attribute of the term as given in the [Quick Reference Guide](../../terms/) or the attribute `dwcattributes:organizedInClass` in the term declaration in the [`dcterms.rdf`](../rdf/dcterms.rdf) file. To promote reuse, Darwin Core provides a set of xml schemas to use as the basis of additional schemas: - [Terms XML Schema](tdwg_dwcterms.xsd) - property term definitions as typed global elements and named groups for all terms for a given class to be referenced. The schema makes use of substitution groups `anyClass`, `anyProperty`, `anyIdentifier` and `anyXYZTerm` for each class, e.g. `anyTaxonTerm`. This is the schema upon which the [Simple Darwin Core XML Schema](tdwg_dwc_simple.xsd) is based. - [Class Terms XML Schema](tdwg_dwc_class_terms.xsd) - class term definitions as typed global elements with subelements referencing all corresponding property terms via their substitution group. It is encouraged to use classes in a normalized way to avoid deep nesting. A [Darwin Core Tools and Applications page](https://github.com/tdwg/dwc-documentation/blob/master/documentation/resources.md) has been created as an index to example schemas for the purpose of community discussions and development. An [XML schema](tdwg_dwc_classes.xsd) is provided to freely mix any Darwin Core Class in a global list and allow them to reference each other using the respective class identifier terms. #### 2.7.1 Normalized classes examples (non-normative) Following is an example of using normalized classes to represent two related specimen occurrences (one of which has had a second identification) at one location following this class-based schema. Note that you can reuse the location definition here by referring to it via locationID: ```xml http://guid.mvz.org/sites/arg/127 Argentina AR Neuquén 25 km al NNE de Bariloche por Ruta 40 (=237) PhysicalObject 2009-02-12T12:43:31 MVZ Mammals urn:catalog:MVZ:Mammals:14523 PreservedSpecimen http://guid.mvz.org/sites/arg/127 http://guid.mvz.org/identifications/23459 Richard Sage 2000 sp. urn:catalog:MVZ:Mammals:14523 urn:lsid:catalogueoflife.org:taxon:d79c11aa-29c1-102b-9a4a-00304854f820:col20120721 urn:lsid:catalogueoflife.org:taxon:d79c11aa-29c1-102b-9a4a-00304854f820:col20120721 Ctenomys genus ICZN Ctenomys http://guid.mvz.org/identifications/94752 James L Patton 2001-09-14 urn:catalog:MVZ:Mammals:14523 urn:lsid:catalogueoflife.org:taxon:df0a797c-29c1-102b-9a4a-00304854f820:col20120721 urn:lsid:catalogueoflife.org:taxon:df0a797c-29c1-102b-9a4a-00304854f820:col20120721 urn:lsid:catalogueoflife.org:taxon:d79c11aa-29c1-102b-9a4a-00304854f820:col20120721 Ctenomys sociabilis Pearson and Christie, 1985 species ICZN Animalia; Chordata; Vertebrata; Mammalia; Theria; Eutheria; Rodentia; Hystricognatha; Hystricognathi; Ctenomyidae; Ctenomyini; Ctenomys Animalia Chordata Mammalia Rodentia Ctenomyidae Ctenomys sociabilis PhysicalObject 2009-02-12T12:43:31 MVZ Mammals urn:catalog:MVZ:Mammals:14524 PreservedSpecimen http://guid.mvz.org/sites/arg/127 http://guid.mvz.org/identifications/94753 James L Patton 2001-09-14 urn:catalog:MVZ:Mammals:14524 urn:lsid:catalogueoflife.org:taxon:df0a797c-29c1-102b-9a4a-00304854f820:col20120721 http://guid.mvz.org/relations/23423 urn:catalog:MVZ:Mammals:14523 urn:catalog:MVZ:Mammals:14524 offspring of http://guid.mvz.org/relations/23424 urn:catalog:MVZ:Mammals:14524 urn:catalog:MVZ:Mammals:14523 mother of ``` Here is different example demonstrating area count observations for events on two different days at one location. Note that we omit the identification class here as there is not identification related data and link via the `taxonID` directly: ```xml http://guid.mvz.org/sites/arg/127 Argentina AR Neuquén Valle Limay, Estancia Rincon Grande, 48 ha area with centroid at this point -40.97467 -71.0734 WGS84 200 http://guid.mvz.org/events/2006/11/26/17 area count 2006-11-26 http://guid.mvz.org/sites/arg/127 urn:catalog:AUDCLO:EBIRD:OBS64515288 Event 2009-02-17T07:33:04Z AUDCLO EBIRD HumanObservation 2 http://guid.mvz.org/events/2006/11/26/17 urn:lsid:catalogueoflife.org:taxon:f000ee00-29c1-102b-9a4a-00304854f820:col20120721 urn:lsid:catalogueoflife.org:taxon:f000ee00-29c1-102b-9a4a-00304854f820:col20120721 Anthus hellmayri Hartert, 1909 Aves Anthus hellmayri urn:catalog:AUDCLO:EBIRD:OBS64515286 Event 2009-02-17T07:33:04Z AUDCLO EBIRD HumanObservation 1 http://guid.mvz.org/events/2006/11/26/17 urn:lsid:catalogueoflife.org:taxon:f000e838-29c1-102b-9a4a-00304854f820:col20120721 urn:lsid:catalogueoflife.org:taxon:f000e838-29c1-102b-9a4a-00304854f820:col20120721 Anthus correndera Vieillot, 1818 Aves Anthus correndera http://guid.mvz.org/events/2006/11/27/6 area count 2006-11-27 http://guid.mvz.org/sites/arg/127 urn:catalog:AUDCLO:EBIRD:OBS64515333 Event 2009-02-17T07:33:04Z AUDCLO EBIRD HumanObservation 1 http://guid.mvz.org/events/2006/11/27/6 urn:lsid:catalogueoflife.org:taxon:f000ee00-29c1-102b-9a4a-00304854f820:col20120721 urn:catalog:AUDCLO:EBIRD:OBS64515331 Event 2009-02-17T07:33:04Z AUDCLO EBIRD HumanObservation 2 http://guid.mvz.org/events/2006/11/27/6 urn:lsid:catalogueoflife.org:taxon:f000ee00-29c1-102b-9a4a-00304854f820:col20120721 ```