Skip to content

Commit f96aaf3

Browse files
Test spec (#51)
* Set theme jekyll-theme-slate * Create index.md Initialise GH pages * Add variable references * Add test framework * Infer references from all var to var relationships * Fix deps * Set compiler plugin version * Add binary-array-api module containing core interfaces * Add API module dependency * Remove unused imports * Move ModelAliasDefinition class into model package * Add NetCDF LD converter class * Refactor CLI and spec test to use converter impl * Refactor test framework to use converter interface * Update docs and demos * Fix test doc * Fix advanced usage doc * Update root identity resource to match spec * Fix test * Update tests to current versions * Fix mistake in test spec * Fix media types in test graphs * Fix integer node types * Add format and distribution to graph output * Fix tests and remove unused uri property on binary array interface * Add format and distribution to graph Remove unused URI property on binary array interface * Remove unused imports * Fix output format test * update tests * Change converter interface to use URIs to locate resources * Optimise imports * Update docs * Add base vocab * Add base vocab to alias definition * Exclude bald:isPrefixedBy from output graph * Update docs * Rename test files * Fix tests * Add factory method and update docs * Add binary-array-ld-api javadoc links
1 parent 73fa5d6 commit f96aaf3

File tree

69 files changed

+1076
-92
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+1076
-92
lines changed

binary-array-ld-api/pom.xml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>binary-array-ld</artifactId>
7+
<groupId>net.binary-array-ld</groupId>
8+
<version>1.0.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>binary-array-ld-api</artifactId>
13+
<packaging>jar</packaging>
14+
15+
<name>Binary Array Linked Data - API</name>
16+
<description>API for Binary Array LD functionality.</description>
17+
18+
<dependencies>
19+
<!-- LIB -->
20+
<dependency>
21+
<groupId>org.apache.jena</groupId>
22+
<artifactId>jena-core</artifactId>
23+
<version>${jena.version}</version>
24+
</dependency>
25+
</dependencies>
26+
27+
<build>
28+
<plugins>
29+
<plugin>
30+
<groupId>org.jetbrains.dokka</groupId>
31+
<artifactId>dokka-maven-plugin</artifactId>
32+
</plugin>
33+
</plugins>
34+
</build>
35+
36+
</project>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.bald
2+
3+
import org.apache.jena.rdf.model.Model
4+
import java.net.URI
5+
6+
/**
7+
* A binary array to linked data converter.
8+
*/
9+
interface Converter {
10+
/**
11+
* Convert a binary array file to a linked data graph.
12+
* @param input The location of the NetCDF binary array file to convert.
13+
* @param uri The URI that identifies the binary array.
14+
* @param contexts The location of files containing JSON-LD contexts.
15+
* @param aliases The location of files containing alias definitions.
16+
* @param downloadUrl The URL from which the NetCDF file can be downloaded, if one exists. Otherwise, null.
17+
* @return The linked data graph.
18+
*/
19+
fun convert(
20+
input: URI,
21+
uri: String? = null,
22+
contexts: List<URI>? = null,
23+
aliases: List<URI>? = null,
24+
downloadUrl: String? = null
25+
): Model
26+
}
27+

binary-array-ld-cli/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,16 @@
2727
<groupId>org.apache.jena</groupId>
2828
<artifactId>jena-arq</artifactId>
2929
<version>${jena.version}</version>
30+
<exclusions>
31+
<exclusion>
32+
<artifactId>jackson-core</artifactId>
33+
<groupId>com.fasterxml.jackson.core</groupId>
34+
</exclusion>
35+
<exclusion>
36+
<artifactId>jackson-databind</artifactId>
37+
<groupId>com.fasterxml.jackson.core</groupId>
38+
</exclusion>
39+
</exclusions>
3040
</dependency>
3141
<dependency>
3242
<groupId>net.binary-array-ld</groupId>

binary-array-ld-cli/src/main/kotlin/net/bald/BinaryArrayConvertCli.kt

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package net.bald
22

3-
import net.bald.alias.AliasDefinition
4-
import net.bald.context.ModelContext
5-
import net.bald.alias.ModelAliasDefinition
6-
import net.bald.model.ModelBinaryArrayConverter
7-
import net.bald.netcdf.NetCdfBinaryArray
3+
import net.bald.netcdf.NetCdfLdConverter
84
import org.apache.commons.cli.DefaultParser
95
import org.apache.commons.cli.HelpFormatter
106
import org.apache.commons.cli.Options
11-
import org.apache.jena.rdf.model.ModelFactory
12-
import java.io.*
7+
import java.io.File
8+
import java.io.FilterOutputStream
9+
import java.io.OutputStream
10+
import java.net.URI
1311
import kotlin.system.exitProcess
1412

1513
/**
@@ -40,32 +38,20 @@ class BinaryArrayConvertCli {
4038
}
4139

4240
private fun doRun(opts: CommandLineOptions) {
43-
val context = context(opts.contextLocs)
44-
val alias = alias(opts.aliasLocs)
45-
val inputLoc = opts.inputLoc ?: throw IllegalArgumentException("First argument is required: NetCDF file to convert.")
46-
val ba = NetCdfBinaryArray.create(inputLoc, opts.uri, context, alias, opts.downloadUrl)
47-
val model = ba.use(ModelBinaryArrayConverter::convert)
41+
val input = opts.inputLoc?.let(::URI) ?: throw IllegalArgumentException("First argument is required: NetCDF file to convert.")
42+
val uri = opts.uri
43+
val context = opts.contextLocs.map(::URI)
44+
val alias = opts.aliasLocs.map(::URI)
45+
val downloadUrl = opts.downloadUrl
46+
47+
val model = NetCdfLdConverter.getInstance().convert(input, uri, context, alias, downloadUrl)
4848
val outputFormat = opts.outputFormat ?: "ttl"
4949

5050
modelOutput(opts.outputLoc).use { output ->
5151
model.write(output, outputFormat)
5252
}
5353
}
5454

55-
private fun context(contextLocs: List<String>): ModelContext {
56-
val prefixes = contextLocs.map { contextLoc ->
57-
ModelFactory.createDefaultModel().read(contextLoc, "json-ld")
58-
}
59-
60-
return ModelContext.create(prefixes)
61-
}
62-
63-
private fun alias(aliasLocs: List<String>): AliasDefinition {
64-
return ModelFactory.createDefaultModel().apply {
65-
aliasLocs.forEach(::read)
66-
}.let(ModelAliasDefinition::create)
67-
}
68-
6955
private fun options(opts: Options, vararg args: String): CommandLineOptions {
7056
return DefaultParser().parse(opts, args).let(::CommandLineOptions)
7157
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package net.bald
2+
3+
import bald.spec.BaseSpecTest
4+
import net.bald.netcdf.NetCdfLdConverter
5+
6+
class BinaryArrayConvertSpecTest: BaseSpecTest() {
7+
override val converter: Converter = NetCdfLdConverter.getInstance()
8+
}

binary-array-ld-demo/src/main/java/net/bald/NetCdfConvertJava.java

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,51 @@
11
package net.bald;
22

3-
import net.bald.alias.AliasDefinition;
4-
import net.bald.context.ModelContext;
5-
import net.bald.alias.ModelAliasDefinition;
6-
import net.bald.model.ModelBinaryArrayConverter;
7-
import net.bald.netcdf.NetCdfBinaryArray;
3+
import net.bald.netcdf.NetCdfLdConverter;
84
import org.apache.jena.rdf.model.Model;
9-
import org.apache.jena.rdf.model.ModelFactory;
10-
import org.apache.jena.shared.PrefixMapping;
5+
6+
import java.io.File;
117
import java.io.FileOutputStream;
128
import java.io.OutputStream;
9+
import java.net.URI;
10+
import java.util.Arrays;
1311

1412
/**
1513
* Demonstration of how to call the API in Java code.
1614
*/
1715
public class NetCdfConvertJava {
1816
public static void convert() throws Exception {
19-
BinaryArray ba = NetCdfBinaryArray.create("/path/to/input.nc", "http://test.binary-array-ld.net/example");
20-
Model model = ModelBinaryArrayConverter.convert(ba);
17+
URI input = new File("/path/to/input.nc").toURI();
18+
Model model = NetCdfLdConverter.Companion.getInstance().convert(input, "http://test.binary-array-ld.net/example", null, null, null);
2119

2220
try (OutputStream output = new FileOutputStream("/path/to/output.ttl")) {
2321
model.write(output, "ttl");
2422
}
2523
}
2624

2725
public static void convertWithExternalPrefixes() throws Exception {
28-
PrefixMapping prefix = ModelFactory.createDefaultModel().read("/path/to/context.json", "json-ld");
29-
ModelContext context = ModelContext.create(prefix);
30-
BinaryArray ba = NetCdfBinaryArray.create("/path/to/input.nc", "http://test.binary-array-ld.net/example", context, null, null);
31-
Model model = ModelBinaryArrayConverter.convert(ba);
26+
URI input = new File("/path/to/input.nc").toURI();
27+
URI context = new File("/path/to/context.json").toURI();
28+
Model model = NetCdfLdConverter.Companion.getInstance().convert(input, "http://test.binary-array-ld.net/example", Arrays.asList(context), null, null);
3229

3330
try (OutputStream output = new FileOutputStream("/path/to/output.ttl")) {
3431
model.write(output, "ttl");
3532
}
3633
}
3734

3835
public static void convertWithAliases() throws Exception {
39-
Model aliasModel = ModelFactory.createDefaultModel().read("/path/to/alias.ttl", "ttl");
40-
AliasDefinition alias = ModelAliasDefinition.create(aliasModel);
41-
BinaryArray ba = NetCdfBinaryArray.create("/path/to/input.nc", "http://test.binary-array-ld.net/example", null, alias, null);
42-
Model model = ModelBinaryArrayConverter.convert(ba);
36+
URI input = new File("/path/to/input.nc").toURI();
37+
URI alias = new File("/path/to/alias.ttl").toURI();
38+
Model model = NetCdfLdConverter.Companion.getInstance().convert(input, "http://test.binary-array-ld.net/example", null, Arrays.asList(alias), null);
39+
40+
try (OutputStream output = new FileOutputStream("/path/to/output.ttl")) {
41+
model.write(output, "ttl");
42+
}
43+
}
44+
45+
public static void convertWithDownloadUrl() throws Exception {
46+
String downloadUrl = "http://test.binary-array-ld.net/download/netcdf.nc";
47+
URI input = new File("/path/to/input.nc").toURI();
48+
Model model = NetCdfLdConverter.Companion.getInstance().convert(input, "http://test.binary-array-ld.net/example", null, null, downloadUrl);
4349

4450
try (OutputStream output = new FileOutputStream("/path/to/output.ttl")) {
4551
model.write(output, "ttl");

binary-array-ld-lib/pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818

1919
<dependencies>
2020
<!-- LIB -->
21+
<dependency>
22+
<groupId>net.binary-array-ld</groupId>
23+
<artifactId>binary-array-ld-api</artifactId>
24+
<version>${project.parent.version}</version>
25+
</dependency>
2126
<dependency>
2227
<groupId>org.apache.jena</groupId>
2328
<artifactId>jena-core</artifactId>
@@ -47,6 +52,13 @@
4752
<plugin>
4853
<groupId>org.jetbrains.dokka</groupId>
4954
<artifactId>dokka-maven-plugin</artifactId>
55+
<configuration>
56+
<externalDocumentationLinks>
57+
<link>
58+
<url>http://kotlin.binary-array-ld.net/javadoc/binary-array-ld-api</url>
59+
</link>
60+
</externalDocumentationLinks>
61+
</configuration>
5062
</plugin>
5163
</plugins>
5264
</build>

binary-array-ld-lib/src/main/kotlin/net/bald/alias/ModelAliasDefinition.kt renamed to binary-array-ld-lib/src/main/kotlin/net/bald/model/ModelAliasDefinition.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package net.bald.alias
1+
package net.bald.model
22

3+
import net.bald.alias.AliasDefinition
34
import net.bald.vocab.BALD
45
import org.apache.jena.rdf.model.*
56
import org.apache.jena.riot.RDFLanguages

binary-array-ld-lib/src/main/kotlin/net/bald/model/ModelBinaryArrayBuilder.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
package net.bald.model
22

33
import net.bald.BinaryArray
4-
import net.bald.vocab.BALD
5-
import org.apache.jena.rdf.model.Literal
64
import org.apache.jena.rdf.model.Model
75
import org.apache.jena.rdf.model.Resource
8-
import org.apache.jena.rdf.model.ResourceFactory.createResource
9-
import org.apache.jena.rdf.model.ResourceFactory.createStringLiteral
106
import org.apache.jena.shared.PrefixMapping
117
import org.apache.jena.vocabulary.DCAT
128
import org.apache.jena.vocabulary.DCTerms

binary-array-ld-lib/src/main/kotlin/net/bald/model/ModelBinaryArrayConverter.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package net.bald.model
33
import net.bald.BinaryArray
44
import org.apache.jena.rdf.model.Model
55
import org.apache.jena.rdf.model.ModelFactory
6-
import org.apache.jena.shared.PrefixMapping
76

87
/**
98
* API for converting a [BinaryArray] to a linked data [Model].

binary-array-ld-lib/src/main/kotlin/net/bald/model/ModelReferenceBuilder.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package net.bald.model
33
import net.bald.Dimension
44
import net.bald.Var
55
import net.bald.vocab.BALD
6+
import org.apache.jena.datatypes.xsd.XSDDatatype
67
import org.apache.jena.rdf.model.Literal
78
import org.apache.jena.rdf.model.Resource
8-
import org.apache.jena.rdf.model.ResourceFactory
9+
import org.apache.jena.rdf.model.ResourceFactory.createTypedLiteral
910
import org.apache.jena.vocabulary.RDF
1011

1112
class ModelReferenceBuilder(
@@ -40,13 +41,15 @@ class ModelReferenceBuilder(
4041

4142
fun shape(dimIds: List<String>): Iterator<Literal> {
4243
return dimIds.asSequence().map { dimId ->
43-
dimsById[dimId]?.size?.let(ResourceFactory::createTypedLiteral) ?: unitNode
44+
dimsById[dimId]?.size?.let { size ->
45+
createTypedLiteral(size.toString(), XSDDatatype.XSDinteger)
46+
} ?: unitNode
4447
}.iterator()
4548
}
4649
}
4750

4851
companion object {
49-
private val unitNode = ResourceFactory.createTypedLiteral(1)
52+
private val unitNode = createTypedLiteral("1", XSDDatatype.XSDinteger)
5053
}
5154

5255
open class Factory {

binary-array-ld-lib/src/main/kotlin/net/bald/model/ModelVarBuilder.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import net.bald.AttributeSource
44
import net.bald.Dimension
55
import net.bald.Var
66
import net.bald.vocab.BALD
7-
import org.apache.jena.rdf.model.*
7+
import org.apache.jena.datatypes.xsd.XSDDatatype
8+
import org.apache.jena.rdf.model.RDFNode
9+
import org.apache.jena.rdf.model.Resource
810
import org.apache.jena.rdf.model.ResourceFactory.createTypedLiteral
911

1012
open class ModelVarBuilder(
@@ -24,9 +26,7 @@ open class ModelVarBuilder(
2426

2527
private fun addAttributes(source: AttributeSource, resource: Resource) {
2628
val builder = attrFct.forResource(resource)
27-
source.attributes().filterNot { attr ->
28-
BALD.references.hasURI(attr.uri)
29-
}.forEach(builder::addAttribute)
29+
source.attributes().forEach(builder::addAttribute)
3030
}
3131

3232
private fun addCoordinateRange(v: Var, resource: Resource) {
@@ -79,7 +79,7 @@ open class ModelVarBuilder(
7979
}
8080

8181
private fun size(dim: Dimension): RDFNode {
82-
return createTypedLiteral(dim.size)
82+
return createTypedLiteral(dim.size.toString(), XSDDatatype.XSDinteger)
8383
}
8484

8585
override fun addReferences(resource: Resource) {

binary-array-ld-lib/src/test/kotlin/net/bald/model/ModelAliasDefinitionTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package net.bald.model
22

3-
import net.bald.alias.ModelAliasDefinition
43
import net.bald.vocab.BALD
54
import org.apache.jena.rdf.model.ModelFactory
65
import org.apache.jena.rdf.model.ResourceFactory.createProperty
@@ -9,7 +8,6 @@ import org.apache.jena.vocabulary.RDFS
98
import org.apache.jena.vocabulary.SKOS
109
import org.junit.jupiter.api.Test
1110
import org.junit.jupiter.api.assertThrows
12-
import java.lang.IllegalStateException
1311
import kotlin.test.assertEquals
1412
import kotlin.test.assertFalse
1513
import kotlin.test.assertNull

binary-array-ld-lib/src/test/kotlin/net/bald/model/ModelAttributeBuilderTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import com.nhaarman.mockitokotlin2.mock
66
import com.nhaarman.mockitokotlin2.stub
77
import net.bald.Attribute
88
import org.apache.jena.rdf.model.ModelFactory
9-
import org.apache.jena.rdf.model.ResourceFactory.*
10-
import org.apache.jena.vocabulary.RDF
9+
import org.apache.jena.rdf.model.ResourceFactory.createPlainLiteral
10+
import org.apache.jena.rdf.model.ResourceFactory.createResource
1111
import org.apache.jena.vocabulary.RDFS
12-
import org.junit.jupiter.api.*
12+
import org.junit.jupiter.api.Test
1313

1414
class ModelAttributeBuilderTest {
1515
private val uri = "http://test.binary-array-ld.net/example/var0"

binary-array-ld-lib/src/test/kotlin/net/bald/model/ModelBinaryArrayBuilderTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import org.apache.jena.shared.PrefixMapping
1515
import org.apache.jena.vocabulary.SKOS
1616
import org.junit.jupiter.api.Test
1717
import org.junit.jupiter.api.assertThrows
18-
import java.lang.IllegalArgumentException
1918
import kotlin.test.assertEquals
2019

2120
class ModelBinaryArrayBuilderTest {

binary-array-ld-lib/src/test/kotlin/net/bald/model/ModelBinaryArrayConverterTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.apache.jena.shared.PrefixMapping
1111
import org.apache.jena.vocabulary.DCTerms
1212
import org.apache.jena.vocabulary.RDF
1313
import org.apache.jena.vocabulary.SKOS
14-
import org.junit.jupiter.api.*
14+
import org.junit.jupiter.api.Test
1515

1616
/**
1717
* Test the full Binary Array -> Linked Data conversion process using a mock binary array.

0 commit comments

Comments
 (0)