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; /** * Abstract class for all CumulusRDF test cases. * * @author Andreas Wagner * @author Andrea Gazzarini * @since 1.0 */ public abstract class AbstractCumulusWebTest implements WebTestData { public static final String DATA_NT = "src/test/resources/triples_gridpedia.nt"; public static List<String> _sparql_queries, _sparql_ask, _sparql_select, _sparql_construct; public static Map<String, Integer> _queries2count; static { _sparql_queries = new LinkedList<String>(); _queries2count = new HashMap<String, Integer>(); _sparql_ask = new LinkedList<String>(); _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 = new LinkedList<String>(); _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> . }"); _queries2count.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 . }"); _queries2count.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> .}"); _queries2count.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 "); _queries2count.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) "); _queries2count.put(_sparql_select.get(4), 42); _sparql_select.add("SELECT DISTINCT ?d WHERE { ?d <http://semantic-mediawiki.org/swivt/1.0#page> ?p . } "); _queries2count.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 "); _queries2count.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> } }"); _queries2count.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> . }"); _queries2count.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> . }"); _queries2count.put(_sparql_select.get(9), 0); _sparql_queries.addAll(_sparql_select); _sparql_construct = new LinkedList<String>(); _sparql_construct .add("CONSTRUCT { ?d <http://xmlns.com/foaf/0.1/name> \"Device\" } { ?d <http://www.w3.org/2000/01/rdf-schema#label> \"Device\" . }"); _queries2count.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> . }"); _queries2count.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> . }"); _queries2count.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 . }"); _queries2count.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) }"); _queries2count.put(_sparql_construct.get(4), 42); _sparql_queries.addAll(_sparql_construct); } public static Store TRIPLE_STORE, QUAD_STORE; 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 (TRIPLE_STORE != null) { TRIPLE_STORE.close(); } if (QUAD_STORE != null) { QUAD_STORE.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()); } }