Project

General

Profile

CdmVersionTwoDiscussion » History » Version 76

Andreas Müller, 02/23/2022 06:41 PM

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