package edu.isi.karma.rdf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.fail;
import java.io.File;
import java.io.FileInputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.json.JSONObject;
import org.json.JSONTokener;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import edu.isi.karma.kr2rml.ContextIdentifier;
import edu.isi.karma.kr2rml.mapping.R2RMLMappingIdentifier;
import edu.isi.karma.kr2rml.writer.JSONKR2RMLRDFWriter;
import edu.isi.karma.rdf.GenericRDFGenerator.InputType;
public class TestJSONRDFGeneratorWithContext extends TestJSONRDFGenerator {
private static Logger logger = LoggerFactory.getLogger(TestJSONRDFGeneratorWithContext.class);
/**
* @throws java.lang.Exception
*/
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
// Add the models in
R2RMLMappingIdentifier modelIdentifier = new R2RMLMappingIdentifier(
"events-model", getTestResource(
"context/events-no-augmentation-model.ttl"));
rdfGen.addModel(modelIdentifier);
}
/**
* @throws java.lang.Exception
*/
@After
public void tearDown() throws Exception {
}
@Test
public void testGenerateJSONWithContext() {
try {
String filename = "context/events.json";
String contextName = "context/events_context.json";
logger.info("Loading json file: " + filename);
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
File contextFile = new File(getTestResource(contextName).toURI());
JSONTokener token = new JSONTokener(new FileInputStream(contextFile));
ContextIdentifier contextId = new ContextIdentifier("events-context", contextFile.toURI().toURL());
JSONKR2RMLRDFWriter writer = new JSONKR2RMLRDFWriter(pw);
writer.setGlobalContext(new JSONObject(token), contextId);
RDFGeneratorRequest request = new RDFGeneratorRequest("events-model", filename);
request.setInputFile(new File(getTestResource(filename).toURI()));
request.setAddProvenance(false);
request.setDataType(InputType.JSON);
request.addWriter(writer);
rdfGen.generateRDF(request);
String rdf = sw.toString();
assertNotEquals(rdf.length(), 0);
String[] lines = rdf.split("(\r\n|\n)");
int count = lines.length;
assertEquals(318, count);
} catch (Exception e) {
logger.error("testGenerateJSONWithContext failed:", e);
fail("Execption: " + e.getMessage());
}
}
}