Project

General

Profile

feature request #6581

Updated by Andreas Müller almost 7 years ago

Currently we have OriginalSource usually used for collections of sources while single references such as nomenclaturalReference or references for relations (or even secundum reference) use 2 fields for defining the reference, the references and the microreference fields. This is generally problematic e.g. when formatting the nomenclatural citation. Also it reduces the possibility to add further information that is available in OriginalSource such as name used in source (could be used for original spelling), source information (currently "name in source"), or further features such as URL(s) that do link to an online version of the source together with a comment (see #6588). 

 We may want to handle all these references as OriginalSources. Also this eases the usage of the Reference class as it is not linked from so many places anymore (but therefore OriginalSource is linked more). Also we can easier implement common formatters for sources. 
 Also this could improve the handling for protologues and similar "proves" for nomenclatural acts or references in general. 
 
 Possible candidates are 

 * nomenclatural reference 
 * RelationshipBase reference 
 * TypeDesignation 
 * Classification 
 * Secundum reference (?) 

 Note: We already have the class ReferencedEntityBase which inherits from AnnotatableEntity and is the base class for RelationshipBase and TypeDesignation. This can be kept and the 3 parameters citation, microCitation and originalNameString can be replaced by according OriginalSource fields. 

 Open issues: 

 * do we want to keep the direct methods, e.g. getNomenclaturalReference() in the main classes 
 * how to delete a source if it became completely empty 
      * how to decide if a source is completely empty (is an attached annotation or import source enough to make it not empty, or is it required that a "citation" exist. 
 * should we support one common interface which makes it easier to program against but methods are difficult to name, getSource() or getOriginalSource() might not be an expected label for getNomenclaturalSource() in TaxonName or TypeDesignationBase. Maybe we use 2 interfaces, one for nomenclatural sources. 
 * What OriginalSourceType to use: *NomenclaturalReference* could be a very strict source type for names and type designations, *OriginalSource* might be a more general one, maybe NomenclaturalReference might become a subtype; how is the relationship to PrimaryTaxonomicSource 
 * IMPORTANT: should we store this source together with other sources if available. This is the case for TaxonName.nomenclaturalReference and TaxonBase.secundum where the main classes are identifiable and already have sources. There might be performance issues and lazy loading issues if the specific source is stored together with the set of OrginalSources. 

 
 

Back