# HG changeset patch # User Konstantina Bereta # Date 1360338434 -7200 # Node ID 4b408b8a06a99ec8153160ecdc42cb17981de612 # Parent 74ffcfcb691dbfc20f5f77df373458451d111ca9 resolved merge issues diff -r 74ffcfcb691d -r 4b408b8a06a9 pom.xml --- a/pom.xml Fri Feb 08 16:42:42 2013 +0200 +++ b/pom.xml Fri Feb 08 17:47:14 2013 +0200 @@ -258,7 +258,7 @@ org.openrdf.sesame sesame-rio-api - ${sesame.version} + 2.6.9 org.openrdf.sesame diff -r 74ffcfcb691d -r 4b408b8a06a9 runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java --- a/runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java Fri Feb 08 16:42:42 2013 +0200 +++ b/runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java Fri Feb 08 17:47:14 2013 +0200 @@ -246,7 +246,7 @@ logger.info("[Strabon.query] Executing query: \n{}", queryString); // check for null stream - if ((out == null) && (resultsFormat != org.openrdf.query.resultio.Format.EXP)) { + if ((out == null) && (resultsFormat != eu.earthobservatory.utils.Format.EXP)) { logger.error("[Strabon.query] Cannot write to null stream."); return false; diff -r 74ffcfcb691d -r 4b408b8a06a9 runtime/src/main/java/eu/earthobservatory/runtime/monetdb/QueryDir.java --- a/runtime/src/main/java/eu/earthobservatory/runtime/monetdb/QueryDir.java Fri Feb 08 16:42:42 2013 +0200 +++ b/runtime/src/main/java/eu/earthobservatory/runtime/monetdb/QueryDir.java Fri Feb 08 17:47:14 2013 +0200 @@ -9,8 +9,6 @@ */ package eu.earthobservatory.runtime.monetdb; -import eu.earthobservatory.utils.Format; - import java.io.BufferedReader; import java.io.File; import java.io.FileReader; @@ -20,6 +18,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import eu.earthobservatory.utils.Format; + public class QueryDir { diff -r 74ffcfcb691d -r 4b408b8a06a9 runtime/src/main/java/eu/earthobservatory/utils/ExperimentsReal.java --- a/runtime/src/main/java/eu/earthobservatory/utils/ExperimentsReal.java Fri Feb 08 16:42:42 2013 +0200 +++ b/runtime/src/main/java/eu/earthobservatory/utils/ExperimentsReal.java Fri Feb 08 17:47:14 2013 +0200 @@ -215,7 +215,7 @@ System.out.println("Executing query. Caches: " + cacheState + ". Repetition: " + repetition); - long[] resp = (long[])strabon.query(query, org.openrdf.query.resultio.Format.EXP, null); + long[] resp = (long[])strabon.query(query, eu.earthobservatory.utils.Format.EXP, null); // Statement st; // System.out.println("Evaluating query (naive)."); diff -r 74ffcfcb691d -r 4b408b8a06a9 runtime/src/test/java/eu/earthobservatory/runtime/postgres/temporals/TemplateTests.java --- a/runtime/src/test/java/eu/earthobservatory/runtime/postgres/temporals/TemplateTests.java Fri Feb 08 16:42:42 2013 +0200 +++ b/runtime/src/test/java/eu/earthobservatory/runtime/postgres/temporals/TemplateTests.java Fri Feb 08 17:47:14 2013 +0200 @@ -76,7 +76,13 @@ } stmt.close(); - Strabon strabon = new eu.earthobservatory.runtime.postgis.Strabon(databaseName, username, password, port, serverName, true); + Strabon strabon=null; + try { + strabon = new eu.earthobservatory.runtime.postgis.Strabon(databaseName, username, password, port, serverName, true); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } loadTestData(inputFile, strabon, format); diff -r 74ffcfcb691d -r 4b408b8a06a9 runtime/src/test/java/eu/earthobservatory/runtime/postgres/temporals/TemporalConstructTests.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/runtime/src/test/java/eu/earthobservatory/runtime/postgres/temporals/TemporalConstructTests.java Fri Feb 08 17:47:14 2013 +0200 @@ -0,0 +1,220 @@ +/** + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (C) 2010, 2011, 2012, Pyravlos Team + * + * http://www.strabon.di.uoa.gr/ + */ + +/** + * A set of simple tests on temporal selection functionality + * + * @author Konstantina Bereta + * + * This class includes a set of junit tests that test the temporal relations between periods + */ + +package eu.earthobservatory.runtime.postgres.temporals; + + +import static org.junit.Assert.*; + +import java.io.IOException; +import java.sql.SQLException; +import java.util.ArrayList; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.openrdf.query.MalformedQueryException; +import org.openrdf.query.QueryEvaluationException; +import org.openrdf.query.TupleQueryResult; +import org.openrdf.query.TupleQueryResultHandlerException; +///import org.openrdf.query.resultio.Format; +import org.openrdf.query.resultio.TupleQueryResultWriter; +import org.openrdf.query.resultio.stSPARQLQueryResultWriterFactory; +import org.openrdf.repository.RepositoryException; +import org.openrdf.rio.RDFHandlerException; +import org.openrdf.rio.RDFParseException; + +import eu.earthobservatory.utils.Format; + + +import eu.earthobservatory.runtime.generaldb.*; +import eu.earthobservatory.runtime.postgres.temporals.TemplateTests; + + +/** + * A set of simple tests on query rewriting functionality + * + * @author Konstantina Bereta + * + * This class includes a set of junit tests that test the temporal constructs that appear in + * the select clause of the query + * + */ + +public class TemporalConstructTests { + + protected static Strabon strabon; + + protected static final String prefixes = + "PREFIX strdf: \n" + + "PREFIX xsd: \n" + + "PREFIX noa: \n"; + + + @BeforeClass + public static void beforeClass() throws SQLException, ClassNotFoundException, RDFParseException, RepositoryException, RDFHandlerException, IOException, InvalidDatasetFormatFault + { + strabon = TemplateTests.beforeClass("/temporal-periods.nq","NQUADS"); + } + + @AfterClass + public static void afterClass() throws SQLException + { + TemplateTests.afterClass(strabon); + } + + @Test + public void testIntersection() throws MalformedQueryException, QueryEvaluationException, TupleQueryResultHandlerException, IOException, QueryEvaluationException + { + + String query = + prefixes+ + "SELECT distinct (strdf:period_intersect(?t1, ?t2) AS ?intersection) "+ + "WHERE { "+ + "?x1 ?y1 ?z1 ?t1 . "+ + "?x2 ?y2 ?z2 ?t2 . "+ + "FILTER(strdf:PeriodOverlaps(?t1, ?t2) && str(?x1) != str(?x2))."+ + "}"; + + ArrayList bindings = (ArrayList) strabon.query(strabon.queryRewriting(query),strabon.getSailRepoConnection()); + + for(String result: bindings) + { + System.out.println(result.toString()); + } + assertEquals(5, bindings.size()); + //assertTrue(-1 < bindings.indexOf("")); + assertTrue(bindings.contains("intersection=\"[2012-11-19 12:41:00+02, 2012-11-19 13:41:00.000001+02)\"")); + assertTrue(bindings.contains("intersection=\"[2012-11-19 13:41:00+02, 2012-11-19 13:41:00.000001+02)\"")); + assertTrue(bindings.contains("intersection=\"[2012-11-19 10:41:00+02, 2012-11-19 11:41:00.000001+02)\"")); + assertTrue(bindings.contains("intersection=\"[2012-11-19 13:41:00+02, 2012-11-19 14:41:00.000001+02)\"")); + assertTrue(bindings.contains("intersection=\"[2012-11-19 14:41:00.000001+02, 2012-11-19 15:41:00.000001+02)\"")); +} + + @Test + public void testUnion() throws MalformedQueryException, QueryEvaluationException, TupleQueryResultHandlerException, IOException, QueryEvaluationException + { + + String query = + prefixes+ + "SELECT distinct (strdf:period_union(?t1, ?t2) AS ?union) "+ + "WHERE { "+ + "?x1 ?y1 ?z1 ?t1 . "+ + "?x2 ?y2 ?z2 ?t2 . "+ + "FILTER(strdf:PeriodOverlaps(?t1, ?t2) && str(?x1) != str(?x2))."+ + "}"; + + ArrayList bindings = (ArrayList) strabon.query(strabon.queryRewriting(query),strabon.getSailRepoConnection()); + + for(String result: bindings) + { + System.out.println(result.toString()); + } + assertEquals(3, bindings.size()); + //assertTrue(-1 < bindings.indexOf("")); + assertTrue(bindings.contains("union=\"[2012-11-19 12:41:00+02, 2012-11-19 13:41:00.000001+02)\"")); + assertTrue(bindings.contains("union=\"[2012-11-19 12:41:00+02, 2012-11-19 14:41:00.000001+02)\"")); + assertTrue(bindings.contains("union=\"[2012-11-19 10:41:00+02, 2012-11-19 15:41:00.000001+02)\"")); +} + + @Test + public void testMinus() throws MalformedQueryException, QueryEvaluationException, TupleQueryResultHandlerException, IOException, QueryEvaluationException + { + + String query = + prefixes+ + "SELECT distinct (strdf:period_minus(?t1, ?t2) AS ?minus) "+ + "WHERE { "+ + "?x1 ?y1 ?z1 ?t1 . "+ + "?x2 ?y2 ?z2 ?t2 . "+ + "FILTER(strdf:during(?t1, ?t2) && str(?x1) != str(?x2))."+ + "}"; + + ArrayList bindings = (ArrayList) strabon.query(strabon.queryRewriting(query),strabon.getSailRepoConnection()); + + for(String result: bindings) + { + System.out.println(result.toString()); + } + assertEquals(4, bindings.size()); + //assertTrue(-1 < bindings.indexOf("")); + assertTrue(bindings.contains("minus=\"[2012-11-19 13:41:00.000001+02, 2012-11-19 13:41:00.000001+02)\"")); + assertTrue(bindings.contains("minus=\"[2012-11-19 11:41:00.000001+02, 2012-11-19 11:41:00.000001+02)\"")); + assertTrue(bindings.contains("minus=\"[2012-11-19 14:41:00.000001+02, 2012-11-19 14:41:00.000001+02)\"")); + assertTrue(bindings.contains("minus=\"[2012-11-19 15:41:00.000001+02, 2012-11-19 15:41:00.000001+02)\"")); +} + + @Test + public void testStart() throws MalformedQueryException, QueryEvaluationException, TupleQueryResultHandlerException, IOException, QueryEvaluationException + { + + String query = + prefixes+ + "SELECT distinct (strdf:period_start(?t1, ?t2) AS ?start) "+ + "WHERE { "+ + "?x1 ?y1 ?z1 ?t1 . "+ + //"FILTER(strdf:during(?t1, ?t2) && str(?x1) != str(?x2))."+ + "}"; + + ArrayList bindings = (ArrayList) strabon.query(strabon.queryRewriting(query),strabon.getSailRepoConnection()); + + for(String result: bindings) + { + System.out.println(result.toString()); + } + assertEquals(7, bindings.size()); + //assertTrue(-1 < bindings.indexOf("")); + assertTrue(bindings.contains("2012-01-19T12:41:00+02")); + assertTrue(bindings.contains("start=\"2012-11-19T12:41:00+02\"")); + assertTrue(bindings.contains("start=\"2012-11-19T10:41:00+02\"")); + assertTrue(bindings.contains("start=\"2012-01-19T10:41:00+02\"")); + assertTrue(bindings.contains("start=\"2012-11-19T13:41:00+02\"")); + assertTrue(bindings.contains("start=\"2012-01-19T11:41:00+02\"")); + assertTrue(bindings.contains("start=\"2012-11-19T14:41:00.000001+02\"")); +} + + @Test + public void testEnd() throws MalformedQueryException, QueryEvaluationException, TupleQueryResultHandlerException, IOException, QueryEvaluationException + { + + String query = + prefixes+ + "SELECT distinct (strdf:period_end(?t1, ?t2) AS ?end) "+ + "WHERE { "+ + "?x1 ?y1 ?z1 ?t1 . "+ + //"FILTER(strdf:during(?t1, ?t2) && str(?x1) != str(?x2))."+ + "}"; + + ArrayList bindings = (ArrayList) strabon.query(strabon.queryRewriting(query),strabon.getSailRepoConnection()); + + for(String result: bindings) + { + System.out.println(result.toString()); + } + assertEquals(7, bindings.size()); + //assertTrue(-1 < bindings.indexOf("")); + assertTrue(bindings.contains("2012-01-19T12:41:00+02")); + assertTrue(bindings.contains("start=\"2012-11-19T12:41:00+02\"")); + assertTrue(bindings.contains("start=\"2012-01-19T10:41:00+02\"")); + assertTrue(bindings.contains("start=\"2012-11-19T13:41:00+02\"")); + assertTrue(bindings.contains("start=\"2012-01-19T11:41:00+02\"")); + assertTrue(bindings.contains("start=\"2012-11-19T14:41:00.000001+02\"")); + assertTrue(bindings.contains("start=\"2012-11-19T15:41:00.000001+02\"")); + +} +} \ No newline at end of file diff -r 74ffcfcb691d -r 4b408b8a06a9 runtime/src/test/java/eu/earthobservatory/runtime/postgres/temporals/TemporalRelationTests.java --- a/runtime/src/test/java/eu/earthobservatory/runtime/postgres/temporals/TemporalRelationTests.java Fri Feb 08 16:42:42 2013 +0200 +++ b/runtime/src/test/java/eu/earthobservatory/runtime/postgres/temporals/TemporalRelationTests.java Fri Feb 08 17:47:14 2013 +0200 @@ -32,7 +32,8 @@ import org.openrdf.query.QueryEvaluationException; import org.openrdf.query.TupleQueryResult; import org.openrdf.query.TupleQueryResultHandlerException; -import org.openrdf.query.resultio.Format; +//import org.openrdf.query.resultio.Format; +import eu.earthobservatory.utils.Format; import org.openrdf.query.resultio.TupleQueryResultWriter; import org.openrdf.query.resultio.stSPARQLQueryResultWriterFactory; import org.openrdf.repository.RepositoryException;