package edu.kit.aifb.cumulus;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.junit.AfterClass;
import org.openrdf.model.Statement;
import org.openrdf.repository.Repository;
import edu.kit.aifb.cumulus.store.Store;
import edu.kit.aifb.cumulus.store.sesame.CumulusRDFSail;
/**
* Supertype layer for all CumulusRDF test cases.
*
* @author Andreas Wagner
* @author Andrea Gazzarini
* @since 1.0
*/
public abstract class AbstractCumulusTest implements TestData {
public static final String DATA_NT = "src/test/resources/triples_gridpedia.nt",
DATA_NQ = "src/test/resources/quads.nq";
public static final List<String> SPARQL_QUERIES = new LinkedList<String>();
public static final List<String> SPARQL_ASK = new LinkedList<String>();
public static final List<String> SPARQL_SELECT = new LinkedList<String>();
public static final List<String> SPARQL_CONSTRUCT = new LinkedList<String>();
public static final Map<String, Integer> QUERIES_2_COUNT = new HashMap<String, Integer>();
static {
SPARQL_ASK.add("ASK { ?d <http://www.w3.org/2000/01/rdf-schema#label> \"Device\" . }");
SPARQL_ASK.add("ASK { ?d <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://gridpedia.org/id/Actor> . }");
SPARQL_ASK.add(
"ASK { ?d <http://www.w3.org/2000/01/rdf-schema#label> \"Device\" . "
+ "?d <http://www.w3.org/2000/01/rdf-schema#subClassOf> "
+ "<http://gridpedia.org/id/Actor> . }");
SPARQL_ASK.add("ASK { <http://gridpedia.org/id/Media> <http://semantic-mediawiki.org/swivt/1.0#page> ?d . }");
SPARQL_QUERIES.addAll(SPARQL_ASK);
SPARQL_SELECT.add("SELECT * WHERE { ?d <http://www.w3.org/2000/01/rdf-schema#label> \"Device\" . "
+ "?d <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://gridpedia.org/id/Actor> . }");
QUERIES_2_COUNT.put(SPARQL_SELECT.get(0), 1);
SPARQL_SELECT.add(
"SELECT * WHERE { ?a <http://semantic-mediawiki.org/swivt/1.0#page> <http://gridpedia.org/wiki/Actor> . "
+ "?a <http://www.w3.org/2000/01/rdf-schema#label> ?l . ?a ?p ?o . }");
QUERIES_2_COUNT.put(SPARQL_SELECT.get(1), 10);
SPARQL_SELECT.add(
"SELECT * WHERE { ?d <http://www.w3.org/2000/01/rdf-schema#label> \"Device\" . ?d "
+ "<http://www.w3.org/2000/01/rdf-schema#subClassOf> ?a . ?a <http://semantic-mediawiki.org/swivt/1.0#page> "
+ "<http://gridpedia.org/wiki/Actor> .}");
QUERIES_2_COUNT.put(SPARQL_SELECT.get(2), 1);
SPARQL_SELECT.add(
"SELECT * WHERE { ?d <http://semantic-mediawiki.org/swivt/1.0#page> <http://gridpedia.org/wiki/Media> . "
+ "?d <http://semantic-mediawiki.org/swivt/1.0#wikiPageModificationDate> ?date . "
+ "FILTER ( ?date >= \"2012-01-30T00:00:00Z\"^^<http://www.w3.org/2001/XMLSchema#dateTime> ) } LIMIT 1 ");
QUERIES_2_COUNT.put(SPARQL_SELECT.get(3), 1);
SPARQL_SELECT.add("SELECT * WHERE { ?d <http://semantic-mediawiki.org/swivt/1.0#page> ?p . } ORDER BY DESC(?p) ");
QUERIES_2_COUNT.put(SPARQL_SELECT.get(4), 42);
SPARQL_SELECT.add("SELECT DISTINCT ?d WHERE { ?d <http://semantic-mediawiki.org/swivt/1.0#page> ?p . } ");
QUERIES_2_COUNT.put(SPARQL_SELECT.get(5), 42);
SPARQL_SELECT.add("SELECT * WHERE { ?d <http://semantic-mediawiki.org/swivt/1.0#page> ?p . } ORDER BY DESC(?p) LIMIT 1 ");
QUERIES_2_COUNT.put(SPARQL_SELECT.get(6), 1);
SPARQL_SELECT.add(
"SELECT * WHERE { ?d <http://semantic-mediawiki.org/swivt/1.0#page> ?p . "
+ "OPTIONAL { ?d <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://gridpedia.org/id/Actor> } }");
QUERIES_2_COUNT.put(SPARQL_SELECT.get(7), 42);
SPARQL_SELECT.add(
"SELECT * WHERE { ?d <http://www.w3.org/2000/01/rdf-schema#label> \"Device2\" . "
+ "?d <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://gridpedia.org/id/Actor> . }");
QUERIES_2_COUNT.put(SPARQL_SELECT.get(8), 0);
SPARQL_SELECT.add("SELECT ?d WHERE { ?d <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://gridpedia.org/id/Actor2> . }");
QUERIES_2_COUNT.put(SPARQL_SELECT.get(9), 0);
SPARQL_QUERIES.addAll(SPARQL_SELECT);
SPARQL_CONSTRUCT
.add("CONSTRUCT { ?d <http://xmlns.com/foaf/0.1/name> \"Device\" } { ?d <http://www.w3.org/2000/01/rdf-schema#label> \"Device\" . }");
QUERIES_2_COUNT.put(SPARQL_CONSTRUCT.get(0), 1);
SPARQL_CONSTRUCT.add(
"CONSTRUCT { ?d <http://xmlns.com/foaf/0.1/name> \"Device\" } "
+ "{ ?d <http://www.w3.org/2000/01/rdf-schema#label> \"Device\" . ?d <http://www.w3.org/2002/07/owl#sameAs> "
+ "<http://dbpedia.org/resource/Device> . }");
QUERIES_2_COUNT.put(SPARQL_CONSTRUCT.get(1), 1);
SPARQL_CONSTRUCT.add(
"CONSTRUCT { ?d <http://www.w3.org/2000/01/rdf-schema#seeAlso> ?a } "
+ "{ ?d <http://www.w3.org/2000/01/rdf-schema#label> \"Device\" . ?d <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?a . "
+ "?a <http://semantic-mediawiki.org/swivt/1.0#page> <http://gridpedia.org/wiki/Actor> . }");
QUERIES_2_COUNT.put(SPARQL_CONSTRUCT.get(2), 1);
SPARQL_CONSTRUCT
.add("CONSTRUCT { ?d <http://www.w3.org/2000/01/rdf-schema#seeAlso> ?a } { ?d <http://www.w3.org/2000/01/rdf-schema#label> ?a . }");
QUERIES_2_COUNT.put(SPARQL_CONSTRUCT.get(3), 42);
SPARQL_CONSTRUCT.add(
"CONSTRUCT { ?d <http://www.w3.org/2000/01/rdf-schema#seeAlso> ?a } "
+ "{ ?d <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> ?a . FILTER isIRI(?a) }");
QUERIES_2_COUNT.put(SPARQL_CONSTRUCT.get(4), 42);
SPARQL_QUERIES.addAll(SPARQL_CONSTRUCT);
}
protected static Store _tripleStore, _quadStore;
protected static CumulusRDFSail _sail;
protected static Repository _repository;
/**
* Shutdown repository and store.
*
* @throws Exception mmm...hopefully never otherwise tests will fail.
*/
@AfterClass
public static void shutdown() throws Exception {
if (_repository != null) {
_repository.shutDown();
}
if (_sail != null) {
_sail.shutDown();
}
if (_tripleStore != null) {
if (_tripleStore.isOpen()) {
_tripleStore.clear();
}
_tripleStore.close();
}
if (_quadStore != null) {
if (_quadStore.isOpen()) {
_quadStore.clear();
}
_quadStore.close();
}
}
/**
* Asserts that a given iterator is not null and is empty.
*
* @param query the query that produced the iterator.
* @param result the iterator that will be checked.
*/
public void assertEmptyIterator(final String query, final Iterator<Statement> result) {
assertNotNull(query, result);
assertFalse(query, result.hasNext());
}
}