UBIF Schema Supplementary Report

(Version: Unified Biosciences Information Framework (UBIF) 1.0 beta 18 - !Single file version!)

TDWG working group: Structure of Descriptive Data (SDD)

The standard schema reports generated by xml spy or the xs3p script document the structure of the schema organized by the element and type tree. As a supplement to this, this report documents the use of selected features throughout the entire schema.

This is a highly technical report aimed at xml schema experts. The purpose of the type and element listing is primarily to search for design problems or errors in the schema. The overview over default values and identity constraints is valuable for implementers.

Table of contents

  1. Table of elements (name/type synopsis)
  2. Table of defined default values
  3. Type usage
  4. Type inheritance
  5. Identity constraints
  6. Table of annotations containing the problem marker (= '@')

Table of elements (name/type synopsis)

The SDD schema uses element names with different types, depending on the context. To write xslt it is often useful to know which element names in a schema uniquely identify a type, and where the content type depends on the context. The following list shows all elements in alphabetical order together with their type name. Anonymous types, including anonymous type derivations, are annotated with "(anon.)". An advanced script may list the base type of a derivation, but in most cases we avoid anonymous derivation in the TDWG schemata so we did not implement this yet. In the context column the path to the element is given. Elements names are shown directly, and complex type and element/attribute group names are prefixed with "type:", "group:", and "attgroup:", respectively.

The use of an element name with several different types has two major sources: a) the alternative element types are themselves all derived from a base type (see e. g. Modifiers), or b) an object is defined in one place and a reference is made to it. This is very similar to the usage pattern in xml schema itself, where object names are used both for definition and reference (examples: element name="x" and element ref="x", or group name="y" and group ref="y").

Note: element names starting with underscore (= tentative elements placed for the purpose of discussion) are not shown.

Element Name Type Context
AbbreviatedTitle xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Periodical/
Abbreviation String50 type: LabelRepr/
Acknowledgement Statement type: IPRStatementsRepr/
Action DerivationActionDetails type: DerivationMetadata/ Transformations/
Address (anon.) group: ContactAddressProposal2/
Address String type: MicroAgent/
Address StringLP group: ContactAddressProposal1/
Addresses (anon.) group: AgentInterface/ Contact/
AdministrativeContact MicroAgent type: DerivationMetadata/
AgeClass String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Agent AgentProxy type: ExternalDataInterface/ Agents/
Agent AgentRef type: AgentRefs/
Agent ContributorRef type: ContributorRefs/
Agent CreatorContributorRef type: CreatorContributorRefs/
Agent CreatorRef type: CreatorRefs/
Agent OwnerRef type: OwnerRefs/
Agent RichAgentRef type: RichAgentRefs/
Agents (anon.) type: ExternalDataInterface/
AlternateState String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Annotation String group: EnablingGroup/
Article (anon.) group: PublicationInterface_LinnCore_DivWorkbenchProposal/
Authors AgentNames group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Article/
BasisOfRecord String group: UnitInterface_RoughProposalBasedOnDarwinCore/
BiologicalRisks String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Birthdate xs:dateTime group: AgentInterface/ Person/
Book (anon.) group: PublicationInterface_LinnCore_DivWorkbenchProposal/
Caption Label group: MediaResourceInterface/
CatalogNumberText String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Citation Citation type: Citations/
Class String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/ TaxonomicClassification/
ClassHierarchies (anon.) type: ExternalDataInterface/
ClassHierarchy ClassHierarchyProxy type: ExternalDataInterface/ ClassHierarchies/
ClassName ClassNameProxy type: ExternalDataInterface/ ClassNames/
ClassName ClassRef type: ClassRefs/
ClassName ClassRef type: ClassHierarchyNode/
ClassName ClassRef group: UnitInterface/
ClassNames (anon.) type: ExternalDataInterface/
ClassScope ClassRefs type: ContentMetadata/ Scope/
CollectionCode String group: UnitInterface_RoughProposalBasedOnDarwinCore/
CollectionDate CompositeDateTime group: UnitInterface_RoughProposalBasedOnDarwinCore/ Collector/
Collector (anon.) group: UnitInterface_RoughProposalBasedOnDarwinCore/
CollectorNumber String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Collector/
Collectors AgentNames group: UnitInterface_RoughProposalBasedOnDarwinCore/ Collector/
ColorPoint ColorRGB type: ColorPolygon/
ConditionsForGrowth String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Contact (anon.) group: AgentInterface/
ContinentOcean String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalClassification/
Contributors ContributorRefs type: RevisionData/
Coordinates GeographicalCoordinates group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalDetails/
Coordinates GeographicalCoordinates group: LocalityInterface/
CoordinateUncertaintyInMeters xs:double group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalDetails/
Copyright Statement type: IPRStatementsRepr/
Country String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalClassification/
Country String255 group: ContactAddressProposal3/
County String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalClassification/
Coverage String type: MetadataDescriptionRepr/
Creators AgentNames group: PublicationInterface_MinimizedProposal/
Creators CreatorRefs type: RevisionData/
CustomExtension (anon.) type: CustomExtensions/
CustomExtensions CustomExtensions group: EnablingGroup/
Dataset (anon.) (schema root) Datasets/
Datasets (anon.) (schema root)
Deathdate xs:dateTime group: AgentInterface/ Person/
Declaration Statement type: IPRStatementsRepr/
DepositionDate CompositeDateTime group: UnitInterface_RoughProposalBasedOnDarwinCore/
Depositor String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Depth ValueRange group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalDetails/
Derivation DerivationMetadata (schema root) Datasets/ Dataset/
Derivation DerivationMetadata type: DerivationMetadata/ DerivationHistory/
DerivationHistory (anon.) type: DerivationMetadata/
Description (anon.) type: ContentMetadata/
Details String type: MetadataDescriptionRepr/
Details String type: LabelWithDetailsRepr/
Details String type: Statement/
Disclaimer Statement type: IPRStatementsRepr/
Disposition String group: UnitInterface_RoughProposalBasedOnDarwinCore/
DOI DOI type: ExternalLink/
Edition xs:positiveInteger group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Book/
Editors AgentNames group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Series/
EditorsOrAuthors AgentNames group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Book/
Elevation ValueRange group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalDetails/
Email String255 type: MicroAgent/
EmailAddress StringP255 group: AgentInterface/ Contact/ Emails/
Emails (anon.) group: AgentInterface/ Contact/
EncodedData xs:base64Binary group: MediaResourceInterface/
ExtAdr String255 group: ContactAddressProposal3/
ExternalDataInterface ExternalDataInterface (schema root) Datasets/ Dataset/
Factor xs:double group: MeasurementUnitInterface/ Relations/ Relation/
Family String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/ TaxonomicClassification/
FieldNotes String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Collector/
FieldNumber String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Collector/
FormalFullName String255 group: PersonNameProposal2/
GenBankNumber String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Generator (anon.) type: DerivationMetadata/
Genotype String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Genus String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/ ScientificName/
GeographicalClassification (anon.) group: UnitInterface_RoughProposalBasedOnDarwinCore/
GeographicalDetails (anon.) group: UnitInterface_RoughProposalBasedOnDarwinCore/
GeographicalScope LocalityRefs type: ContentMetadata/ Scope/
Geography (anon.) type: ExternalDataInterface/
GeoreferencingNotes String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalDetails/
GeorefVerificationStatus String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalDetails/
GivenNames String255 group: PersonNameProposal1/
GloballyUniqueName xs:anyURI type: ContentMetadata/
HigherGeography String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalClassification/
HistoryOfDeposit String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Icon MediaResourceRef type: MetadataDescriptionRepr/
Identification (anon.) group: UnitInterface_RoughProposalBasedOnDarwinCore/
IdentificationCertainty IdentificationCertaintyEnum group: UnitInterface/
IdentificationDate CompositeDateTime group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/
IdentificationQualifier String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/
IdentifiedBy AgentNames group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/
InformalFullName String255 group: PersonNameProposal2/
InheritedName String255 group: PersonNameProposal1/
InitiationDate xs:dateTime type: RevisionData/
InstitutionCode String group: UnitInterface_RoughProposalBasedOnDarwinCore/
InternationalAbbreviation String group: MeasurementUnitInterface/
InternationalAbbreviation String type: MicroMeasurementUnit/
InvalidSince xs:dateTime type: Citation/
IPRStatements (anon.) group: OwnerAndIPR/
ISBN xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Book/
ISBN xs:string group: PublicationInterface_MinimizedProposal/
Island String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalClassification/
IslandGroup String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalClassification/
IsolationMethod String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Isolator String group: UnitInterface_RoughProposalBasedOnDarwinCore/
IsPhylogenetic xs:boolean group: ClassHierarchyInterface/
IsPrefixUnit xs:boolean group: MeasurementUnitInterface/
IsPreservedInCollection xs:boolean group: UnitInterface/
IsScientificUnit xs:boolean group: MeasurementUnitInterface/
ISSN xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Periodical/
Kingdom String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/ TaxonomicClassification/
Label Label type: ProxyBase/
LastRevisionDate xs:dateTime type: RevisionData/
LastVerified xs:dateTime type: Citation/
License Statement type: IPRStatementsRepr/
Line String255 group: ContactAddressProposal2/ Address/
Link ExternalLink type: ProxyBase/
Locality LocalityProxy type: ExternalDataInterface/ Geography/
Locality LocalityRef type: LocalityRefs/
Locality String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalDetails/
Locality String255 group: ContactAddressProposal3/
Location String255 type: Citation/
LogoURL xs:anyURI group: AgentInterface/
LSID LSIDBody type: ExternalLink/
Major xs:nonNegativeInteger type: ContentMetadata/ Version/
MeasurementUnit MeasurementUnitProxy type: ExternalDataInterface/ MeasurementUnits/
MeasurementUnits (anon.) type: ExternalDataInterface/
MediaResource MediaResourceProxy type: ExternalDataInterface/ MediaResources/
MediaResource MediaResourceRef type: MediaResourceRefs/
MediaResource MediaResourceRef group: MediaResources/
MediaResources (anon.) type: ExternalDataInterface/
Metadata ContentMetadata (schema root) Datasets/ Dataset/
Minor xs:nonNegativeInteger type: ContentMetadata/ Version/
Modifier String255 type: ContentMetadata/ Version/
Mutant String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Name (anon.) type: AgentNames/
Name Label group: AgentInterface/ Organisation/
Name String255 group: AgentInterface/ Software/
Name String255 type: MicroAgent/
Node ClassHierarchyNode group: ClassHierarchyInterface/
Node ClassHierarchyNode type: ClassHierarchyNodes/
Nodes ClassHierarchyNodes type: ClassHierarchyNode/
Nodes ClassHierarchyNodes type: ClassHierarchyNode/
Number xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Part/
Order String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/ TaxonomicClassification/
Organisation (anon.) group: AgentInterface/
OtherCatalogNumbers String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Owners OwnerRefs group: OwnerAndIPR/
Pages xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Book/
Pages xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Article/
Pages xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Part/
Pages xs:string group: PublicationInterface_MinimizedProposal/
Part (anon.) group: PublicationInterface_LinnCore_DivWorkbenchProposal/
Pathogenicity String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Periodical (anon.) group: PublicationInterface_LinnCore_DivWorkbenchProposal/
PeriodicalPart xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Article/
PeriodicalVolume xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Article/
Person (anon.) group: AgentInterface/
Phone String255 type: MicroAgent/
Phylum String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/ TaxonomicClassification/
POBox String255 group: ContactAddressProposal3/
PostalCode String255 group: ContactAddressProposal3/
PreferredName String255 group: PersonNameProposal1/
Prefix String255 group: PersonNameProposal1/
Preparations String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Publication PublicationProxy type: ExternalDataInterface/ Publications/
Publication PublicationRef type: PublicationRefs/
Publication PublicationRef type: Citation/
PublicationPlace xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Periodical/
PublicationPlace xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Publishers/
Publications (anon.) type: ExternalDataInterface/
Publisher xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Publishers/
Publishers (anon.) group: PublicationInterface_LinnCore_DivWorkbenchProposal/
Publishers xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Periodical/
Race String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Rank TaxonomicRankEnum group: ClassNameInterface/
Region String255 group: ContactAddressProposal3/
RelatedCatalogedItems String group: UnitInterface_RoughProposalBasedOnDarwinCore/
RelatedInformation String group: UnitInterface_RoughProposalBasedOnDarwinCore/
RelatedUnit MeasurementUnitRef group: MeasurementUnitInterface/ Relations/ Relation/
Relation (anon.) group: MeasurementUnitInterface/ Relations/
Relations (anon.) group: MeasurementUnitInterface/
Remarks String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Representation IPRStatementsRepr group: OwnerAndIPR/ IPRStatements/
Representation LabelRepr type: Label/
Representation LabelWithDetailsRepr type: LabelWithDetails/
Representation MetadataDescriptionRepr type: ContentMetadata/ Description/
ReprintData xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Book/
RevisionData RevisionData type: ContentMetadata/
RevisionData RevisionData group: MediaResourceInterface/
RevisionStatus RevisionStatusEnum type: RevisionData/
Role Label group: AgentInterface/
ScientificName (anon.) group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/
ScientificName String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/ ScientificName/
ScientificNameAuthor String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/ ScientificName/
Scope (anon.) type: ContentMetadata/
Series (anon.) group: PublicationInterface_LinnCore_DivWorkbenchProposal/
Sex BasicSexCodeEnum group: AgentInterface/ Person/
Sex Sex group: UnitInterface_RoughProposalBasedOnDarwinCore/
Software (anon.) group: AgentInterface/
SortingName String255 group: AgentInterface/ Person/
Source xs:string group: PublicationInterface_MinimizedProposal/
SourcePublications PublicationRefs type: ContentMetadata/ Scope/
SpeciesEpithet String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/ ScientificName/
Statement Statement type: DerivationMetadata/
StateProvince String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalClassification/
StrainApplications String group: UnitInterface_RoughProposalBasedOnDarwinCore/
StrainProperties String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Street String255 group: ContactAddressProposal3/
SubspeciesEpithet String group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/ ScientificName/
Substrate String group: UnitInterface_RoughProposalBasedOnDarwinCore/
Suffix String255 group: PersonNameProposal1/
Synonyms ClassRefs type: ClassHierarchyNode/
TaxonomicClassification (anon.) group: UnitInterface_RoughProposalBasedOnDarwinCore/ Identification/
TechnicalContact MicroAgent type: DerivationMetadata/
Telephone TelephoneNumber group: AgentInterface/ Contact/ Telephones/
Telephones (anon.) group: AgentInterface/ Contact/
TermsOfUse Statement type: IPRStatementsRepr/
Text String type: LabelRepr/
Text String type: Statement/
Text StringL type: TextWithTranslations/
Text StringL type: TextWithTranslations/ Translations/
Title Label group: AgentInterface/ Person/
Title String255 type: MetadataDescriptionRepr/
Title TextWithTranslations group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Series/
Title TextWithTranslations group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Book/
Title TextWithTranslations group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Periodical/
Title TextWithTranslations group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Article/
Title TextWithTranslations group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Part/
Title TextWithTranslations group: PublicationInterface_MinimizedProposal/
Transformations (anon.) type: DerivationMetadata/
Translations (anon.) type: TextWithTranslations/
TruePublicationDate CompositeDate group: PublicationInterface_LinnCore_DivWorkbenchProposal/
TruePublicationDate CompositeDate group: PublicationInterface_MinimizedProposal/
Type ResourceTypeEnum group: MediaResourceInterface/
TypeClass ClassRef type: ClassHierarchyNode/
TypeStatus String group: UnitInterface_RoughProposalBasedOnDarwinCore/
TypeUnit TypeUnitRef type: ClassHierarchyNode/ TypeUnits/
TypeUnits (anon.) type: ClassHierarchyNode/
Unit StringL group: AgentInterface/ Organisation/ Units/
Unit UnitProxy type: ExternalDataInterface/ Units/
Units (anon.) type: ExternalDataInterface/
Units (anon.) group: AgentInterface/ Organisation/
URI anyUriP group: AgentInterface/ Contact/ URIs/
URI xs:anyURI type: Statement/
URIs (anon.) group: AgentInterface/ Contact/
URL xs:anyURI type: ExternalLink/
VerbatimDepth String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalDetails/
VerbatimElevation String group: UnitInterface_RoughProposalBasedOnDarwinCore/ GeographicalDetails/
Version (anon.) type: ContentMetadata/
VersionExtension VersionExtension group: EnablingGroup/
VersionReleaseDate xs:date type: ContentMetadata/ Version/
VolPartInSeries xs:string group: PublicationInterface_LinnCore_DivWorkbenchProposal/ Book/
WebAddress xs:anyURI type: MetadataDescriptionRepr/
Year xs:gYear group: PublicationInterface_LinnCore_DivWorkbenchProposal/
Year xs:positiveInteger group: PublicationInterface_MinimizedProposal/

Table of defined default values

Elements or attributes for which default values have been defined in the schema need special attention insofar as the processing of an instance document depends on whether it has been validated against the schema (validation will add default values in the infoset). A script or application processing instance documents may thus either validate the document, or it may handle the following attributes itself.

Object Name Default value Parent
attribute lowerestimate 0 type: ProbabilityEstimateRange/
attribute preferred false attgroup: preferredOptionalAttribute/
attribute upperestimate 1 type: ProbabilityEstimateRange/
element IdentificationCertainty Certain group: UnitInterface/
element IsPrefixUnit false group: MeasurementUnitInterface/
element IsPreservedInCollection true group: UnitInterface/
element RevisionStatus Unrevised type: RevisionData/

Type usage

The following tables provide an overview of the number of times complex and simple types are used in the schema. Only schema-specific types are reported, not the w3c defined base types (xs:string, xs:boolean, etc.). Type usage is interesting to detect orphan (unused) types, or to argue whether types used only a single time should rather be anonymous.

Usage of complex types

Usage count:
Type name Total Elements Extensions Restrictions
AgentNames 6 = 6 + 0 + 0
AgentProxy 1 = 1 + 0 + 0
AgentRef 2 = 1 + 1 + 0
AgentRefBase 2 = 0 + 1 + 1
AgentRefs 0 = 0 + 0 + 0
anyUriP 1 = 1 + 0 + 0
Citation 1 = 1 + 0 + 0
Citations 0 = 0 + 0 + 0
ClassHierarchyNode 2 = 2 + 0 + 0
ClassHierarchyNodes 2 = 2 + 0 + 0
ClassHierarchyProxy 1 = 1 + 0 + 0
ClassHierarchyRef 0 = 0 + 0 + 0
ClassNameProxy 1 = 1 + 0 + 0
ClassRef 4 = 4 + 0 + 0
ClassRefs 2 = 2 + 0 + 0
ColorPolygon 0 = 0 + 0 + 0
CompositeDate 3 = 2 + 1 + 0
CompositeDateTime 3 = 3 + 0 + 0
ContentMetadata 1 = 1 + 0 + 0
ContributorRef 1 = 1 + 0 + 0
ContributorRefs 1 = 1 + 0 + 0
CreatorContributorRef 1 = 1 + 0 + 0
CreatorContributorRefs 0 = 0 + 0 + 0
CreatorRef 1 = 1 + 0 + 0
CreatorRefs 1 = 1 + 0 + 0
CustomExtensions 1 = 1 + 0 + 0
DerivationActionDetails 1 = 1 + 0 + 0
DerivationMetadata 2 = 2 + 0 + 0
ExternalDataInterface 1 = 1 + 0 + 0
ExternalLink 1 = 1 + 0 + 0
GeographicalCoordinates 2 = 2 + 0 + 0
IPRStatementsRepr 1 = 1 + 0 + 0
Label 5 = 5 + 0 + 0
LabelRepr 2 = 1 + 1 + 0
LabelWithDetails 0 = 0 + 0 + 0
LabelWithDetailsRepr 1 = 1 + 0 + 0
LanguageRef 3 = 0 + 3 + 0
LocalityProxy 1 = 1 + 0 + 0
LocalityRef 1 = 1 + 0 + 0
LocalityRefs 1 = 1 + 0 + 0
MeasurementUnitProxy 1 = 1 + 0 + 0
MeasurementUnitRef 1 = 1 + 0 + 0
MeasurementUnitRefBase 2 = 0 + 1 + 1
MediaResourceProxy 1 = 1 + 0 + 0
MediaResourceRef 3 = 3 + 0 + 0
MediaResourceRefs 0 = 0 + 0 + 0
MetadataDescriptionRepr 1 = 1 + 0 + 0
MicroAgent 2 = 2 + 0 + 0
MicroMeasurementUnit 0 = 0 + 0 + 0
OwnerRef 1 = 1 + 0 + 0
OwnerRefs 1 = 1 + 0 + 0
ProbabilityEstimateRange 0 = 0 + 0 + 0
ProbabilityRange 0 = 0 + 0 + 0
ProxyBase 8 = 0 + 8 + 0
PublicationProxy 1 = 1 + 0 + 0
PublicationRef 2 = 2 + 0 + 0
PublicationRefs 1 = 1 + 0 + 0
RevisionData 2 = 2 + 0 + 0
RichAgentRef 5 = 1 + 0 + 4
RichAgentRefs 4 = 0 + 0 + 4
Sex 1 = 1 + 0 + 0
Statement 7 = 7 + 0 + 0
StringL 3 = 3 + 0 + 0
StringL255 0 = 0 + 0 + 0
StringLP 1 = 1 + 0 + 0
StringLP255 0 = 0 + 0 + 0
StringP 0 = 0 + 0 + 0
StringP255 1 = 1 + 0 + 0
TelephoneNumber 1 = 1 + 0 + 0
TextWithTranslations 6 = 6 + 0 + 0
TypeUnitRef 1 = 1 + 0 + 0
UnitProxy 1 = 1 + 0 + 0
UnitRef 1 = 0 + 1 + 0
UnivarStatMeasureData 0 = 0 + 0 + 0
UnivarStatMeasureRef 1 = 0 + 1 + 0
UnivarStatMeasureWithParamData 0 = 0 + 0 + 0
UnivarStatMeasureWithParamRef 1 = 0 + 1 + 0
ValueRange 2 = 2 + 0 + 0
VersionExtension 1 = 1 + 0 + 0

Usage of simple types

Usage count:
Type name Total Attributes Elements Restrictions
__BooleanOrDefault 0 = 0 + 0 + 0
__BooleanOrUnknown 0 = 0 + 0 + 0
AdditionalSexCodeEnum 0 = 0 + 0 + 0
AgentContributorRoleEnum 1 = 1 + 0 + 0
AgentCreatorContribRoleEnum 1 = 1 + 0 + 0
AgentCreatorRoleEnum 1 = 1 + 0 + 0
AgentOwnerRoleEnum 1 = 1 + 0 + 0
AgentRoleEnum 1 = 1 + 0 + 0
BasicSexCodeEnum 1 = 0 + 1 + 0
CategoricalMeasurementScaleEnum 0 = 0 + 0 + 0
ColorRGB 1 = 0 + 1 + 0
DecimalLatitude 1 = 1 + 0 + 0
DecimalLongitude 1 = 1 + 0 + 0
DOI 1 = 0 + 1 + 0
ExpertiseLevelEnum 0 = 0 + 0 + 0
IdentificationCertaintyEnum 1 = 0 + 1 + 0
Language 2 = 2 + 0 + 0
LSID 0 = 0 + 0 + 0
LSIDBody 1 = 0 + 1 + 0
NomenclaturalEpithet 0 = 0 + 0 + 0
NomenclaturalMonomial 0 = 0 + 0 + 0
NomenclaturalTypeStatusOfUnitsEnum 1 = 1 + 0 + 0
NumericFormatPattern 0 = 0 + 0 + 0
Probability 4 = 4 + 0 + 0
QuantitativeMeasurementScaleEnum 0 = 0 + 0 + 0
Rating1to5Enum 0 = 0 + 0 + 0
RelationID 11 = 11 + 0 + 0
ResourceTypeEnum 1 = 0 + 1 + 0
RevisionStatusEnum 1 = 0 + 1 + 0
SexCodeEnum 1 = 1 + 0 + 0
StatisticalMeasurementScaleEnum 0 = 0 + 0 + 0
String 67 = 3 + 64 + 0
String255 41 = 14 + 25 + 2
String50 1 = 0 + 1 + 0
TaxonomicRankAboveSuperfamilyEnum 0 = 0 + 0 + 0
TaxonomicRankBelowSubspeciesEnum 0 = 0 + 0 + 0
TaxonomicRankEnum 1 = 0 + 1 + 0
TaxonomicRankFamilyGroupEnum 0 = 0 + 0 + 0
TaxonomicRankFamilySubdivisionEnum 0 = 0 + 0 + 0
TaxonomicRankGenusGroupEnum 0 = 0 + 0 + 0
TaxonomicRankGenusSubdivisionEnum 0 = 0 + 0 + 0
TaxonomicRankSpeciesGroupEnum 0 = 0 + 0 + 0
TelephoneDeviceEnum 1 = 1 + 0 + 0
TextDirectionalityEnum 0 = 0 + 0 + 0
UnivarStatMeasureEnum 1 = 1 + 0 + 0
UnivarStatMeasureMethodClassEnum 0 = 0 + 0 + 0
UnivarStatMeasureReportingClassEnum 0 = 0 + 0 + 0
UnivarStatMeasureWithParamEnum 1 = 1 + 0 + 0

Summary of types present but not used

The following types have been defined in the schema, but are not used in elements, attributes, extension, or restriction:
Complex types:
AgentRefs
Citations
ClassHierarchyRef
ColorPolygon
CreatorContributorRefs
LabelWithDetails
MediaResourceRefs
MicroMeasurementUnit
ProbabilityEstimateRange
ProbabilityRange
StringL255
StringLP255
StringP
UnivarStatMeasureData
UnivarStatMeasureWithParamData
Simple types:
__BooleanOrDefault
__BooleanOrUnknown
AdditionalSexCodeEnum
CategoricalMeasurementScaleEnum
ExpertiseLevelEnum
LSID
NomenclaturalEpithet
NomenclaturalMonomial
NumericFormatPattern
QuantitativeMeasurementScaleEnum
Rating1to5Enum
StatisticalMeasurementScaleEnum
TaxonomicRankAboveSuperfamilyEnum
TaxonomicRankBelowSubspeciesEnum
TaxonomicRankFamilyGroupEnum
TaxonomicRankFamilySubdivisionEnum
TaxonomicRankGenusGroupEnum
TaxonomicRankGenusSubdivisionEnum
TaxonomicRankSpeciesGroupEnum
TextDirectionalityEnum
UnivarStatMeasureMethodClassEnum
UnivarStatMeasureReportingClassEnum

Recursive use of types

Direct recursion: The following complex types contain elements of their own type:
DerivationMetadata

Indirect recursion (1 step): The following complex types contain elements of a type, that contains elements of their own type. Both types involved will be listed:
ClassHierarchyNode / ClassHierarchyNodes
ClassHierarchyNodes / ClassHierarchyNode

Note: some other types of recursion, e.g. involving cycles of three complex types, recursion of type extension, alternations of complex types and element groups, or element groups alone are not yet reported!


Type inheritance

The SDD schema is used object-oriented inheritance mechanisms for complex types. The following tables give an overview of type derivations present in the schema.

Complex types derived by extension

(In a future version of this report it is desirable to list indirect type derivation as well!)

Base type Abstract   Derived type Abstract
AgentRef false type: RichAgentRef/ false
AgentRefBase true type: MicroAgent/ false
CompositeDate false type: CompositeDateTime/ false
LabelRepr false type: LabelWithDetailsRepr/ false
LanguageRef false type: IPRStatementsRepr/ false
LanguageRef false type: LabelRepr/ false
LanguageRef false type: MetadataDescriptionRepr/ false
MeasurementUnitRefBase true type: MicroMeasurementUnit/ false
ProxyBase true type: AgentProxy/ false
ProxyBase true type: ClassHierarchyProxy/ false
ProxyBase true type: ClassNameProxy/ false
ProxyBase true type: LocalityProxy/ false
ProxyBase true type: MeasurementUnitProxy/ false
ProxyBase true type: MediaResourceProxy/ false
ProxyBase true type: PublicationProxy/ false
ProxyBase true type: UnitProxy/ false
UnitRef false type: TypeUnitRef/ false
UnivarStatMeasureRef false type: UnivarStatMeasureData/ false
UnivarStatMeasureWithParamRef false type: UnivarStatMeasureWithParamData/ false

Complex types derived by restriction

Base type Abstract   Derived type Abstract
AgentRefBase true type: AgentRef/ false
MeasurementUnitRefBase true type: MeasurementUnitRef/ false
RichAgentRef false type: CreatorRef/ false
RichAgentRef false type: CreatorContributorRef/ false
RichAgentRef false type: ContributorRef/ false
RichAgentRef false type: OwnerRef/ false
RichAgentRefs false type: CreatorRefs/ false
RichAgentRefs false type: CreatorContributorRefs/ false
RichAgentRefs false type: ContributorRefs/ false
RichAgentRefs false type: OwnerRefs/ false

Simple types derived by restriction

Base type Derived type
String255 (schema root) simpleType: NomenclaturalMonomial
String255 (schema root) simpleType: NomenclaturalEpithet
xs:byte (schema root) simpleType: ExpertiseLevelEnum
xs:byte (schema root) simpleType: Rating1to5Enum
xs:double (schema root) simpleType: Probability
xs:double type: CompositeDateTime/ attribute: secondsimpleType
xs:double (schema root) simpleType: DecimalLatitude
xs:double (schema root) simpleType: DecimalLongitude
xs:integer type: CompositeDate/ attribute: monthsimpleType
xs:integer type: CompositeDate/ attribute: daysimpleType
xs:integer type: CompositeDate/ attribute: timezonesimpleType
xs:integer type: CompositeDateTime/ attribute: hoursimpleType
xs:integer type: CompositeDateTime/ attribute: minutesimpleType
xs:Name (schema root) simpleType: RevisionStatusEnum
xs:Name (schema root) simpleType: ResourceTypeEnum
xs:Name (schema root) simpleType: TelephoneDeviceEnum
xs:Name (schema root) simpleType: QuantitativeMeasurementScaleEnum
xs:Name (schema root) simpleType: CategoricalMeasurementScaleEnum
xs:Name (schema root) simpleType: UnivarStatMeasureEnum
xs:Name (schema root) simpleType: UnivarStatMeasureWithParamEnum
xs:Name (schema root) simpleType: UnivarStatMeasureReportingClassEnum
xs:Name (schema root) simpleType: UnivarStatMeasureMethodClassEnum
xs:Name (schema root) simpleType: AgentCreatorRoleEnum
xs:Name (schema root) simpleType: AgentContributorRoleEnum
xs:Name (schema root) simpleType: AgentOwnerRoleEnum
xs:Name (schema root) simpleType: BasicSexCodeEnum
xs:Name (schema root) simpleType: AdditionalSexCodeEnum
xs:Name (schema root) simpleType: IdentificationCertaintyEnum
xs:Name (schema root) simpleType: NomenclaturalTypeStatusOfUnitsEnum
xs:Name (schema root) simpleType: TaxonomicRankBelowSubspeciesEnum
xs:Name (schema root) simpleType: TaxonomicRankSpeciesGroupEnum
xs:Name (schema root) simpleType: TaxonomicRankGenusSubdivisionEnum
xs:Name (schema root) simpleType: TaxonomicRankGenusGroupEnum
xs:Name (schema root) simpleType: TaxonomicRankFamilySubdivisionEnum
xs:Name (schema root) simpleType: TaxonomicRankFamilyGroupEnum
xs:Name (schema root) simpleType: TaxonomicRankAboveSuperfamilyEnum
xs:nonNegativeInteger (schema root) simpleType: RelationID
xs:normalizedString (schema root) simpleType: String
xs:normalizedString (schema root) simpleType: String50
xs:normalizedString (schema root) simpleType: String255
xs:string (schema root) simpleType: ColorRGB
xs:string (schema root) simpleType: LSID
xs:string (schema root) simpleType: LSIDBody
xs:string (schema root) simpleType: DOI
xs:string (schema root) simpleType: NumericFormatPattern
xs:string (schema root) simpleType: LanguagesimpleType
xs:token (schema root) simpleType: __BooleanOrDefaultsimpleType
xs:token (schema root) simpleType: __BooleanOrUnknownsimpleType
xs:token (schema root) simpleType: TextDirectionalityEnum

Identity constraints

Key identity constraints

The SDD schema is an object-relational design where data structures cannot be shown in a single hierarchical tree. It therefore makes liberal use of key/keyref relations. The integrity of these relations is protected by two xml schema mechanisms: xs:key guarantees that all key values are present and unique, and xs:keyref guarantees that all references to key values point to an existing key. The following tables give an overview of the key and keyref constraints defined in the schema:

Key Name Selector path Field(s)
AgentProxyKey ExternalDataInterface/Agents/Agent @id     
ClassHierarchyKey ExternalDataInterface/ClassHierarchies/ClassHierarchy @id     
ClassNameProxyKey ExternalDataInterface/ClassNames/ClassName @id     
LocalityProxyKey ExternalDataInterface/Geography/Locality @id     
MeasurementUnitKey ExternalDataInterface/MeasurementUnits/MeasurementUnit @id     
MediaResourceKey ExternalDataInterface/MediaResources/MediaResource @id     
PublicationProxyKey ExternalDataInterface/Publications/Publication @id     
UnitProxyKey ExternalDataInterface/Units/Unit @id     

Keyref identity constraints

Keyref Name Parent Referred key Selector  Field(s)    
AdministrativeContact_AgentKeyRef type: DerivationMetadata/ AdministrativeContact/ AgentProxyKey . @ref     
AgentProxyKeyref type: AgentRefs/ Agent/ AgentProxyKey . @ref     
AgentProxyKeyref_Contributor type: ContributorRefs/ Agent/ AgentProxyKey . @ref     
AgentProxyKeyref_Creator type: CreatorRefs/ Agent/ AgentProxyKey . @ref     
AgentProxyKeyref_CreatorContributor type: CreatorContributorRefs/ Agent/ AgentProxyKey . @ref     
AgentProxyKeyref_Name type: AgentNames/ Name/ AgentProxyKey . @ref     
AgentProxyKeyref_Owner type: OwnerRefs/ Agent/ AgentProxyKey . @ref     
AgentProxyKeyref_RichAgent type: RichAgentRefs/ Agent/ AgentProxyKey . @ref     
ClassNameProxyKeyref type: ClassRefs/ ClassName/ ClassNameProxyKey . @ref     
ClassNameProxyKeyref_Hierarchy type: ClassHierarchyNode/ ClassName/ ClassNameProxyKey . @ref     
ClassNameProxyKeyref_ObjectID group: UnitInterface/ ClassName/ ClassNameProxyKey . @ref     
ClassNameProxyKeyref_TypeClass type: ClassHierarchyNode/ TypeClass/ ClassNameProxyKey . @ref     
LocalityProxyKeyref type: LocalityRefs/ Locality/ LocalityProxyKey . @ref     
MediaResourceKeyref type: MediaResourceRefs/ MediaResource/ MediaResourceKey . @ref     
MediaResourceKeyref_Icon type: MetadataDescriptionRepr/ Icon/ MediaResourceKey . @ref     
MediaResourceKeyref_InGroup group: MediaResources/ MediaResource/ MediaResourceKey . @ref     
PublicationProxyKeyref type: PublicationRefs/ Publication/ PublicationProxyKey . @ref     
PublicationProxyKeyref_Descr type: Citation/ Publication/ PublicationProxyKey . @ref     
TechnicalContact_AgentKeyRef type: DerivationMetadata/ TechnicalContact/ AgentProxyKey . @ref     
UnitProxyKey_TypeUnit type: ClassHierarchyNode/ TypeUnits/ TypeUnit/ UnitProxyKey . @ref     

Uniqueness constraints

Uniqueness constraints differ from key constraints in that the elements referred to are not required to be present. However, whenever they are present, however, the combination of all fields has to be unique. In SDD schema, most uniqueness constraints could in fact be modeled as key constraints, since the data elements are required. However, to stress the distinction between key definitions to which keyrefs refer, and other constraints, we prefer to model them as uniqueness constraints.

Uniqueness constraint Selector path Field(s)    
ClassHierarchyNode_UniqueSynClassRefs ClassName @ref     
Contributors_UniqueAgentRole Agents @ref  @role   
Creators_UniqueAgentRole Agents @ref  @role   
EDI_Agents_UniqueLabelText Agent/Label/Representation Text  @language   
EDI_ClassHierarchies_UniqueLabelText ClassHierarchy/Label/Representation Text  @language   
EDI_ClassNames__UniqueLabelText ClassName/Label/Representation Text  @language   
EDI_Geography_UniqueLabelText Locality/Label/Representation Text  @language   
EDI_MeasurementUnits_UniqueLabelText MeasurementUnit/Label/Representation Text  @language   
EDI_MediaResources_UniqueLabelText MediaResource/Label/Representation Text  @language   
EDI_Publications_UniqueLabelText Publication/Label/Representation Text  @language   
EDI_Units_UniqueLabelText Unit/Label/Representation Text  @language   
IPRStatements_UniqueRepresentation Representation @Language     
MetadataDescription_UniqueRepresentation Representation @Language     
Owners_UniqueAgentRole Agents @ref  @role   
ProjScope_UniqueClassNameRefs ClassName @ref     
ProjScope_UniqueLocalities Locality @ref     
ProjScope_UniqueOtherScope __Term    
ProjScope_UniquePublicationRefs Publication @ref     
ProxyLabel_UniqueRepresentationLanguage Representation @language     
TextWithTranslations_UniqueLanguage Text @language     

Table of annotations containing the problem marker (= '@@')

The character '@' is used inside schema annotations to mark problem or places that need further discussion. The table is sorted by order of occurrence in the schema.

Annotation Parent
1. @@ E.g. ecological like "Temperate rainforest", 'insectivores' (bats, birds, mammals' ...), temporal (jurassic fossils)... Problem: these should be external subject vocubularies that should be linked to... Library of congress subject headings may be usefull. type: ContentMetadata/ Scope/ __OtherScope/
2. @@ The specific elements are only a preliminary sketch, this should be synchronized with TDWG ABCD! [ATTR: id] type: ExternalDataInterface/ Agents/ Agent/
3. Human readable representation. This may be the only data item if no machine readable ObjectLink exists. Example for a publication: "Smith 1998. Flora of Erehwon, XY Publishers." Even if an external ID exist, the Label is required. It preserves the semantics of the proxy object (= keep interpretable by humans) even if the machine-readable object links are broken. Label should be updated automatically (without human control) only after a human decided that the semantic management of an external object provider can be fully trusted. Some Labels like scientific taxon names or publication references can be expressed more or less language-independent, others like geographic names are always language dependent. @@Discussion neccessary: language type is currently extended with neutral and unknown codes ('-', '?'), is this necessary?@@ The Abbreviation element provided is not necessary for all proxies, but especially useful for class names (e. g., for tabular reports) and publication abbreviations (author/year style). type: ProxyBase/ Label/
4. @@ SomeElementsAnalyzedBySDD: These are just the preliminary elements identified by SDD to be necessary as local extensions. A decision needs to be made, compare the DWC-based present in an alternative interface group! @@ group: UnitInterface/
5. @@GH: Two proposals for publication-specific extensions of the proxy base data. Both have advantages and I can imagine either solution. The important thing would be to select a common solution for SDD, ABCD, TaxonNames, LinneanCore, etc.! GENERAL Note: Some parts of publication representations are already available as proxy base data. These are: - unconstrained text form as commonly found inpubliched referende (i.e. not atomized belongs into the Label. - URL location of the article on the web and DOI (digital object identifier) can be found in ObjectLinks) group: PublicationInterface/
6. This structure is based on the Linnean Core proposal and checked against the DiversityReferences and ReferenceManager(TM) data structures. It would provide a relatively satisfying full structure usable in the absence of other literature management systems. Note: Many aspects of reference managers such as keywords, abstracts, availability, or reference types are not supported in the current data interface. However, they may be added and managed inside the generic extension mechanism, see "CustomExtensions" above, . @@Open question: How to reference a software? group: PublicationInterface_LinnCore_DivWorkbenchProposal/
7. International Standard Book Number. @@Although this is an ideal key, this element may be dropped from the selective structure! Only very few references are covered by entire books with ISBN. Articles in journals are far more frequent and it would be more valuable to be better support those. group: PublicationInterface_MinimizedProposal/ ISBN/
8. Verbatim name as it appears in citation. 'sub name xy' @@ Do we need this? I think the use case may be considered an extension to the Location element. Example: "p. 3, sub Ustilago"@@ type: Citation/ __ClassNameInSource/
9. @@ To be decided before schema can be published! @@ group: AgentInterface/ Person/
10. @@Note gh: I see a problem with the unparsed address proposals in the original ABCD model and in two of the alternatives presented here, in that the Label for the Agent often requires the addition of city/country to disambiguate multiple agents with the same name group: AgentInterface/ Contact/
11. @@ To be decided before schema can be published! @@ group: AgentInterface/ Contact/ Addresses/
12. PROPOSAL 2: Name-variant structure @@ Seq. temporarily made optional @@ group: PersonNameProposal2/
13. Contact address. Each element should be one address; do not use multiple elements for each line! (vCard:Adr.POBox + .ExtAdr + .Street + .Locality + .Region + .PCode + .Ctry) [ATTR: language, preferred (vCard:Pref)] @@vCard defines further attributes: Home/Work, Postal/Parcel, Dom/Intl Also, vCard atomizes the address, see proposal 2 below. Perhaps at least the country should be specified in ISO 2-letter codes? group: ContactAddressProposal1/ Address/
14. @@vCard defines further attributes: Home/Work, Postal/Parcel, Dom/Intl group: ContactAddressProposal3/ __Note/
15. General contributors, or translators. (= DC.Contributors) @@Request for discussion: Translator-Contributors are currently not listed on individual Representation elements. Only a general statement about all translations together can be made. Should this be changed? Also: should one Representation be marked as 'Original/ SourceForTranslation'? @@ type: RevisionData/ Contributors/
16. An optional caption for a resource, esp. if it will be presented embedded in another document. Captions can be provided in multiple languages. Differs from the resource Label, wihich is closer related to a 'title'. @@ Issue: captions, even in multiple languages, may be obtained from the service provider. Even then it may be desirable to override them! Do we need two collections: InheritedCaption and CaptionOverride? This seems to be awkward whenever there is no ServiceProvider! Also, Label can contain a "title" only in a single language! @@ group: MediaResourceInterface/ Caption/
17. @@ Do we really need multiple relations or is a single relation to the base unit sufficient? @@ group: MeasurementUnitInterface/ Relations/ Relation/

(Generated by DiversitySchemaTools Version 0.4. Copyright (c) G. Hagedorn 2004.)