Project

General

Profile

« Previous | Next » 

Revision 603

VegX-VegBIEN mapping: Took advantage of location.confidentialitystatus being optional

View differences:

test/accepted_output/SALVIAS.plots.VegBIEN.xml
32 32
                </locationplace>
33 33
                <reallatitude>-3.95</reallatitude>
34 34
                <reallongitude>-73.4333</reallongitude>
35
                <confidentialitystatus>0</confidentialitystatus>
36 35
                <authorlocationcode>ALP-11</authorlocationcode>
37 36
            </location>
38 37
        </location_id>
......
77 76
                </locationplace>
78 77
                <reallatitude>-3.95</reallatitude>
79 78
                <reallongitude>-73.4333</reallongitude>
80
                <confidentialitystatus>0</confidentialitystatus>
81 79
                <authorlocationcode>ALP-12</authorlocationcode>
82 80
            </location>
83 81
        </location_id>
test/accepted_output/SALVIAS.organisms.VegBIEN.xml
7 7
                    <location>
8 8
                        <parent_id>
9 9
                            <location>
10
                                <confidentialitystatus>0</confidentialitystatus>
11 10
                                <authorlocationcode>ALP-11</authorlocationcode>
12 11
                            </location>
13 12
                        </parent_id>
14
                        <confidentialitystatus>0</confidentialitystatus>
15 13
                        <authorlocationcode>1</authorlocationcode>
16 14
                    </location>
17 15
                </location_id>
......
202 200
                    <location>
203 201
                        <parent_id>
204 202
                            <location>
205
                                <confidentialitystatus>0</confidentialitystatus>
206 203
                                <authorlocationcode>ALP-11</authorlocationcode>
207 204
                            </location>
208 205
                        </parent_id>
209
                        <confidentialitystatus>0</confidentialitystatus>
210 206
                        <authorlocationcode>4</authorlocationcode>
211 207
                    </location>
212 208
                </location_id>
test/accepted_output/SALVIAS_db.plots.VegBIEN.xml
23 23
                </locationplace>
24 24
                <reallatitude>-3.45</reallatitude>
25 25
                <reallongitude>-78.3667</reallongitude>
26
                <confidentialitystatus>0</confidentialitystatus>
27 26
                <authorlocationcode>ACHUPALL</authorlocationcode>
28 27
            </location>
29 28
        </location_id>
......
81 80
                </locationplace>
82 81
                <reallatitude>48.0667</reallatitude>
83 82
                <reallongitude>11.5</reallongitude>
84
                <confidentialitystatus>0</confidentialitystatus>
85 83
                <authorlocationcode>ALLACHER</authorlocationcode>
86 84
            </location>
87 85
        </location_id>
test/accepted_output/SALVIAS_db.organisms.VegBIEN.xml
6 6
                <authoreventcode>295</authoreventcode>
7 7
                <location_id>
8 8
                    <location>
9
                        <confidentialitystatus>0</confidentialitystatus>
10 9
                        <authorlocationcode>1</authorlocationcode>
11 10
                    </location>
12 11
                </location_id>
......
214 213
                <authoreventcode>295</authoreventcode>
215 214
                <location_id>
216 215
                    <location>
217
                        <confidentialitystatus>0</confidentialitystatus>
218 216
                        <authorlocationcode>2</authorlocationcode>
219 217
                    </location>
220 218
                </location_id>
test/accepted_output/NYBG.organisms.VegBIEN.xml
34 34
                        <reallongitude>-71.40</reallongitude>
35 35
                        <elevation>350.0</elevation>
36 36
                        <elevationrange>0.0</elevationrange>
37
                        <confidentialitystatus>0</confidentialitystatus>
38 37
                        <authorlocationcode>816590</authorlocationcode>
39 38
                    </location>
40 39
                </location_id>
......
266 265
                        <reallongitude>-88.50</reallongitude>
267 266
                        <elevation>15.0</elevation>
268 267
                        <elevationrange>0.0</elevationrange>
269
                        <confidentialitystatus>0</confidentialitystatus>
270 268
                        <authorlocationcode>220541</authorlocationcode>
271 269
                    </location>
272 270
                </location_id>
inputs/SALVIAS/maps/VegBIEN.plots.csv
38 38
sand_percent,/soilobs:[soilhorizon=unknown]/soilsand,
39 39
silt_percent,/soilobs:[soilhorizon=unknown]/soilsilt,
40 40
soil_texture,/soilobs:[soilhorizon=unknown]/soiltexture,
41
SiteCode,"/{*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/2,authoreventcode/_alt/2}",Brad: plotCode is as-assigned by data provider; guranteed to be unique only within dataset (=project)
41
SiteCode,"/{*_id/location/authorlocationcode/_alt/2,authoreventcode/_alt/2}",Brad: plotCode is as-assigned by data provider; guranteed to be unique only within dataset (=project)
inputs/SALVIAS/maps/VegBIEN.organisms.csv
28 28
infra_ep_1,"/taxondetermination[role_id/role/rolecode=computer,*_id/plantconcept/plantstatus/plantlevel=Subspecies]:[determinationtype=""Computer (automated)"",currentdetermination=true]/*_id/plantconcept/_name/last",
29 29
OrigFamily,"/taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Family]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname",Brad: OMIT
30 30
OrigSpecies,"/{taxondetermination[role_id/role/rolecode=collector]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname/_alt/2,taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Species]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname}",Brad: OMIT
31
PlotObsID,":[aggregateoccurrence/count/_alt/2=1]/{aggregateoccurrence/individualplant/authorplantcode,specimen:[*_id/reference]/sourceaccessioncode,*_id/locationevent/authoreventcode/_alt/2,*_id/locationevent/*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/3}","Brad: Neither is correct; this is just an internal ID for table plotObservations. However, it has the important property of uniquely identifying an ""observation"", which is an individual tree, in the case of an individual observation, or a records of a species with an associated count of individuals or measurement of percent cover, in the case of aggregate observations. Not sure where to store this. Main point is that it is not part of the original data, but an auto_increment added later."
31
PlotObsID,":[aggregateoccurrence/count/_alt/2=1]/{aggregateoccurrence/individualplant/authorplantcode,specimen:[*_id/reference]/sourceaccessioncode,*_id/locationevent/authoreventcode/_alt/2,*_id/locationevent/*_id/location/authorlocationcode/_alt/3}","Brad: Neither is correct; this is just an internal ID for table plotObservations. However, it has the important property of uniquely identifying an ""observation"", which is an individual tree, in the case of an individual observation, or a records of a species with an associated count of individuals or measurement of percent cover, in the case of aggregate observations. Not sure where to store this. Main point is that it is not part of the original data, but an auto_increment added later."
mappings/SALVIAS_db-VegBIEN.organisms.csv
28 28
infra_ep_1,"/taxondetermination[role_id/role/rolecode=computer,*_id/plantconcept/plantstatus/plantlevel=Subspecies]:[determinationtype=""Computer (automated)"",currentdetermination=true]/*_id/plantconcept/_name/last",
29 29
OrigFamily,"/taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Family]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname",Brad: OMIT
30 30
OrigSpecies,"/{taxondetermination[role_id/role/rolecode=collector]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname/_alt/2,taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Species]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname}",Brad: OMIT
31
PlotObsID,":[aggregateoccurrence/count/_alt/2=1]/{aggregateoccurrence/individualplant/authorplantcode,specimen:[*_id/reference]/sourceaccessioncode,*_id/locationevent/authoreventcode/_alt/2,*_id/locationevent/*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/3}","Brad: Neither is correct; this is just an internal ID for table plotObservations. However, it has the important property of uniquely identifying an ""observation"", which is an individual tree, in the case of an individual observation, or a records of a species with an associated count of individuals or measurement of percent cover, in the case of aggregate observations. Not sure where to store this. Main point is that it is not part of the original data, but an auto_increment added later."
31
PlotObsID,":[aggregateoccurrence/count/_alt/2=1]/{aggregateoccurrence/individualplant/authorplantcode,specimen:[*_id/reference]/sourceaccessioncode,*_id/locationevent/authoreventcode/_alt/2,*_id/locationevent/*_id/location/authorlocationcode/_alt/3}","Brad: Neither is correct; this is just an internal ID for table plotObservations. However, it has the important property of uniquely identifying an ""observation"", which is an individual tree, in the case of an individual observation, or a records of a species with an associated count of individuals or measurement of percent cover, in the case of aggregate observations. Not sure where to store this. Main point is that it is not part of the original data, but an auto_increment added later."
mappings/VegX-VegBIEN.plots.csv
9 9
/*UniqueIdentifierID->/*s/plot/county,/*_id/location/locationplace(/*_id/namedplace[placesystem=county])/placename
10 10
/*UniqueIdentifierID->/*s/plot/simpleUserdefined[name=localityDescription]/value,/*_id/location/locationplace/*_id/namedplace/placedescription
11 11
/*UniqueIdentifierID->/*s/plot/simpleUserdefined[name=locality]/value,/*_id/location/locationplace/*_id/namedplace/placedescription
12
/*UniqueIdentifierID->/*s/plot/relatedSpatialItem/relatedItem[relationshipType=parentPlot]/relatedItemID->/*s/plot/plotUniqueIdentifier,/*_id/location/parent_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/1
12
/*UniqueIdentifierID->/*s/plot/relatedSpatialItem/relatedItem[relationshipType=parentPlot]/relatedItemID->/*s/plot/plotUniqueIdentifier,/*_id/location/parent_id/location/authorlocationcode/_alt/1
13 13
/*UniqueIdentifierID->/*s/plot/geospatial/DecimalLatitude,/*_id/location/reallatitude
14 14
/*UniqueIdentifierID->/*s/plot/geospatial/DecimalLongitude,/*_id/location/reallongitude
15 15
/*UniqueIdentifierID->/*s/plot/slopeAspect,/*_id/location/slopeaspect
......
49 49
->/*s/abioticObservation[*ID]/simpleUserdefined[name=texture]/value,/soilobs:[soilhorizon=unknown]/soiltexture
50 50
/*UniqueIdentifierID->/*s/plot/geospatial/maximumDepthInMeters,/waterdepth/max
51 51
/*UniqueIdentifierID->/*s/plot/geospatial/minimumDepthInMeters,/waterdepth/min
52
/*UniqueIdentifierID->/*s/plot/plotUniqueIdentifier,"/{*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/2,authoreventcode/_alt/2}"
52
/*UniqueIdentifierID->/*s/plot/plotUniqueIdentifier,"/{*_id/location/authorlocationcode/_alt/2,authoreventcode/_alt/2}"
mappings/VegX-VegBIEN.organisms.csv
9 9
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/county,/*_id/locationevent/*_id/location/locationplace(/*_id/namedplace[placesystem=county])/placename
10 10
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/simpleUserdefined[name=localityDescription]/value,/*_id/locationevent/*_id/location/locationplace/*_id/namedplace/placedescription
11 11
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/simpleUserdefined[name=locality]/value,/*_id/locationevent/*_id/location/locationplace/*_id/namedplace/placedescription
12
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/relatedSpatialItem/relatedItem[relationshipType=parentPlot]/relatedItemID->/*s/plot/plotUniqueIdentifier,/*_id/locationevent/*_id/location/parent_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/1
12
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/relatedSpatialItem/relatedItem[relationshipType=parentPlot]/relatedItemID->/*s/plot/plotUniqueIdentifier,/*_id/locationevent/*_id/location/parent_id/location/authorlocationcode/_alt/1
13 13
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/geospatial/DecimalLatitude,/*_id/locationevent/*_id/location/reallatitude
14 14
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/geospatial/DecimalLongitude,/*_id/locationevent/*_id/location/reallongitude
15 15
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/slopeAspect,/*_id/locationevent/*_id/location/slopeaspect
......
49 49
/*ID->/*s/plotObservation->/*s/abioticObservation[*ID]/simpleUserdefined[name=texture]/value,/*_id/locationevent/soilobs:[soilhorizon=unknown]/soiltexture
50 50
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/geospatial/maximumDepthInMeters,/*_id/locationevent/waterdepth/max
51 51
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/geospatial/minimumDepthInMeters,/*_id/locationevent/waterdepth/min
52
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/plotUniqueIdentifier,"/*_id/locationevent/{*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/2,authoreventcode/_alt/2}"
52
/*ID->/*s/plotObservation/*UniqueIdentifierID->/*s/plot/plotUniqueIdentifier,"/*_id/locationevent/{*_id/location/authorlocationcode/_alt/2,authoreventcode/_alt/2}"
53 53
/simpleUserdefined[name=count]/value,/aggregateoccurrence/count/_alt/1
54 54
/simpleUserdefined[name=coverPercent]/value,/aggregateoccurrence/cover
55 55
/simpleUserdefined[name=interceptCm]/value,"/aggregateoccurrence/definedvalue[*_id/userdefined[tablename=aggregateoccurrence,userdefinedname=interceptCm]]:[@fkey=tableRecord_ID]/definedvalue"
......
122 122
"/*ID->/*s/individualOrganism/*sID->/*s/taxonNameUsageConcept->/*s/taxonDetermination[*ID,partyWithRole/role=identifier]/*s/taxonRelationshipAssertion(/assertion/*ID->/*s/taxonConcept[Rank/@code=phyl_div])/Name","/taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Subkingdom]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname"
123 123
"/*ID->/*s/individualOrganism/*sID->/*s/taxonNameUsageConcept->/*s/taxonDetermination[*ID,partyWithRole/role=identifier]/*s/taxonRelationshipAssertion(/assertion/*ID->/*s/taxonConcept[Rank/@code=ssp])/Name","/taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Subspecies]/*_id/plantconcept/*_id/*/plantname"
124 124
"/*ID->/*s/individualOrganism/*sID->/*s/taxonNameUsageConcept->/*s/taxonDetermination[*ID,partyWithRole/role=identifier]/*s/taxonRelationshipAssertion(/assertion/*ID->/*s/taxonConcept[Rank/@code=sp])/Name","/{taxondetermination[role_id/role/rolecode=collector]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname/_alt/2,taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Species]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname}"
125
/*ID->/*s/individualOrganism/*sID->/*s/taxonNameUsageConcept/voucher,":[aggregateoccurrence/count/_alt/2=1]/{aggregateoccurrence/individualplant/authorplantcode,specimen:[*_id/reference]/sourceaccessioncode,*_id/locationevent/authoreventcode/_alt/2,*_id/locationevent/*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/3}"
125
/*ID->/*s/individualOrganism/*sID->/*s/taxonNameUsageConcept/voucher,":[aggregateoccurrence/count/_alt/2=1]/{aggregateoccurrence/individualplant/authorplantcode,specimen:[*_id/reference]/sourceaccessioncode,*_id/locationevent/authoreventcode/_alt/2,*_id/locationevent/*_id/location/authorlocationcode/_alt/3}"
mappings/NYBG-VegBIEN.organisms.csv
39 39
Phylum,"/taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Subkingdom]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname",
40 40
Subspecies,"/taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Subspecies]/*_id/plantconcept/*_id/*/plantname",
41 41
Species,"/{taxondetermination[role_id/role/rolecode=collector]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname/_alt/2,taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Species]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname}",
42
UniqueNYInternalRecordNumber,":[aggregateoccurrence/count/_alt/2=1]/{aggregateoccurrence/individualplant/authorplantcode,specimen:[*_id/reference]/sourceaccessioncode,*_id/locationevent/authoreventcode/_alt/2,*_id/locationevent/*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/3}","Brad: OMIT; Aaron: We need this field because it is the only ID column with an entry in every row; Brad: OK, use this as primary key"
42
UniqueNYInternalRecordNumber,":[aggregateoccurrence/count/_alt/2=1]/{aggregateoccurrence/individualplant/authorplantcode,specimen:[*_id/reference]/sourceaccessioncode,*_id/locationevent/authoreventcode/_alt/2,*_id/locationevent/*_id/location/authorlocationcode/_alt/3}","Brad: OMIT; Aaron: We need this field because it is the only ID column with an entry in every row; Brad: OK, use this as primary key"
mappings/SALVIAS-VegBIEN.plots.csv
37 37
sand_percent,/soilobs:[soilhorizon=unknown]/soilsand,
38 38
silt_percent,/soilobs:[soilhorizon=unknown]/soilsilt,
39 39
soil_texture,/soilobs:[soilhorizon=unknown]/soiltexture,
40
plot_code,"/{*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/2,authoreventcode/_alt/2}",Brad: plotCode is as-assigned by data provider; guranteed to be unique only within dataset (=project)
40
plot_code,"/{*_id/location/authorlocationcode/_alt/2,authoreventcode/_alt/2}",Brad: plotCode is as-assigned by data provider; guranteed to be unique only within dataset (=project)
mappings/SALVIAS-VegBIEN.organisms.csv
1 1
SALVIAS,VegBIEN:/taxonoccurrence,Comments
2
plot_code,/*_id/locationevent/*_id/location/parent_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/1,"Brad: Same as plotCode, above"
2
plot_code,/*_id/locationevent/*_id/location/parent_id/location/authorlocationcode/_alt/1,"Brad: Same as plotCode, above"
3 3
census_date,/*_id/locationevent/obsstartdate/_date/year,
4
subplot,"/*_id/locationevent/{*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/2,authoreventcode/_alt/2}",
4
subplot,"/*_id/locationevent/{*_id/location/authorlocationcode/_alt/2,authoreventcode/_alt/2}",
5 5
no_of_individuals,/aggregateoccurrence/count/_alt/1,"Brad: Incorrect for VegX. This is a count of number of indiiduals for an *aggregate* observation. For VegBank, I'm not sure. Not exactly the same as stemCount. An individual tree could have 3 stems but would still only count as 1. We need to check with Bob on this."
6 6
cover_percent,/aggregateoccurrence/cover,
7 7
intercept_cm,"/aggregateoccurrence/definedvalue[*_id/userdefined[tablename=aggregateoccurrence,userdefinedname=interceptCm]]:[@fkey=tableRecord_ID]/definedvalue","Brad: Incorrect for VegBank This is an aggregate observation. Used in line-intercept methodology only, describes the point along centerline at which an individual intercepts the center line of the plot. Used to determin relative abundance."
......
37 37
infra_ep_1,"/taxondetermination[role_id/role/rolecode=computer,*_id/plantconcept/plantstatus/plantlevel=Subspecies]:[determinationtype=""Computer (automated)"",currentdetermination=true]/*_id/plantconcept/_name/last",
38 38
orig_family,"/taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Family]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname",Brad: OMIT
39 39
orig_species,"/{taxondetermination[role_id/role/rolecode=collector]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname/_alt/2,taxondetermination[role_id/role/rolecode=identifier,*_id/plantconcept/plantstatus/plantlevel=Species]:[determinationtype=Author,originaldetermination=true,currentdetermination=true]/*_id/plantconcept/*_id/*/plantname}",Brad: OMIT
40
OBSERVATION_ID,":[aggregateoccurrence/count/_alt/2=1]/{aggregateoccurrence/individualplant/authorplantcode,specimen:[*_id/reference]/sourceaccessioncode,*_id/locationevent/authoreventcode/_alt/2,*_id/locationevent/*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/3}","Brad: Neither is correct; this is just an internal ID for table plotObservations. However, it has the important property of uniquely identifying an ""observation"", which is an individual tree, in the case of an individual observation, or a records of a species with an associated count of individuals or measurement of percent cover, in the case of aggregate observations. Not sure where to store this. Main point is that it is not part of the original data, but an auto_increment added later."
40
OBSERVATION_ID,":[aggregateoccurrence/count/_alt/2=1]/{aggregateoccurrence/individualplant/authorplantcode,specimen:[*_id/reference]/sourceaccessioncode,*_id/locationevent/authoreventcode/_alt/2,*_id/locationevent/*_id/location/authorlocationcode/_alt/3}","Brad: Neither is correct; this is just an internal ID for table plotObservations. However, it has the important property of uniquely identifying an ""observation"", which is an individual tree, in the case of an individual observation, or a records of a species with an associated count of individuals or measurement of percent cover, in the case of aggregate observations. Not sure where to store this. Main point is that it is not part of the original data, but an auto_increment added later."
mappings/SALVIAS_db-VegBIEN.plots.csv
38 38
sand_percent,/soilobs:[soilhorizon=unknown]/soilsand,
39 39
silt_percent,/soilobs:[soilhorizon=unknown]/soilsilt,
40 40
soil_texture,/soilobs:[soilhorizon=unknown]/soiltexture,
41
SiteCode,"/{*_id/location:[confidentialitystatus=0]/authorlocationcode/_alt/2,authoreventcode/_alt/2}",Brad: plotCode is as-assigned by data provider; guranteed to be unique only within dataset (=project)
41
SiteCode,"/{*_id/location/authorlocationcode/_alt/2,authoreventcode/_alt/2}",Brad: plotCode is as-assigned by data provider; guranteed to be unique only within dataset (=project)

Also available in: Unified diff