Project

General

Profile

CdmVersionTwoDiscussion » History » Version 77

Andreas Müller, 04/07/2022 04:41 PM

1 2 Andreas Müller
# CDM v2.0 Discussion
2
3 77 Andreas Müller
*This is a site to discuss possible changes to the [CDM v1.4](https://cybertaxonomy.org/cdm/v14/) to go into [CDM v2.0](https://cybertaxonomy.org/cdm/v20/)*
4
*See also Component C5.80 - Review of CDM v.1 and model for descriptive data in CDM v.2*
5 2 Andreas Müller
6
----
7
8 77 Andreas Müller
{{toc}}
9 2 Andreas Müller
10 77 Andreas Müller
{{child_pages(depth=1)}}
11 2 Andreas Müller
12
13 61 Andreas Müller
## Taxonomic Data
14
15
16 63 Andreas Müller
17
### Separation Of Taxonomic Concept And Taxonomic View
18 61 Andreas Müller
19
20
There is a need to separate taxonomic concept information from taxonomic view information resulting in the new classes TaxonomicView and TaxonNode.
21
22
23 65 Andreas Müller
![](CdmTaxonomicView:taxonomicView.png)
24 62 Andreas Müller
25 61 Andreas Müller
See [taxonomic view](http://dev.e-taxonomy.eu/trac/wiki/CdmTaxonomicView) for further information.
26
27
28
29 10 Helene Fradin
30 69 Helene Fradin
31
## DESCRIPTIVE DATA - CHANGES BEING TESTED
32 3 Andreas Müller
33 1 Andreas Müller
34 10 Helene Fradin
35
----
36
37
38 68 Helene Fradin
1. Media extends IdentifiableEntity
39 1 Andreas Müller
40 68 Helene Fradin
- addition of a ComparableTo method
41 1 Andreas Müller
42 68 Helene Fradin
- deletion of the redundant attribute 'rights'
43 1 Andreas Müller
44 6 Helene Fradin
45 68 Helene Fradin
2. TermBase extends IdentifiableEntity
46 1 Andreas Müller
47
48 71 Andreas Müller
There was redundancy with 'implements Comparable<T>' in OrderedTermBase and 'implements Comparable<!IdentifiableEntity>' in IdentifiableIdentity.
49 30 Helene Fradin
50 1 Andreas Müller
51 71 Andreas Müller
- I erased « implements Comparable<!IdentifiableEntity> » in IdentifiableEntity
52 68 Helene Fradin
53 1 Andreas Müller
54 68 Helene Fradin
3. adding OnlyApplicableIf / InapplicableIf to FeatureNode 
55 1 Andreas Müller
56
57 68 Helene Fradin
private Set<State> onlyApplicableIf = new HashSet<State>();
58 15 Helene Fradin
59 68 Helene Fradin
private Set<State> inapplicableIf = new HashSet<State>();
60 1 Andreas Müller
61
62 68 Helene Fradin
with the associated get, add, remove methods.
63 1 Andreas Müller
64 17 Helene Fradin
65 68 Helene Fradin
These attributes are not direct equivalent for onlyApplicableIf and inapplicableIf in SDD as they are attached directly to the child feature rather than the parent feature, which allow having different inapplicability rules for each child feature.
66 1 Andreas Müller
67
68 68 Helene Fradin
4. Creation of the WorkingSet class
69 17 Helene Fradin
70
71 68 Helene Fradin
public class WorkingSet<S extends DescriptionBase> extends AnnotatableEntity {
72 1 Andreas Müller
73 68 Helene Fradin
	…
74 18 Helene Fradin
75 68 Helene Fradin
private Set<Representation> representations = new HashSet<Representation>();
76 1 Andreas Müller
77 68 Helene Fradin
...
78 1 Andreas Müller
79 68 Helene Fradin
private FeatureTree descriptiveSystem;
80 18 Helene Fradin
81 68 Helene Fradin
...
82 1 Andreas Müller
83
private Set<S> descriptions = new HashSet<S>();
84
85 68 Helene Fradin
…
86 1 Andreas Müller
87
}
88 68 Helene Fradin
89 1 Andreas Müller
90 71 Andreas Müller
5. Completion of IIdentificationKey interface
91 1 Andreas Müller
92
93 68 Helene Fradin
public interface IIdentificationKey {
94 1 Andreas Müller
95 70 Andreas Müller
	    public Set<!NamedArea> getGeographicalScope();
96 1 Andreas Müller
97 70 Andreas Müller
	    public void addGeographicalScope(!NamedArea geographicalScope);
98 1 Andreas Müller
99 70 Andreas Müller
	    public void removeGeographicalScope(!NamedArea geographicalScope);
100 1 Andreas Müller
101 68 Helene Fradin
	    public Set<Taxon> getTaxonomicScope();
102 1 Andreas Müller
103 68 Helene Fradin
	    public void addTaxonomicScope(Taxon taxon);
104 1 Andreas Müller
105 68 Helene Fradin
	    public void removeTaxonomicScope(Taxon taxon);
106 1 Andreas Müller
107 68 Helene Fradin
	    public Set<Scope> getScopeRestrictions();
108 1 Andreas Müller
109 68 Helene Fradin
	    public Set<Taxon> getCoveredTaxa();
110 22 Helene Fradin
111 68 Helene Fradin
	    public void addCoveredTaxon(Taxon taxon);
112 1 Andreas Müller
113 68 Helene Fradin
	    public void removeCoveredTaxon(Taxon taxon);
114 30 Helene Fradin
115 1 Andreas Müller
}
116 68 Helene Fradin
117 21 Helene Fradin
118 1 Andreas Müller
I removed 'representations' as MultiAccessKey and PolytomousKey inherit it from their hierarchy. I added it to MediaKey (former IdentificationKey) under the name of keyRepresentations in order not to mix with the media representations.
119 68 Helene Fradin
120 1 Andreas Müller
121
6. Modification of IdentificationKey in accordance (and renaming it to MediaKey with all the necessary modifications in concerned classes)
122 68 Helene Fradin
123 1 Andreas Müller
public class MediaKey extends Media implements IIdentificationKey{
124 68 Helene Fradin
125 26 Helene Fradin
	…
126 68 Helene Fradin
127
	private Set<Taxon> coveredTaxa = new HashSet<Taxon>();
128 12 Helene Fradin
129 68 Helene Fradin
…
130 1 Andreas Müller
131 70 Andreas Müller
	private Set<!NamedArea> geographicalScope = new HashSet<!NamedArea>();
132 12 Helene Fradin
133 68 Helene Fradin
…
134 24 Helene Fradin
135 68 Helene Fradin
	private Set<Taxon> taxonomicScope = new HashSet<Taxon>();
136 1 Andreas Müller
137 68 Helene Fradin
…
138 24 Helene Fradin
139 68 Helene Fradin
	private Set<Scope> scopeRestrictions = new HashSet<Scope>();
140 24 Helene Fradin
141 68 Helene Fradin
…
142 24 Helene Fradin
143 68 Helene Fradin
	private Set<Representation> keyRepresentations = new HashSet<Representation>();
144 25 Helene Fradin
145 68 Helene Fradin
…
146 25 Helene Fradin
147
}
148 1 Andreas Müller
149 25 Helene Fradin
150
7. Creation of the class MultiAccessKey
151 68 Helene Fradin
152 1 Andreas Müller
153 32 Helene Fradin
public class MultiAccessKey extends WorkingSet implements IIdentificationKey{
154 68 Helene Fradin
155 32 Helene Fradin
	...
156 68 Helene Fradin
157 27 Helene Fradin
	private Set<Taxon> coveredTaxa = new HashSet<Taxon>();
158 68 Helene Fradin
159 27 Helene Fradin
	...
160
161 68 Helene Fradin
	private Set<Taxon> taxonomicScope = new HashSet<Taxon>();
162 1 Andreas Müller
163 68 Helene Fradin
	...
164 57 Helene Fradin
165 70 Andreas Müller
	private Set<!NamedArea> geographicalScope = new HashSet<!NamedArea>();
166 57 Helene Fradin
167 68 Helene Fradin
	...
168 57 Helene Fradin
169 68 Helene Fradin
	private Set<Scope> scopeRestrictions = new HashSet<Scope>();
170 57 Helene Fradin
171 68 Helene Fradin
}
172 1 Andreas Müller
173 57 Helene Fradin
174
8. Creation of PolytomousKey
175 68 Helene Fradin
176 57 Helene Fradin
177
public class PolytomousKey extends FeatureTree implements IIdentificationKey{
178 68 Helene Fradin
179 58 Helene Fradin
	...
180 68 Helene Fradin
181 58 Helene Fradin
	private Set<Taxon> coveredTaxa = new HashSet<Taxon>();
182 68 Helene Fradin
183 58 Helene Fradin
	...
184
185 68 Helene Fradin
	private Set<Taxon> taxonomicScope = new HashSet<Taxon>();
186 58 Helene Fradin
187 68 Helene Fradin
	
188
	...
189 58 Helene Fradin
190 70 Andreas Müller
	private Set<!NamedArea> geographicalScope = new HashSet<!NamedArea>();
191 58 Helene Fradin
192 68 Helene Fradin
	...
193 59 Helene Fradin
194 68 Helene Fradin
	private Set<Scope> scopeRestrictions = new HashSet<Scope>();
195 58 Helene Fradin
196 68 Helene Fradin
}
197 58 Helene Fradin
198
199 68 Helene Fradin
9. Addition of the attribute 'result', 'question' and 'taxon' to FeatureNode so that a FeatureTree can store the identification path in the case of a polytomous key.
200 58 Helene Fradin
201
202 68 Helene Fradin
private DescriptionElementBase result;
203 58 Helene Fradin
204 68 Helene Fradin
private Set<Representation> questions = new HashSet<Representation>();
205 58 Helene Fradin
206 68 Helene Fradin
private Taxon taxon;