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.PrintWriter; import java.io.StringWriter; 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.mapping.R2RMLMappingIdentifier; import edu.isi.karma.kr2rml.planning.UserSpecifiedRootStrategy; import edu.isi.karma.kr2rml.writer.JSONKR2RMLRDFWriter; import edu.isi.karma.rdf.GenericRDFGenerator.InputType; import edu.isi.karma.webserver.ContextParametersRegistry; public class TestBasicJSONRDFGenerator extends TestJSONRDFGenerator { private static Logger logger = LoggerFactory.getLogger(TestBasicJSONRDFGenerator.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( "people-model", getTestResource( "people-model.ttl")); rdfGen.addModel(modelIdentifier); modelIdentifier = new R2RMLMappingIdentifier("cs548-events-model", getTestResource("cs548-events-model.ttl") ); rdfGen.addModel(modelIdentifier); modelIdentifier = new R2RMLMappingIdentifier( "employees-model", getTestResource( "employees-model.ttl")); rdfGen.addModel(modelIdentifier); } /** * @throws java.lang.Exception */ @After public void tearDown() throws Exception { } @Test public void testGenerateRDF1() { try { executeBasicJSONTest("people.json", "people-model", true, 102); } catch (Exception e) { logger.error("testGenerateRDF1 failed:", e); fail("Execption: " + e.getMessage()); } } @Test public void testGenerateJSON1() { try { String filename = "people.json"; logger.info("Loading json file: " + filename); StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); JSONKR2RMLRDFWriter writer = new JSONKR2RMLRDFWriter(pw); RDFGeneratorRequest request = new RDFGeneratorRequest("people-model", filename); request.setInputFile(new File(getTestResource(filename).toURI())); request.setAddProvenance(false); request.setDataType(InputType.JSON); request.addWriter(writer); request.setContextParameters(ContextParametersRegistry.getInstance().getDefault()); rdfGen.generateRDF(request); String rdf = sw.toString(); assertNotEquals(rdf.length(), 0); String[] lines = rdf.split("(\r\n|\n)"); int count = lines.length; assertEquals(148, count); } catch (Exception e) { logger.error("testGenerateRDF1 failed:", e); fail("Execption: " + e.getMessage()); } } @Test public void testGenerateJSON2() { try { String filename = "employees.json"; logger.info("Loading json file: " + filename); StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); JSONKR2RMLRDFWriter writer = new JSONKR2RMLRDFWriter(pw); RDFGeneratorRequest request = new RDFGeneratorRequest("employees-model", filename); request.setInputFile(new File(getTestResource(filename).toURI())); request.setDataType(InputType.JSON); request.setStrategy(new UserSpecifiedRootStrategy("http://isi.edu/integration/karma/dev#TriplesMap_6c6ae57b-f0ac-4443-9a49-4ae5d2e20630")); request.addWriter(writer); request.setContextParameters(ContextParametersRegistry.getInstance().getDefault()); rdfGen.generateRDF(request); String rdf = sw.toString(); assertNotEquals(rdf.length(), 0); String[] lines = rdf.split("(\r\n|\n)"); int count = lines.length; assertEquals(358, count); } catch (Exception e) { logger.error("testGenerateJSON2 failed:", e); fail("Execption: " + e.getMessage()); } } @Test public void testGenerateJSON3() { try { String filename = "employees.json"; logger.info("Loading json file: " + filename); StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); JSONKR2RMLRDFWriter writer = new JSONKR2RMLRDFWriter(pw,"http://lod.isi.edu/cs548/",true); RDFGeneratorRequest request = new RDFGeneratorRequest("employees-model", filename); request.setInputFile(new File(getTestResource(filename).toURI())); request.setDataType(InputType.JSON); request.setStrategy(new UserSpecifiedRootStrategy("http://isi.edu/integration/karma/dev#TriplesMap_6c6ae57b-f0ac-4443-9a49-4ae5d2e20630")); request.addWriter(writer); request.setContextParameters(ContextParametersRegistry.getInstance().getDefault()); rdfGen.generateRDF(request); String rdf = sw.toString(); assertNotEquals(rdf.length(), 0); String[] lines = rdf.split("(\r\n|\n)"); int count = lines.length; assertEquals(236, count); } catch (Exception e) { logger.error("testGenerateJSON3 failed:", e); fail("Execption: " + e.getMessage()); } } @Test public void testGenerateRDF2() { try { executeBasicJSONTest("cs548-events.json", "cs548-events-model", true, 238); } catch (Exception e) { logger.error("testGenerateRDF1 failed:", e); fail("Execption: " + e.getMessage()); } } }