@@ -4,13 +4,17 @@ import bald.netcdf.CdlConverter.writeToNetCdf
44import net.bald.BinaryArray
55import net.bald.Var
66import net.bald.Container
7+ import net.bald.context.AliasDefinition
78import net.bald.context.ModelContext
9+ import net.bald.model.ModelAliasDefinition
810import net.bald.vocab.BALD
11+ import org.apache.jena.rdf.model.ModelFactory
912import org.apache.jena.rdf.model.ResourceFactory.createPlainLiteral
1013import org.apache.jena.rdf.model.ResourceFactory.createResource
1114import org.apache.jena.shared.PrefixMapping
1215import org.apache.jena.vocabulary.DCTerms
1316import org.apache.jena.vocabulary.RDF
17+ import org.apache.jena.vocabulary.RDFS
1418import org.apache.jena.vocabulary.SKOS
1519import org.junit.jupiter.api.Test
1620import org.junit.jupiter.api.assertThrows
@@ -164,6 +168,21 @@ class NetCdfBinaryArrayTest {
164168 assertEquals(" Prefix attribute skos__ must have a string value." , ise.message)
165169 }
166170
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+
167186 /* *
168187 * Requirements class D
169188 */
@@ -208,7 +227,7 @@ class NetCdfBinaryArrayTest {
208227 val vars = ba.root.vars().sortedBy(Var ::toString).toList()
209228
210229 assertEquals(2 , vars.size)
211- AttributeSourceVerifier (vars[0 ]).attributes() {
230+ AttributeSourceVerifier (vars[0 ]).attributes {
212231 attribute(RDF .type.uri) {
213232 value(BALD .Array )
214233 }
@@ -220,4 +239,47 @@ class NetCdfBinaryArrayTest {
220239 // none
221240 }
222241 }
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+ }
223285}
0 commit comments