@@ -4,13 +4,17 @@ import bald.netcdf.CdlConverter.writeToNetCdf
4
4
import net.bald.BinaryArray
5
5
import net.bald.Var
6
6
import net.bald.Container
7
+ import net.bald.context.AliasDefinition
7
8
import net.bald.context.ModelContext
9
+ import net.bald.model.ModelAliasDefinition
8
10
import net.bald.vocab.BALD
11
+ import org.apache.jena.rdf.model.ModelFactory
9
12
import org.apache.jena.rdf.model.ResourceFactory.createPlainLiteral
10
13
import org.apache.jena.rdf.model.ResourceFactory.createResource
11
14
import org.apache.jena.shared.PrefixMapping
12
15
import org.apache.jena.vocabulary.DCTerms
13
16
import org.apache.jena.vocabulary.RDF
17
+ import org.apache.jena.vocabulary.RDFS
14
18
import org.apache.jena.vocabulary.SKOS
15
19
import org.junit.jupiter.api.Test
16
20
import org.junit.jupiter.api.assertThrows
@@ -164,6 +168,21 @@ class NetCdfBinaryArrayTest {
164
168
assertEquals(" Prefix attribute skos__ must have a string value." , ise.message)
165
169
}
166
170
171
+ @Test
172
+ fun prefixMapping_withExternalPrefixMapping_returnsCombinedPrefixMapping () {
173
+ val prefix = PrefixMapping .Factory .create()
174
+ .setNsPrefix(" skos" , " http://example.org/skos/" )
175
+ .setNsPrefix(" dct" , DCTerms .NS )
176
+ val ctx = ModelContext .create(prefix)
177
+ val ba = fromCdl(" /netcdf/prefix.cdl" , " http://test.binary-array-ld.net/prefix.nc" , ctx)
178
+ val expected = mapOf (
179
+ " bald" to BALD .prefix,
180
+ " skos" to SKOS .uri,
181
+ " dct" to DCTerms .NS
182
+ )
183
+ assertEquals(expected, ba.prefixMapping.nsPrefixMap)
184
+ }
185
+
167
186
/* *
168
187
* Requirements class D
169
188
*/
@@ -208,7 +227,7 @@ class NetCdfBinaryArrayTest {
208
227
val vars = ba.root.vars().sortedBy(Var ::toString).toList()
209
228
210
229
assertEquals(2 , vars.size)
211
- AttributeSourceVerifier (vars[0 ]).attributes() {
230
+ AttributeSourceVerifier (vars[0 ]).attributes {
212
231
attribute(RDF .type.uri) {
213
232
value(BALD .Array )
214
233
}
@@ -220,4 +239,47 @@ class NetCdfBinaryArrayTest {
220
239
// none
221
240
}
222
241
}
242
+
243
+ @Test
244
+ fun attributes_withAliases_returnsAliasedValues () {
245
+ val prefix = PrefixMapping .Factory .create()
246
+ .setNsPrefix(" bald" , BALD .prefix)
247
+ .setNsPrefix(" skos" , SKOS .uri)
248
+ .setNsPrefix(" dct" , DCTerms .NS )
249
+ .setNsPrefix(" rdf" , RDF .uri)
250
+ val alias = javaClass.getResourceAsStream(" /turtle/alias.ttl" ).use { input ->
251
+ ModelFactory .createDefaultModel().read(input, null , " ttl" )
252
+ }.let (ModelAliasDefinition ::create)
253
+ val ctx = ModelContext .create(prefix, alias)
254
+ val ba = fromCdl(" /netcdf/alias.cdl" , " http://test.binary-array-ld.net/alias.nc" , ctx)
255
+ val root = ba.root
256
+ AttributeSourceVerifier (root).attributes {
257
+ attribute(BALD .isPrefixedBy.uri) {
258
+ value(createPlainLiteral(" prefix_list" ))
259
+ }
260
+ attribute(SKOS .prefLabel.uri) {
261
+ value(createPlainLiteral(" Alias metadata example" ))
262
+ }
263
+ attribute(DCTerms .publisher.uri) {
264
+ value(createResource(" ${BALD .prefix} Organisation" ))
265
+ }
266
+ attribute(" http://test.binary-array-ld.net/alias.nc/date" ) {
267
+ value(createPlainLiteral(" 2020-10-29" ))
268
+ }
269
+ }
270
+
271
+ val vars = root.vars().sortedBy(Var ::toString).toList()
272
+ assertEquals(2 , vars.size)
273
+ AttributeSourceVerifier (vars[0 ]).attributes {
274
+ attribute(RDFS .label.uri) {
275
+ value(createPlainLiteral(" var-0" ))
276
+ }
277
+ attribute(RDF .type.uri) {
278
+ value(BALD .Array )
279
+ }
280
+ attribute(SKOS .prefLabel.uri) {
281
+ value(createPlainLiteral(" Variable 0" ))
282
+ }
283
+ }
284
+ }
223
285
}
0 commit comments