@@ -39,7 +39,13 @@ function readCsvFile(path) {
3939 } ) ;
4040}
4141
42-
42+ function tryParse ( value ) {
43+ try {
44+ return JSON . parse ( value ) ;
45+ } catch ( e ) {
46+ return value ;
47+ }
48+ }
4349
4450function createEntitiesFromRows ( rows ) {
4551 const allEntities = [ ] ;
@@ -55,14 +61,22 @@ function createEntitiesFromRows(rows) {
5561 const value = row [ key ] ;
5662 if ( value !== '' ) {
5763 switch ( key ) {
64+ case 'alternateName' :
5865 case 'birthdate' :
5966 case 'comment' :
67+ case 'controlledProperty' :
68+ case 'description' :
69+ case 'deviceState' :
6070 case 'fedWith' :
6171 case 'givenName' :
6272 case 'legalId' :
6373 case 'name' :
6474 case 'species' :
65- entity [ key ] = { value, type : 'Property' } ;
75+ case 'soilTextureType' :
76+ case 'status' :
77+ case 'supportedProtocol' :
78+ case 'agroVocConcept' :
79+ entity [ key ] = { value : tryParse ( value ) , type : 'Property' } ;
6680 break ;
6781
6882 case 'temperature' :
@@ -76,6 +90,9 @@ function createEntitiesFromRows(rows) {
7690 case 'heartRate' :
7791 entity [ key ] = { value : Number ( value ) , type : 'Property' , unitCode : '5K' , observedAt : timestamp } ;
7892 break ;
93+ case 'humidity' :
94+ entity [ key ] = { value : Number ( value ) , type : 'Property' , unitCode : 'P1' , observedAt : timestamp } ;
95+ break ;
7996 case 'weight' :
8097 entity [ key ] = {
8198 value : Number ( value ) ,
@@ -84,6 +101,13 @@ function createEntitiesFromRows(rows) {
84101 observedAt : timestamp
85102 } ;
86103 break ;
104+ case 'batteryLevel' :
105+ entity [ key ] = {
106+ value : Number ( value ) ,
107+ type : 'Property' ,
108+ unitCode : 'C62'
109+ } ;
110+ break ;
87111
88112 case 'jobTitle_name' :
89113 entity . jobTitle = {
@@ -125,32 +149,73 @@ function createEntitiesFromRows(rows) {
125149 case 'phenologicalCondition' :
126150 case 'reproductiveCondition' :
127151 case 'sex' :
128- entity [ key ] = { vocab : value , type : 'VocabProperty' } ;
152+ entity [ key ] = { vocab : tryParse ( value ) , type : 'VocabProperty' } ;
129153 break ;
130154 case 'calvedBy' :
155+ case 'controlledAsset' :
156+ case 'deviceModel' :
131157 case 'cropType' :
132158 case 'owns' :
133159 case 'owner' :
134160 case 'ownedBy' :
135161 case 'siredBy' :
136- entity [ key ] = { object : value , type : 'Relationship' } ;
162+ case 'hasAgriSoil' :
163+ case 'hasAgriCrop' :
164+ case 'hasDevices' :
165+ case 'hasAgriPest' :
166+ case 'hasAgriParcel' :
167+ case 'hasBuilding' :
168+ entity [ key ] = { object : tryParse ( value ) , type : 'Relationship' } ;
137169 break ;
138170 case 'locatedAt' :
139171 case 'observation' :
140172 case 'prediction' :
141- entity [ key ] = { object : value , type : 'Relationship' , observedAt : timestamp } ;
173+ entity [ key ] = { object : tryParse ( value ) , type : 'Relationship' , observedAt : timestamp } ;
142174 break ;
143175 case 'id' :
144176 case 'type' :
177+ case 'lat' :
178+ case 'lng' :
179+ case 'addressLocality' :
180+ case 'addressRegion' :
181+ case 'postalCode' :
182+ case 'providedBy' :
145183 break ;
146184 default :
147- //debug('unknown : ' + key);
185+ if ( ! key . includes ( '_' ) ) {
186+ debug ( 'unknown : ' + key ) ;
187+ }
148188 break ;
149189 }
150190 }
151-
152191 } ) ;
153192
193+ switch ( entity . type ) {
194+ case 'Animal' :
195+ if ( row . providedBy ) {
196+ if ( entity . heartRate ) {
197+ entity . heartRate . providedBy = {
198+ type : 'Relationship' ,
199+ object : row . providedBy
200+ } ;
201+ }
202+ if ( entity . location ) {
203+ entity . location . providedBy = {
204+ type : 'Relationship' ,
205+ object : row . providedBy
206+ } ;
207+ }
208+ }
209+ break ;
210+ case 'AgriParcel' :
211+ if ( row . providedBy ) {
212+ entity . humidity . providedBy = {
213+ type : 'Relationship' ,
214+ object : row . providedBy
215+ } ;
216+ }
217+ }
218+
154219 allEntities . push ( entity ) ;
155220 } ) ;
156221 return allEntities ;
0 commit comments