@@ -5,7 +5,9 @@ import bald.jsonld.ResourceFileConverter
55import bald.model.ModelVerifier
66import bald.netcdf.CdlConverter.writeToNetCdf
77import net.bald.vocab.BALD
8+ import org.apache.jena.datatypes.xsd.XSDDatatype
89import org.apache.jena.rdf.model.ModelFactory.createDefaultModel
10+ import org.apache.jena.rdf.model.Resource
911import org.apache.jena.rdf.model.ResourceFactory.*
1012import org.apache.jena.riot.RiotException
1113import org.apache.jena.vocabulary.*
@@ -360,14 +362,11 @@ class BinaryArrayConvertCliTest {
360362 statement(RDF .type, BALD .Container )
361363 statement(BALD .contains, createResource(" http://test.binary-array-ld.net/example/" )) {
362364 statement(TestVocab .orderedVar) {
363- statement(RDF .first, createResource(" http://test.binary-array-ld.net/example/var0" ))
364- statement(RDF .rest) {
365- statement(RDF .first, createResource(" http://test.binary-array-ld.net/example/foo/bar/var2" ))
366- statement(RDF .rest) {
367- statement(RDF .first, createResource(" http://test.binary-array-ld.net/example/baz/var3" ))
368- statement(RDF .rest, RDF .nil)
369- }
370- }
365+ list(
366+ createResource(" http://test.binary-array-ld.net/example/var0" ),
367+ createResource(" http://test.binary-array-ld.net/example/foo/bar/var2" ),
368+ createResource(" http://test.binary-array-ld.net/example/baz/var3" )
369+ )
371370 }
372371 statement(TestVocab .rootVar, createResource(" http://test.binary-array-ld.net/example/var0" ))
373372 statement(TestVocab .unorderedVar, createResource(" http://test.binary-array-ld.net/example/foo/bar/var2" ))
@@ -407,4 +406,75 @@ class BinaryArrayConvertCliTest {
407406 }
408407 }
409408 }
409+
410+ @Test
411+ fun run_withCoordinateVars_outputsCoordinateRanges () {
412+ val aliasFile = ResourceFileConverter .toFile(" /turtle/alias.ttl" , " ttl" )
413+ val inputFile = writeToNetCdf(" /netcdf/coordinate-var.cdl" )
414+ val outputFile = createTempFile()
415+
416+ run (
417+ " --uri" , " http://test.binary-array-ld.net/example" ,
418+ " --alias" , aliasFile.absolutePath,
419+ inputFile.absolutePath,
420+ outputFile.absolutePath
421+ )
422+
423+ fun sortAnon (res : Resource ): String {
424+ return if (res.hasProperty(BALD .target)) {
425+ res.getProperty(BALD .target).`object `.toString()
426+ } else {
427+ res.id.toString()
428+ }
429+ }
430+
431+ val model = createDefaultModel().read(outputFile.toURI().toString(), " ttl" )
432+ ModelVerifier (model).apply {
433+ resource(" http://test.binary-array-ld.net/example" ) {
434+ statement(RDF .type, BALD .Container )
435+ statement(BALD .contains, createResource(" http://test.binary-array-ld.net/example/" )) {
436+ statement(RDF .type, BALD .Container )
437+ statement(BALD .contains, createResource(" http://test.binary-array-ld.net/example/elev" ), sortAnon = ::sortAnon) {
438+ statement(RDF .type, BALD .Array )
439+ statement(RDFS .label, createPlainLiteral(" height" ))
440+ statement(BALD .references) {
441+ statement(RDF .type, BALD .Reference )
442+ statement(BALD .target, createResource(" http://test.binary-array-ld.net/example/lat" ))
443+ statement(BALD .targetRefShape) {
444+ list(createTypedLiteral(15 ), createTypedLiteral(1 ))
445+ }
446+ }
447+ statement(BALD .references) {
448+ statement(RDF .type, BALD .Reference )
449+ statement(BALD .target, createResource(" http://test.binary-array-ld.net/example/lon" ))
450+ statement(BALD .targetRefShape) {
451+ list(createTypedLiteral(1 ), createTypedLiteral(10 ))
452+ }
453+ }
454+ statement(BALD .shape) {
455+ list(createTypedLiteral(15 ), createTypedLiteral(10 ))
456+ }
457+ }
458+ statement(BALD .contains, createResource(" http://test.binary-array-ld.net/example/lat" )) {
459+ statement(RDF .type, BALD .Array )
460+ statement(RDFS .label, createPlainLiteral(" latitude" ))
461+ statement(BALD .arrayFirstValue, createTypedLiteral(" 6.5" , XSDDatatype .XSDfloat ))
462+ statement(BALD .arrayLastValue, createTypedLiteral(" -6.5" , XSDDatatype .XSDfloat ))
463+ statement(BALD .shape) {
464+ list(createTypedLiteral(15 ))
465+ }
466+ }
467+ statement(BALD .contains, createResource(" http://test.binary-array-ld.net/example/lon" )) {
468+ statement(RDF .type, BALD .Array )
469+ statement(RDFS .label, createPlainLiteral(" longitude" ))
470+ statement(BALD .arrayFirstValue, createTypedLiteral(" 0.5" , XSDDatatype .XSDfloat ))
471+ statement(BALD .arrayLastValue, createTypedLiteral(" 9.5" , XSDDatatype .XSDfloat ))
472+ statement(BALD .shape) {
473+ list(createTypedLiteral(10 ))
474+ }
475+ }
476+ }
477+ }
478+ }
479+ }
410480}
0 commit comments