You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2015/02/01 14:12:33 UTC

[24/35] jena git commit: Test jena-tdb as well

Test jena-tdb as well


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/1a700701
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/1a700701
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/1a700701

Branch: refs/heads/master
Commit: 1a700701cdd15ee80fe28833acacbfce5e7b2c59
Parents: adec24e
Author: Stian Soiland-Reyes <so...@cs.manchester.ac.uk>
Authored: Sun Jan 11 23:10:22 2015 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Mon Jan 12 01:19:17 2015 +0000

----------------------------------------------------------------------
 .../apache/jena/osgi/test/JenaOSGITestImpl.java | 132 +++++++++++++++----
 1 file changed, 105 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/1a700701/jena-osgi-test/src/main/java/org/apache/jena/osgi/test/JenaOSGITestImpl.java
----------------------------------------------------------------------
diff --git a/jena-osgi-test/src/main/java/org/apache/jena/osgi/test/JenaOSGITestImpl.java b/jena-osgi-test/src/main/java/org/apache/jena/osgi/test/JenaOSGITestImpl.java
index cce9781..3e119d9 100644
--- a/jena-osgi-test/src/main/java/org/apache/jena/osgi/test/JenaOSGITestImpl.java
+++ b/jena-osgi-test/src/main/java/org/apache/jena/osgi/test/JenaOSGITestImpl.java
@@ -18,75 +18,153 @@
 
 package org.apache.jena.osgi.test;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
+import java.io.OutputStream;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.nio.file.Files;
+import java.nio.file.Path;
 
 import org.apache.jena.iri.IRI;
 import org.apache.jena.iri.IRIFactory;
-import org.apache.jena.iri.impl.IRIFactoryImpl;
+import org.apache.jena.riot.Lang;
+import org.apache.jena.riot.RDFDataMgr;
+import org.junit.Test;
 
 import com.hp.hpl.jena.ontology.Individual;
 import com.hp.hpl.jena.ontology.ObjectProperty;
 import com.hp.hpl.jena.ontology.OntModel;
 import com.hp.hpl.jena.ontology.OntModelSpec;
-import com.hp.hpl.jena.ontology.SymmetricProperty;
+import com.hp.hpl.jena.query.Dataset;
+import com.hp.hpl.jena.query.DatasetFactory;
+import com.hp.hpl.jena.query.Query;
+import com.hp.hpl.jena.query.QueryExecution;
+import com.hp.hpl.jena.query.QueryExecutionFactory;
+import com.hp.hpl.jena.query.QueryFactory;
+import com.hp.hpl.jena.query.QuerySolution;
+import com.hp.hpl.jena.query.ReadWrite;
+import com.hp.hpl.jena.query.ResultSet;
 import com.hp.hpl.jena.rdf.model.Model;
 import com.hp.hpl.jena.rdf.model.ModelFactory;
 import com.hp.hpl.jena.rdf.model.Property;
-import com.hp.hpl.jena.rdf.model.RDFNode;
-import com.hp.hpl.jena.rdf.model.ReifiedStatement;
 import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.tdb.TDBFactory;
 
+/**
+ * Brief tests of the Jena modules covered by jena-osgi
+ * <p>
+ * Do NOT add tests to this class without also adding a
+ * @Test-annotated method to the interface JenaOSGITest
+ * -- otherwise it won't be picked up when testing inside OSGi
+ *  
+ */
 public class JenaOSGITestImpl implements JenaOSGITest {
 
+	private static final String EXAMPLE_COM_GRAPH = "http://example.com/graph";
+	private Resource alice;
+	private Property knows;
+	private Resource bob;
+
+	@Test
 	@Override
 	public void testJenaCore() throws Exception {
-		Model model = ModelFactory.createDefaultModel();
-		Resource alice = model.createResource("http://example.com/alice");		
-		Property knows = model.createProperty("http://xmlns.com/foaf/0.1/knows");
-		Resource bob = model.createResource("http://example.com/bob");
-		model.add(model.createStatement(alice, knows, bob));
-		
-		// Does Model's Class.forName() still work?  
-		model.setWriterClassName("someWriter", "com.hp.hpl.jena.rdf.model.impl.NTripleWriter");
+		Model model = makeModel();
+
+		// Does Model's Class.forName() still work?
+		model.setWriterClassName("someWriter",
+				"com.hp.hpl.jena.rdf.model.impl.NTripleWriter");
 		Writer writer = new StringWriter();
 		model.write(writer, "someWriter");
-		// yes, but only as long as that classname is accessible within jena-osgi bundle		
-		assertEquals("<http://example.com/alice> <http://xmlns.com/foaf/0.1/knows> <http://example.com/bob> .", 
+		// yes, but only as long as that classname is accessible within
+		// jena-osgi bundle
+		assertEquals(
+				"<http://example.com/alice> <http://xmlns.com/foaf/0.1/knows> <http://example.com/bob> .",
 				writer.toString().trim());
-		
-		// Let's also test com.hp.hpl.jena.ontology		
-		OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
-		ObjectProperty knowsObjProp = ontModel.createObjectProperty(knows.getURI());
-		ObjectProperty hasFriend = ontModel.createObjectProperty("http://example.com/has_friend");
+
+		// Let's also test com.hp.hpl.jena.ontology
+		OntModel ontModel = ModelFactory
+				.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
+		ObjectProperty knowsObjProp = ontModel.createObjectProperty(knows
+				.getURI());
+		ObjectProperty hasFriend = ontModel
+				.createObjectProperty("http://example.com/has_friend");
 		hasFriend.addSuperProperty(knowsObjProp);
-		
+
 		Individual aliceIndividual = ontModel.createIndividual(alice);
 		Individual bobIndividiual = ontModel.createIndividual(bob);
 		ontModel.add(aliceIndividual, hasFriend, bobIndividiual);
 		assertTrue(aliceIndividual.hasProperty(knowsObjProp, bobIndividiual));
 	}
 
+	private Model makeModel() {
+		Model model = ModelFactory.createDefaultModel();
+		alice = model.createResource("http://example.com/alice");
+		knows = model.createProperty("http://xmlns.com/foaf/0.1/knows");
+		bob = model.createResource("http://example.com/bob");
+		model.add(model.createStatement(alice, knows, bob));
+		return model;
+	}
+
+	@Test
 	@Override
 	public void testJenaArq() throws Exception {
-		//fail("Not quite");
+		Dataset dataset = DatasetFactory.createMem();
+		dataset.addNamedModel(EXAMPLE_COM_GRAPH, makeModel());
+
+		Path path = Files.createTempFile("example", ".jsonld");
+		// System.out.println(path);
+		path.toFile().deleteOnExit();
+
+		try (OutputStream output = Files.newOutputStream(path)) {
+			RDFDataMgr.write(output, dataset, Lang.JSONLD);
+		}
+		// We test JSON-LD as it involves multiple other bundles
+
+		Dataset dataset2 = RDFDataMgr.loadDataset(path.toUri().toString());
+		assertTrue(dataset2.containsNamedModel(EXAMPLE_COM_GRAPH));
+
+		runQuery(dataset2);
+
 	}
 
+	private void runQuery(Dataset dataset) {
+		Query query = QueryFactory.create(""
+				+ "PREFIX foaf: <http://xmlns.com/foaf/0.1/>"
+				+ "SELECT ?bob WHERE { "
+				+ "  GRAPH <http://example.com/graph> { "
+				+ "      ?alice foaf:knows ?bob . " + "  }" + "}");
+		try (QueryExecution qexec = QueryExecutionFactory.create(query,
+				dataset)) {
+			ResultSet results = qexec.execSelect();
+			assertTrue(results.hasNext());
+			QuerySolution r = results.next();
+			assertEquals(bob, r.get("bob").asResource());
+		}
+	}
+
+	@Test
 	@Override
-	public void testJenaIRI()throws Exception {
+	public void testJenaIRI() throws Exception {
 		IRIFactory iriFactory = IRIFactory.jenaImplementation();
 		IRI iri = iriFactory.create("http://example.com/");
 		assertEquals("http://example.com/", iri.toASCIIString());
-	
-		// This should not work within OSGi
-		//assertTrue(iriFactory instanceof IRIFactoryImpl);
 	}
 
+	@Test
 	@Override
 	public void testJenaTdb() throws Exception {
-		//assertEquals(1,1);
+		Path tdbDir = Files.createTempDirectory("jena-tdb-test");
+		Dataset dataset = TDBFactory.createDataset(tdbDir.toString());
+		
+		dataset.begin(ReadWrite.WRITE) ;
+		dataset.addNamedModel(EXAMPLE_COM_GRAPH, makeModel());
+		dataset.commit();
+		dataset.end();
 		
+		dataset.begin(ReadWrite.READ);
+		runQuery(dataset);
+		dataset.end();
 	}
 }