diff --git a/compliance/sparql/src/test/java/org/eclipse/rdf4j/query/parser/sparql/HTTPSparqlUpdateTest.java b/compliance/sparql/src/test/java/org/eclipse/rdf4j/query/parser/sparql/HTTPSparqlUpdateTest.java new file mode 100644 index 000000000..b4b66b3b6 --- /dev/null +++ b/compliance/sparql/src/test/java/org/eclipse/rdf4j/query/parser/sparql/HTTPSparqlUpdateTest.java @@ -0,0 +1,105 @@ +/******************************************************************************* + * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Distribution License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + *******************************************************************************/ +package org.eclipse.rdf4j.query.parser.sparql; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; + +import org.eclipse.rdf4j.model.vocabulary.FOAF; +import org.eclipse.rdf4j.query.QueryLanguage; +import org.eclipse.rdf4j.query.Update; +import org.eclipse.rdf4j.repository.Repository; +import org.eclipse.rdf4j.repository.http.HTTPRepository; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * @author jeen + */ +public class HTTPSparqlUpdateTest extends SPARQLUpdateTest { + + private static SPARQLEmbeddedServer server; + + private static String repositoryId = "test-sparql"; + + @BeforeClass + public static void startServer() throws Exception { + server = new SPARQLEmbeddedServer(Arrays.asList(repositoryId)); + try { + server.start(); + } catch (Exception e) { + server.stop(); + throw e; + } + } + + @AfterClass + public static void stopServer() throws Exception { + server.stop(); + } + + @Override + protected Repository newRepository() throws Exception { + return new HTTPRepository(server.getRepositoryUrl(repositoryId)); + } + + @Ignore + @Test + @Override + public void testAutoCommitHandling() { + // transaction isolation is not supported for HTTP connections. disabling + // test. + System.err.println("temporarily disabled testAutoCommitHandling() for HTTPRepository. See SES-1652"); + } + + @Test + public void testBindingsInUpdateTransaction() throws Exception { + // See issue SES-1889 + logger.debug("executing test testBindingsInUpdateTransaction"); + + StringBuilder update1 = new StringBuilder(); + update1.append(getNamespaceDeclarations()); + update1.append("DELETE { ?x foaf:name ?y } WHERE {?x foaf:name ?y }"); + + try { + assertTrue(con.hasStatement(bob, FOAF.NAME, f.createLiteral("Bob"), true)); + assertTrue(con.hasStatement(alice, FOAF.NAME, f.createLiteral("Alice"), true)); + + con.begin(); + Update operation = con.prepareUpdate(QueryLanguage.SPARQL, update1.toString()); + operation.setBinding("x", bob); + + operation.execute(); + + con.commit(); + + // only bob's name should have been deleted (due to the binding) + assertFalse(con.hasStatement(bob, FOAF.NAME, f.createLiteral("Bob"), true)); + assertTrue(con.hasStatement(alice, FOAF.NAME, f.createLiteral("Alice"), true)); + + } catch (Exception e) { + if (con.isActive()) { + con.rollback(); + } + } + } + + @Ignore + @Test + @Override + public void testConsecutiveUpdatesInSameTransaction() { + // transaction isolation is not supported for HTTP connections. disabling + // test. + System.err.println( + "temporarily disabled testConsecutiveUpdatesInSameTransaction() for HTTPRepository. See SES-1652"); + } +} diff --git a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/CascadeValueExceptionTest.java b/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/CascadeValueExceptionTest.java deleted file mode 100644 index 2630ae2d6..000000000 --- a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/CascadeValueExceptionTest.java +++ /dev/null @@ -1,218 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Distribution License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/org/documents/edl-v10.php. - *******************************************************************************/ -package org.eclipse.rdf4j.repository; - -import static org.junit.Assert.assertFalse; - -import org.eclipse.rdf4j.model.vocabulary.RDF; -import org.eclipse.rdf4j.query.QueryLanguage; -import org.eclipse.rdf4j.query.TupleQuery; -import org.eclipse.rdf4j.query.TupleQueryResult; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -public abstract class CascadeValueExceptionTest { - - @BeforeClass - public static void setUpClass() throws Exception { - System.setProperty("org.eclipse.rdf4j.repository.debug", "true"); - } - - private static String queryStrLT = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\" < \"2007\"^^))}"; - - private static String queryStrLE = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\" <= \"2007\"^^))}"; - - private static String queryStrEQ = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\" = \"2007\"^^))}"; - - private static String queryStrNE = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\" != \"2007\"^^))}"; - - private static String queryStrGE = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\" >= \"2007\"^^))}"; - - private static String queryStrGT = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\" > \"2007\"^^))}"; - - private static String queryStrAltLT = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\"^^ < \"2007\"^^))}"; - - private static String queryStrAltLE = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\"^^ <= \"2007\"^^))}"; - - private static String queryStrAltEQ = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\"^^ = \"2007\"^^))}"; - - private static String queryStrAltNE = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\"^^ != \"2007\"^^))}"; - - private static String queryStrAltGE = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\"^^ >= \"2007\"^^))}"; - - private static String queryStrAltGT = "SELECT * WHERE { ?s ?p ?o FILTER( !(\"2002\"^^ > \"2007\"^^))}"; - - private RepositoryConnection conn; - - private Repository repository; - - @Test - public void testValueExceptionLessThanPlain() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrLT); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionLessThanOrEqualPlain() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrLE); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionEqualPlain() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrEQ); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionNotEqualPlain() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrNE); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionGreaterThanOrEqualPlain() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrGE); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionGreaterThanPlain() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrGT); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionLessThanTyped() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrAltLT); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionLessThanOrEqualTyped() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrAltLE); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionEqualTyped() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrAltEQ); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionNotEqualTyped() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrAltNE); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionGreaterThanOrEqualTyped() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrAltGE); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Test - public void testValueExceptionGreaterThanTyped() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStrAltGT); - TupleQueryResult evaluate = query.evaluate(); - try { - assertFalse(evaluate.hasNext()); - } finally { - evaluate.close(); - } - } - - @Before - public void setUp() throws Exception { - repository = createRepository(); - conn = repository.getConnection(); - conn.add(RDF.NIL, RDF.TYPE, RDF.LIST); - } - - protected Repository createRepository() throws Exception { - Repository repository = newRepository(); - repository.initialize(); - RepositoryConnection con = repository.getConnection(); - try { - con.clear(); - con.clearNamespaces(); - } finally { - con.close(); - } - return repository; - } - - protected abstract Repository newRepository() throws Exception; - - @After - public void tearDown() throws Exception { - conn.close(); - conn = null; - - repository.shutDown(); - repository = null; - } -} diff --git a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/EquivalentTest.java b/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/EquivalentTest.java deleted file mode 100644 index 4cab6fbdf..000000000 --- a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/EquivalentTest.java +++ /dev/null @@ -1,296 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Distribution License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/org/documents/edl-v10.php. - *******************************************************************************/ -package org.eclipse.rdf4j.repository; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.Collection; -import java.util.LinkedList; - -import org.eclipse.rdf4j.model.IRI; -import org.eclipse.rdf4j.model.Literal; -import org.eclipse.rdf4j.model.Value; -import org.eclipse.rdf4j.model.ValueFactory; -import org.eclipse.rdf4j.model.impl.SimpleValueFactory; -import org.eclipse.rdf4j.model.vocabulary.RDF; -import org.eclipse.rdf4j.model.vocabulary.XMLSchema; -import org.eclipse.rdf4j.query.MalformedQueryException; -import org.eclipse.rdf4j.query.QueryEvaluationException; -import org.eclipse.rdf4j.query.QueryLanguage; -import org.eclipse.rdf4j.query.TupleQuery; -import org.eclipse.rdf4j.query.TupleQueryResult; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; - -@RunWith(Parameterized.class) -public abstract class EquivalentTest { - - @BeforeClass - public static void setUpClass() throws Exception { - System.setProperty("org.eclipse.rdf4j.repository.debug", "true"); - } - - private static ValueFactory vf = SimpleValueFactory.getInstance(); - - private static Literal xyz_simple = vf.createLiteral("xyz"); - - private static Literal xyz_en = vf.createLiteral("xyz", "en"); - - private static Literal xyz_EN = vf.createLiteral("xyz", "EN"); - - private static Literal xyz_string = vf.createLiteral("xyz", XMLSchema.STRING); - - private static Literal xyz_integer = vf.createLiteral("xyz", XMLSchema.INTEGER); - - private static Literal xyz_unknown = vf.createLiteral("xyz", vf.createIRI("http://example/unknown")); - - private static IRI xyz_uri = vf.createIRI("http://example/xyz"); - - private static Literal abc_simple = vf.createLiteral("abc"); - - private static Literal abc_en = vf.createLiteral("abc", "en"); - - private static Literal abc_EN = vf.createLiteral("abc", "EN"); - - private static Literal abc_string = vf.createLiteral("abc", XMLSchema.STRING); - - private static Literal abc_integer = vf.createLiteral("abc", XMLSchema.INTEGER); - - private static Literal abc_unknown = vf.createLiteral("abc", vf.createIRI("http://example/unknown")); - - private static IRI abc_uri = vf.createIRI("http://example/abc"); - - private static IRI t1 = vf.createIRI("http://example/t1"); - - private static IRI t2 = vf.createIRI("http://example/t2"); - - private static final String IND = "?"; - - private static final String EQ = "="; - - private static final String NEQ = "!="; - - private static final String PREFIX = "PREFIX xsd:\n" - + "PREFIX rdf:" + "PREFIX ex:"; - - private static String matrix = "\"xyz\" \"xyz\" eq\n" + "\"xyz\" \"xyz\"@en neq\n" - + "\"xyz\" \"xyz\"@EN neq\n" + "\"xyz\" \"xyz\"^^xsd:string eq\n" - + "\"xyz\" \"xyz\"^^xsd:integer ind\n" + "\"xyz\" \"xyz\"^^ex:unknown ind\n" - + "\"xyz\" _:xyz neq\n" + "\"xyz\" :xyz neq\n" + "\"xyz\"@en \"xyz\" neq\n" - + "\"xyz\"@en \"xyz\"@en eq\n" + "\"xyz\"@en \"xyz\"@EN eq\n" + "\"xyz\"@en \"xyz\"^^xsd:string neq\n" - + "\"xyz\"@en \"xyz\"^^xsd:integer neq\n" + "\"xyz\"@en \"xyz\"^^ex:unknown neq\n" - + "\"xyz\"@en _:xyz neq\n" + "\"xyz\"@en :xyz neq\n" + "\"xyz\"@EN \"xyz\" neq\n" - + "\"xyz\"@EN \"xyz\"@en eq\n" + "\"xyz\"@EN \"xyz\"@EN eq\n" + "\"xyz\"@EN \"xyz\"^^xsd:string neq\n" - + "\"xyz\"@EN \"xyz\"^^xsd:integer neq\n" + "\"xyz\"@EN \"xyz\"^^ex:unknown neq\n" - + "\"xyz\"@EN _:xyz neq\n" + "\"xyz\"@EN :xyz neq\n" + "\"xyz\"^^xsd:string \"xyz\" eq\n" - + "\"xyz\"^^xsd:string \"xyz\"@en neq\n" + "\"xyz\"^^xsd:string \"xyz\"@EN neq\n" - + "\"xyz\"^^xsd:string \"xyz\"^^xsd:string eq\n" + "\"xyz\"^^xsd:string \"xyz\"^^xsd:integer ind\n" - + "\"xyz\"^^xsd:string \"xyz\"^^ex:unknown ind\n" + "\"xyz\"^^xsd:string _:xyz neq\n" - + "\"xyz\"^^xsd:string :xyz neq\n" + "\"xyz\"^^xsd:integer \"xyz\" ind\n" - + "\"xyz\"^^xsd:integer \"xyz\"@en neq\n" + "\"xyz\"^^xsd:integer \"xyz\"@EN neq\n" - + "\"xyz\"^^xsd:integer \"xyz\"^^xsd:string ind\n" + "\"xyz\"^^xsd:integer \"xyz\"^^xsd:integer eq\n" - + "\"xyz\"^^xsd:integer \"xyz\"^^ex:unknown ind\n" + "\"xyz\"^^xsd:integer _:xyz neq\n" - + "\"xyz\"^^xsd:integer :xyz neq\n" + "\"xyz\"^^ex:unknown \"xyz\" ind\n" - + "\"xyz\"^^ex:unknown \"xyz\"@en neq\n" + "\"xyz\"^^ex:unknown \"xyz\"@EN neq\n" - + "\"xyz\"^^ex:unknown \"xyz\"^^xsd:string ind\n" + "\"xyz\"^^ex:unknown \"xyz\"^^xsd:integer ind\n" - + "\"xyz\"^^ex:unknown \"xyz\"^^ex:unknown eq\n" + "\"xyz\"^^ex:unknown _:xyz neq\n" - + "\"xyz\"^^ex:unknown :xyz neq\n" + "_:xyz \"xyz\" neq\n" + "_:xyz \"xyz\"@en neq\n" - + "_:xyz \"xyz\"@EN neq\n" + "_:xyz \"xyz\"^^xsd:string neq\n" + "_:xyz \"xyz\"^^xsd:integer neq\n" - + "_:xyz \"xyz\"^^ex:unknown neq\n" + "_:xyz _:xyz eq\n" + "_:xyz :xyz neq\n" - + ":xyz \"xyz\" neq\n" + ":xyz \"xyz\"@en neq\n" + ":xyz \"xyz\"@EN neq\n" - + ":xyz \"xyz\"^^xsd:string neq\n" + ":xyz \"xyz\"^^xsd:integer neq\n" - + ":xyz \"xyz\"^^ex:unknown neq\n" + ":xyz _:xyz neq\n" + ":xyz :xyz eq\n" - + "\"xyz\" \"abc\" neq \n" + "\"xyz\" \"abc\"@en neq \n" + "\"xyz\" \"abc\"@EN neq \n" - + "\"xyz\" \"abc\"^^xsd:string neq \n" + "\"xyz\" \"abc\"^^xsd:integer ind\n" - + "\"xyz\" \"abc\"^^:unknown ind\n" + "\"xyz\" _:abc neq \n" - + "\"xyz\" :abc neq \n" + "\"xyz\"@en \"abc\" neq \n" + "\"xyz\"@en \"abc\"@en neq \n" - + "\"xyz\"@en \"abc\"@EN neq \n" + "\"xyz\"@en \"abc\"^^xsd:string neq \n" - + "\"xyz\"@en \"abc\"^^xsd:integer neq \n" + "\"xyz\"@en \"abc\"^^:unknown neq \n" - + "\"xyz\"@en _:abc neq \n" + "\"xyz\"@en :abc neq \n" + "\"xyz\"@EN \"abc\" neq \n" - + "\"xyz\"@EN \"abc\"@en neq \n" + "\"xyz\"@EN \"abc\"@EN neq \n" - + "\"xyz\"@EN \"abc\"^^xsd:string neq \n" + "\"xyz\"@EN \"abc\"^^xsd:integer neq \n" - + "\"xyz\"@EN \"abc\"^^:unknown neq \n" + "\"xyz\"@EN _:abc neq \n" - + "\"xyz\"@EN :abc neq \n" + "\"xyz\"^^xsd:string \"abc\" neq \n" - + "\"xyz\"^^xsd:string \"abc\"@en neq \n" + "\"xyz\"^^xsd:string \"abc\"@EN neq \n" - + "\"xyz\"^^xsd:string \"abc\"^^xsd:string neq \n" - + "\"xyz\"^^xsd:string \"abc\"^^xsd:integer ind\n" - + "\"xyz\"^^xsd:string \"abc\"^^:unknown ind\n" + "\"xyz\"^^xsd:string _:abc neq \n" - + "\"xyz\"^^xsd:string :abc neq \n" + "\"xyz\"^^xsd:integer \"abc\" ind\n" - + "\"xyz\"^^xsd:integer \"abc\"@en neq \n" + "\"xyz\"^^xsd:integer \"abc\"@EN neq \n" - + "\"xyz\"^^xsd:integer \"abc\"^^xsd:string ind\n" - + "\"xyz\"^^xsd:integer \"abc\"^^xsd:integer ind\n" - + "\"xyz\"^^xsd:integer \"abc\"^^:unknown ind\n" + "\"xyz\"^^xsd:integer _:abc neq \n" - + "\"xyz\"^^xsd:integer :abc neq \n" + "\"xyz\"^^:unknown \"abc\" ind\n" - + "\"xyz\"^^:unknown \"abc\"@en neq \n" + "\"xyz\"^^:unknown \"abc\"@EN neq \n" - + "\"xyz\"^^:unknown \"abc\"^^xsd:string ind\n" - + "\"xyz\"^^:unknown \"abc\"^^xsd:integer ind\n" - + "\"xyz\"^^:unknown \"abc\"^^:unknown ind\n" + "\"xyz\"^^:unknown _:abc neq \n" - + "\"xyz\"^^:unknown :abc neq \n" + "_:xyz \"abc\" neq \n" - + "_:xyz \"abc\"@en neq \n" + "_:xyz \"abc\"@EN neq \n" - + "_:xyz \"abc\"^^xsd:string neq \n" + "_:xyz \"abc\"^^xsd:integer neq \n" - + "_:xyz \"abc\"^^:unknown neq \n" + "_:xyz _:abc neq \n" + "_:xyz :abc neq \n" - + ":xyz \"abc\" neq \n" + ":xyz \"abc\"@en neq \n" + ":xyz \"abc\"@EN neq \n" - + ":xyz \"abc\"^^xsd:string neq \n" + ":xyz \"abc\"^^xsd:integer neq \n" - + ":xyz \"abc\"^^:unknown neq \n" + ":xyz _:abc neq \n" + ":xyz :abc neq "; - - @Parameters(name = "{1} {0} {2}") - public static Collection params() { - LinkedList params = new LinkedList<>(); - for (String row : matrix.split("\n")) { - if (row.contains("_:")) - continue; - String[] fields = row.split("\t", 3); - if (fields[2].contains("neq")) { - params.add(new Object[] { NEQ, fields[0], fields[1] }); - } else if (fields[2].contains("eq")) { - params.add(new Object[] { EQ, fields[0], fields[1] }); - } else if (fields[2].contains("ind")) { - params.add(new Object[] { IND, fields[0], fields[1] }); - } else { - throw new AssertionError(row); - } - } - return params; - } - - private Value term1; - - private Value term2; - - private String operator; - - private Repository repository; - - public EquivalentTest(String operator, String term1, String term2) { - this.operator = operator; - this.term1 = getTerm(term1); - this.term2 = getTerm(term2); - } - - @Before - public void setUp() throws Exception { - repository = createRepository(); - RepositoryConnection con = repository.getConnection(); - try { - con.begin(); - con.clear(); - con.add(t1, RDF.VALUE, term1); - con.add(t2, RDF.VALUE, term2); - con.commit(); - } finally { - con.close(); - } - } - - @After - public void tearDown() throws Exception { - repository.shutDown(); - repository = null; - } - - @Test - public void testOperator() throws Throwable { - assertEquals(operator, compare(term1, term2)); - } - - protected Repository createRepository() throws Exception { - Repository repository = newRepository(); - repository.initialize(); - RepositoryConnection con = repository.getConnection(); - try { - con.begin(); - con.clear(); - con.clearNamespaces(); - con.commit(); - } finally { - con.close(); - } - return repository; - } - - protected abstract Repository newRepository() throws Exception; - - private static Value getTerm(String label) { - if (label.contains("xyz")) { - if (label.contains("integer")) - return xyz_integer; - if (label.contains("string")) - return xyz_string; - if (label.contains("unknown")) - return xyz_unknown; - if (label.contains("en")) - return xyz_en; - if (label.contains("EN")) - return xyz_EN; - if (label.contains(":xyz")) - return xyz_uri; - if (label.contains("\"xyz\"")) - return xyz_simple; - } - if (label.contains("abc")) { - if (label.contains("integer")) - return abc_integer; - if (label.contains("string")) - return abc_string; - if (label.contains("unknown")) - return abc_unknown; - if (label.contains("en")) - return abc_en; - if (label.contains("EN")) - return abc_EN; - if (label.contains(":abc")) - return abc_uri; - if (label.contains("\"abc\"")) - return abc_simple; - } - throw new AssertionError(label); - } - - private String compare(Value term1, Value term2) throws Exception { - boolean eq = evaluate(EQ); - boolean neq = evaluate(NEQ); - assertTrue(!eq || !neq); - if (eq && !neq) - return EQ; - if (!eq && neq) - return NEQ; - if (!eq && !neq) - return IND; - throw new AssertionError(); - } - - private boolean evaluate(String op) throws RepositoryException, MalformedQueryException, QueryEvaluationException { - String qry = PREFIX + "SELECT ?term1 ?term2 " + "WHERE {ex:t1 rdf:value ?term1 . ex:t2 rdf:value ?term2 " - + "FILTER (?term1 " + op + " ?term2)}"; - return evaluateSparql(qry); - } - - private boolean evaluateSparql(String qry) - throws RepositoryException, MalformedQueryException, QueryEvaluationException { - RepositoryConnection con = repository.getConnection(); - try { - con.begin(); - TupleQuery query = con.prepareTupleQuery(QueryLanguage.SPARQL, qry); - TupleQueryResult evaluate = query.evaluate(); - try { - return evaluate.hasNext(); - } finally { - evaluate.close(); - con.commit(); - } - } finally { - con.close(); - } - } -} diff --git a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/GraphQueryResultTest.java b/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/GraphQueryResultTest.java deleted file mode 100644 index 3cd752877..000000000 --- a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/GraphQueryResultTest.java +++ /dev/null @@ -1,170 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Distribution License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/org/documents/edl-v10.php. - *******************************************************************************/ -package org.eclipse.rdf4j.repository; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; -import java.io.InputStream; - -import org.eclipse.rdf4j.model.Model; -import org.eclipse.rdf4j.model.vocabulary.OWL; -import org.eclipse.rdf4j.query.GraphQueryResult; -import org.eclipse.rdf4j.query.QueryLanguage; -import org.eclipse.rdf4j.query.QueryResults; -import org.eclipse.rdf4j.rio.RDFFormat; -import org.eclipse.rdf4j.rio.RDFParseException; -import org.eclipse.rdf4j.rio.UnsupportedRDFormatException; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -public abstract class GraphQueryResultTest { - - @BeforeClass - public static void setUpClass() throws Exception { - System.setProperty("org.eclipse.rdf4j.repository.debug", "true"); - } - - private Repository rep; - - private RepositoryConnection con; - - private String emptyDescribeQuery; - - private String singleDescribeQuery; - - private String multipleDescribeQuery; - - private String emptyConstructQuery; - - private String singleConstructQuery; - - private String multipleConstructQuery; - - @Before - public void setUp() throws Exception { - rep = createRepository(); - con = rep.getConnection(); - - buildQueries(); - addData(); - } - - @After - public void tearDown() throws Exception { - try { - con.close(); - con = null; - } finally { - rep.shutDown(); - rep = null; - } - } - - protected Repository createRepository() throws Exception { - Repository repository = newRepository(); - repository.initialize(); - RepositoryConnection con = repository.getConnection(); - try { - con.clear(); - con.clearNamespaces(); - } finally { - con.close(); - } - return repository; - } - - protected abstract Repository newRepository() throws Exception; - - /* - * build some simple SPARQL queries to use for testing the result set object. - */ - private void buildQueries() { - emptyDescribeQuery = "DESCRIBE "; - singleDescribeQuery = "DESCRIBE <" + OWL.THING.stringValue() + ">"; - multipleDescribeQuery = "DESCRIBE <" + OWL.CLASS.stringValue() + ">"; - - emptyConstructQuery = "CONSTRUCT { ?p ?o . } WHERE { ?p ?o . }"; - singleConstructQuery = "CONSTRUCT { ?s ?p <" + OWL.THING.stringValue() + "> . } WHERE { ?s ?p <" - + OWL.THING.stringValue() + "> . }"; - multipleConstructQuery = "CONSTRUCT { ?s ?p <" + OWL.CLASS.stringValue() + "> . } WHERE { ?s ?p <" - + OWL.CLASS.stringValue() + "> . }"; - } - - private void addData() throws IOException, UnsupportedRDFormatException, RDFParseException, RepositoryException { - InputStream defaultGraph = GraphQueryResultTest.class.getResourceAsStream("/testcases/graph3.ttl"); - try { - con.add(defaultGraph, "", RDFFormat.TURTLE); - } finally { - defaultGraph.close(); - } - } - - @Test - public void testDescribeEmpty() throws Exception { - GraphQueryResult result = con.prepareGraphQuery(QueryLanguage.SPARQL, emptyDescribeQuery).evaluate(); - assertFalse("Query result should be empty", result.hasNext()); - - Model model = QueryResults.asModel(result); - assertTrue("Query result should be empty", model.isEmpty()); - } - - @Test - public void testDescribeSingle() throws Exception { - GraphQueryResult result = con.prepareGraphQuery(QueryLanguage.SPARQL, singleDescribeQuery).evaluate(); - assertTrue("Query result should not be empty", result.hasNext()); - - Model model = QueryResults.asModel(result); - assertFalse("Query result should not be empty", model.isEmpty()); - assertEquals(1, model.size()); - } - - @Test - public void testDescribeMultiple() throws Exception { - GraphQueryResult result = con.prepareGraphQuery(QueryLanguage.SPARQL, multipleDescribeQuery).evaluate(); - assertTrue("Query result should not be empty", result.hasNext()); - - Model model = QueryResults.asModel(result); - assertFalse("Query result should not be empty", model.isEmpty()); - assertEquals(4, model.size()); - } - - @Test - public void testConstructEmpty() throws Exception { - GraphQueryResult result = con.prepareGraphQuery(QueryLanguage.SPARQL, emptyConstructQuery).evaluate(); - assertFalse("Query result should be empty", result.hasNext()); - - Model model = QueryResults.asModel(result); - assertTrue("Query result should be empty", model.isEmpty()); - } - - @Test - public void testConstructSingle() throws Exception { - GraphQueryResult result = con.prepareGraphQuery(QueryLanguage.SPARQL, singleConstructQuery).evaluate(); - assertTrue("Query result should not be empty", result.hasNext()); - - Model model = QueryResults.asModel(result); - assertFalse("Query result should not be empty", model.isEmpty()); - assertEquals(1, model.size()); - } - - @Test - public void testConstructMultiple() throws Exception { - GraphQueryResult result = con.prepareGraphQuery(QueryLanguage.SPARQL, multipleConstructQuery).evaluate(); - assertTrue("Query result should not be empty", result.hasNext()); - - Model model = QueryResults.asModel(result); - assertFalse("Query result should not be empty", model.isEmpty()); - assertEquals(4, model.size()); - } - -} diff --git a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlAggregatesTest.java b/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlAggregatesTest.java deleted file mode 100644 index d132b72c4..000000000 --- a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlAggregatesTest.java +++ /dev/null @@ -1,164 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Distribution License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/org/documents/edl-v10.php. - *******************************************************************************/ -package org.eclipse.rdf4j.repository; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.util.HashSet; -import java.util.Set; - -import org.eclipse.rdf4j.model.IRI; -import org.eclipse.rdf4j.model.ValueFactory; -import org.eclipse.rdf4j.query.QueryLanguage; -import org.eclipse.rdf4j.query.TupleQuery; -import org.eclipse.rdf4j.query.TupleQueryResult; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -public abstract class SparqlAggregatesTest { - - @BeforeClass - public static void setUpClass() throws Exception { - System.setProperty("org.eclipse.rdf4j.repository.debug", "true"); - } - - public String selectNameMbox = "PREFIX foaf: \n" + "SELECT ?name ?mbox\n" - + " WHERE { ?x foaf:name ?name; foaf:mbox ?mbox }"; - - public String concatMbox = "PREFIX foaf: \n" - + "SELECT ?name (group_concat(?mbox) AS ?mbox)\n" - + " WHERE { ?x foaf:name ?name; foaf:mbox ?mbox } GROUP BY ?name"; - - public String concatOptionalMbox = "PREFIX foaf: \n" - + "SELECT ?name (group_concat(?mbox) AS ?mbox)\n" - + " WHERE { ?x foaf:name ?name OPTIONAL { ?x foaf:mbox ?mbox } } GROUP BY ?name"; - - public String countMbox = "PREFIX foaf: \n" + "SELECT ?name (count(?mbox) AS ?mbox)\n" - + " WHERE { ?x foaf:name ?name; foaf:mbox ?mbox } GROUP BY ?name"; - - public String countOptionalMbox = "PREFIX foaf: \n" - + "SELECT ?name (count(?mb) AS ?mbox)\n" - + " WHERE { ?x foaf:name ?name OPTIONAL { ?x foaf:mbox ?mb } } GROUP BY ?name"; - - private Repository repository; - - private RepositoryConnection conn; - - private ValueFactory vf; - - @Test - public void testSelect() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, selectNameMbox); - TupleQueryResult result = query.evaluate(); - assertTrue(result.hasNext()); - result.next(); - result.next(); - assertFalse(result.hasNext()); - result.close(); - } - - @Test - public void testConcat() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, concatMbox); - TupleQueryResult result = query.evaluate(); - assertTrue(result.hasNext()); - assertNotNull(result.next().getValue("mbox")); - assertNotNull(result.next().getValue("mbox")); - assertFalse(result.hasNext()); - result.close(); - } - - @Test - public void testConcatOptional() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, concatOptionalMbox); - TupleQueryResult result = query.evaluate(); - assertTrue(result.hasNext()); - result.next(); - result.next(); - result.next(); - assertFalse(result.hasNext()); - result.close(); - } - - @Test - public void testCount() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, countMbox); - TupleQueryResult result = query.evaluate(); - assertTrue(result.hasNext()); - assertEquals("1", result.next().getValue("mbox").stringValue()); - assertEquals("1", result.next().getValue("mbox").stringValue()); - assertFalse(result.hasNext()); - result.close(); - } - - @Test - public void testCountOptional() throws Exception { - Set zeroOr1 = new HashSet<>(); - zeroOr1.add("0"); - zeroOr1.add("1"); - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, countOptionalMbox); - TupleQueryResult result = query.evaluate(); - assertTrue(result.hasNext()); - assertTrue(zeroOr1.contains(result.next().getValue("mbox").stringValue())); - assertTrue(zeroOr1.contains(result.next().getValue("mbox").stringValue())); - assertTrue(zeroOr1.contains(result.next().getValue("mbox").stringValue())); - assertFalse(result.hasNext()); - result.close(); - } - - @Before - public void setUp() throws Exception { - repository = createRepository(); - vf = repository.getValueFactory(); - createUser("james", "James Leigh", "james@leigh"); - createUser("megan", "Megan Leigh", "megan@leigh"); - createUser("hunt", "James Leigh Hunt", null); - conn = repository.getConnection(); - } - - protected Repository createRepository() throws Exception { - Repository repository = newRepository(); - repository.initialize(); - RepositoryConnection con = repository.getConnection(); - try { - con.clear(); - con.clearNamespaces(); - } finally { - con.close(); - } - return repository; - } - - protected abstract Repository newRepository() throws Exception; - - @After - public void tearDown() throws Exception { - conn.close(); - conn = null; - - repository.shutDown(); - repository = null; - } - - private void createUser(String id, String name, String email) throws RepositoryException { - RepositoryConnection conn = repository.getConnection(); - IRI subj = vf.createIRI("http://example.org/ns#", id); - IRI foafName = vf.createIRI("http://xmlns.com/foaf/0.1/", "name"); - IRI foafMbox = vf.createIRI("http://xmlns.com/foaf/0.1/", "mbox"); - conn.add(subj, foafName, vf.createLiteral(name)); - if (email != null) { - conn.add(subj, foafMbox, vf.createIRI("mailto:", email)); - } - conn.close(); - } -} diff --git a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlDatasetTest.java b/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlDatasetTest.java deleted file mode 100644 index 5747ea2fa..000000000 --- a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlDatasetTest.java +++ /dev/null @@ -1,175 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Distribution License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/org/documents/edl-v10.php. - *******************************************************************************/ -package org.eclipse.rdf4j.repository; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.eclipse.rdf4j.model.IRI; -import org.eclipse.rdf4j.model.Literal; -import org.eclipse.rdf4j.model.Resource; -import org.eclipse.rdf4j.model.ValueFactory; -import org.eclipse.rdf4j.model.vocabulary.RDF; -import org.eclipse.rdf4j.query.BindingSet; -import org.eclipse.rdf4j.query.QueryLanguage; -import org.eclipse.rdf4j.query.TupleQuery; -import org.eclipse.rdf4j.query.TupleQueryResult; -import org.eclipse.rdf4j.query.impl.SimpleDataset; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -public abstract class SparqlDatasetTest { - - @BeforeClass - public static void setUpClass() throws Exception { - System.setProperty("org.eclipse.rdf4j.repository.debug", "true"); - } - - public String queryNoFrom = "PREFIX foaf: \n" - + "SELECT (COUNT(DISTINCT ?name) as ?c) \n" + " WHERE { ?x foaf:name ?name . } "; - - public String queryWithFrom = "PREFIX foaf: \n" - + "SELECT (COUNT(DISTINCT ?name) as ?c) \n" + " FROM " - + " WHERE { ?x foaf:name ?name . } "; - - private Repository repository; - - private RepositoryConnection conn; - - private ValueFactory vf; - - private SimpleDataset dataset; - - private IRI graph1; - - private IRI george; - - private IRI paul; - - private IRI john; - - private IRI ringo; - - @Test - public void testNoFrom() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryNoFrom); - TupleQueryResult result = query.evaluate(); - - assertTrue(result.hasNext()); - - if (result.hasNext()) { - BindingSet bs = result.next(); - assertFalse(result.hasNext()); - - Literal count = (Literal) bs.getValue("c"); - assertEquals(4, count.intValue()); - } - result.close(); - - query.setDataset(dataset); - result = query.evaluate(); - - assertTrue(result.hasNext()); - - if (result.hasNext()) { - BindingSet bs = result.next(); - assertFalse(result.hasNext()); - - Literal count = (Literal) bs.getValue("c"); - assertEquals(2, count.intValue()); - } - result.close(); - } - - @Test - public void testWithFrom() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryWithFrom); - TupleQueryResult result = query.evaluate(); - - assertTrue(result.hasNext()); - - if (result.hasNext()) { - BindingSet bs = result.next(); - assertFalse(result.hasNext()); - - Literal count = (Literal) bs.getValue("c"); - assertEquals(2, count.intValue()); - } - result.close(); - - query.setDataset(dataset); - result = query.evaluate(); - - assertTrue(result.hasNext()); - - if (result.hasNext()) { - BindingSet bs = result.next(); - assertFalse(result.hasNext()); - - Literal count = (Literal) bs.getValue("c"); - assertEquals(2, count.intValue()); - } - result.close(); - } - - @Before - public void setUp() throws Exception { - repository = createRepository(); - vf = repository.getValueFactory(); - graph1 = vf.createIRI("http://example.org/graph1"); - john = createUser("john", "John Lennon", "john@example.org"); - paul = createUser("paul", "Paul McCartney", "paul@example.org"); - george = createUser("george", "George Harrison", "george@example.org", graph1); - ringo = createUser("ringo", "Ringo Starr", "ringo@example.org", graph1); - conn = repository.getConnection(); - - dataset = new SimpleDataset(); - dataset.addDefaultGraph(graph1); - } - - protected Repository createRepository() throws Exception { - Repository repository = newRepository(); - repository.initialize(); - RepositoryConnection con = repository.getConnection(); - try { - con.clear(); - con.clearNamespaces(); - } finally { - con.close(); - } - return repository; - } - - protected abstract Repository newRepository() throws Exception; - - @After - public void tearDown() throws Exception { - conn.close(); - conn = null; - - repository.shutDown(); - repository = null; - } - - private IRI createUser(String id, String name, String email, Resource... context) throws RepositoryException { - RepositoryConnection conn = repository.getConnection(); - IRI subj = vf.createIRI("http://example.org/ns#", id); - IRI foafName = vf.createIRI("http://xmlns.com/foaf/0.1/", "name"); - IRI foafMbox = vf.createIRI("http://xmlns.com/foaf/0.1/", "mbox"); - - conn.add(subj, RDF.TYPE, vf.createIRI("http://xmlns.com/foaf/0.1/", "Person"), context); - conn.add(subj, foafName, vf.createLiteral(name), context); - conn.add(subj, foafMbox, vf.createIRI("mailto:", email), context); - conn.close(); - - return subj; - } -} diff --git a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlOrderByTest.java b/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlOrderByTest.java deleted file mode 100644 index d4bc41079..000000000 --- a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlOrderByTest.java +++ /dev/null @@ -1,123 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Distribution License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/org/documents/edl-v10.php. - *******************************************************************************/ -package org.eclipse.rdf4j.repository; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; - -import org.eclipse.rdf4j.model.Literal; -import org.eclipse.rdf4j.model.Value; -import org.eclipse.rdf4j.model.ValueFactory; -import org.eclipse.rdf4j.query.MalformedQueryException; -import org.eclipse.rdf4j.query.QueryEvaluationException; -import org.eclipse.rdf4j.query.QueryLanguage; -import org.eclipse.rdf4j.query.TupleQuery; -import org.eclipse.rdf4j.query.TupleQueryResult; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -public abstract class SparqlOrderByTest { - - @BeforeClass - public static void setUpClass() throws Exception { - System.setProperty("org.eclipse.rdf4j.repository.debug", "true"); - } - - private String query1 = "PREFIX foaf: \n" + "SELECT ?name\n" - + "WHERE { ?x foaf:name ?name }\n" + "ORDER BY ?name\n"; - - private String query2 = "PREFIX : \n" - + "PREFIX foaf: \n" + "PREFIX xsd: \n" - + "SELECT ?name\n" + "WHERE { ?x foaf:name ?name ; :empId ?emp }\n" + "ORDER BY DESC(?emp)\n"; - - private String query3 = "PREFIX : \n" - + "PREFIX foaf: \n" + "SELECT ?name\n" - + "WHERE { ?x foaf:name ?name ; :empId ?emp }\n" + "ORDER BY ?name DESC(?emp)\n"; - - private Repository repository; - - private RepositoryConnection conn; - - @Test - public void testQuery1() throws Exception { - assertTrue("James Leigh".compareTo("James Leigh Hunt") < 0); - assertResult(query1, Arrays.asList("James Leigh", "James Leigh", "James Leigh Hunt", "Megan Leigh")); - } - - @Test - public void testQuery2() throws Exception { - assertResult(query2, Arrays.asList("Megan Leigh", "James Leigh", "James Leigh Hunt", "James Leigh")); - } - - @Test - public void testQuery3() throws Exception { - assertResult(query3, Arrays.asList("James Leigh", "James Leigh", "James Leigh Hunt", "Megan Leigh")); - } - - @Before - public void setUp() throws Exception { - repository = createRepository(); - createEmployee("james", "James Leigh", 123); - createEmployee("jim", "James Leigh", 244); - createEmployee("megan", "Megan Leigh", 1234); - createEmployee("hunt", "James Leigh Hunt", 243); - conn = repository.getConnection(); - } - - protected Repository createRepository() throws Exception { - Repository repository = newRepository(); - repository.initialize(); - RepositoryConnection con = repository.getConnection(); - try { - con.clear(); - con.clearNamespaces(); - } finally { - con.close(); - } - return repository; - } - - protected abstract Repository newRepository() throws Exception; - - @After - public void tearDown() throws Exception { - conn.close(); - conn = null; - - repository.shutDown(); - repository = null; - } - - private void createEmployee(String id, String name, int empId) throws RepositoryException { - ValueFactory vf = repository.getValueFactory(); - String foafName = "http://xmlns.com/foaf/0.1/name"; - String exEmpId = "http://example.org/ns#empId"; - RepositoryConnection conn = repository.getConnection(); - conn.add(vf.createIRI("http://example.org/ns#" + id), vf.createIRI(foafName), vf.createLiteral(name)); - conn.add(vf.createIRI("http://example.org/ns#" + id), vf.createIRI(exEmpId), vf.createLiteral(empId)); - conn.close(); - } - - private void assertResult(String queryStr, List names) - throws RepositoryException, MalformedQueryException, QueryEvaluationException { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStr); - TupleQueryResult result = query.evaluate(); - for (String name : names) { - Value value = result.next().getValue("name"); - assertEquals(name, ((Literal) value).getLabel()); - } - assertFalse(result.hasNext()); - result.close(); - } -} diff --git a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlRegexTest.java b/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlRegexTest.java deleted file mode 100644 index c2bb4e162..000000000 --- a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlRegexTest.java +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Distribution License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/org/documents/edl-v10.php. - *******************************************************************************/ -package org.eclipse.rdf4j.repository; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; - -import org.eclipse.rdf4j.model.BNode; -import org.eclipse.rdf4j.model.IRI; -import org.eclipse.rdf4j.model.Literal; -import org.eclipse.rdf4j.model.ValueFactory; -import org.eclipse.rdf4j.query.QueryLanguage; -import org.eclipse.rdf4j.query.TupleQuery; -import org.eclipse.rdf4j.query.TupleQueryResult; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -public abstract class SparqlRegexTest { - - @BeforeClass - public static void setUpClass() throws Exception { - System.setProperty("org.eclipse.rdf4j.repository.debug", "true"); - } - - public String queryInline = "PREFIX foaf: \n" + "SELECT ?name ?mbox\n" - + " WHERE { ?x foaf:name ?name ;\n" + " foaf:mbox ?mbox .\n" - + " FILTER regex(str(?mbox), \"@Work.example\", \"i\") }"; - - public String queryBinding = "PREFIX foaf: \n" + "SELECT ?name ?mbox\n" - + " WHERE { ?x foaf:name ?name ;\n" + " foaf:mbox ?mbox .\n" - + " FILTER regex(str(?mbox), ?pattern) }"; - - public String queryBindingFlags = "PREFIX foaf: \n" + "SELECT ?name ?mbox\n" - + " WHERE { ?x foaf:name ?name ;\n" + " foaf:mbox ?mbox .\n" - + " FILTER regex(str(?mbox), ?pattern, ?flags) }"; - - public String queryExpr = "PREFIX foaf: \n" + "SELECT ?name ?mbox\n" - + " WHERE { ?x foaf:name ?name ;\n" + " foaf:mbox ?mbox .\n" - + " ?y ?pattern .\n" - + " ?y ?flags .\n" - + " FILTER regex(str(?mbox), ?pattern, ?flags) }"; - - private Repository repository; - - private RepositoryConnection conn; - - private ValueFactory vf; - - private Literal hunt; - - @Test - public void testInline() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryInline); - TupleQueryResult result = query.evaluate(); - assertEquals(hunt, result.next().getValue("name")); - assertFalse(result.hasNext()); - result.close(); - } - - @Test - public void testBinding() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryBinding); - query.setBinding("pattern", vf.createLiteral("@work.example")); - TupleQueryResult result = query.evaluate(); - assertEquals(hunt, result.next().getValue("name")); - assertFalse(result.hasNext()); - result.close(); - } - - @Test - public void testBindingFlags() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryBindingFlags); - query.setBinding("pattern", vf.createLiteral("@Work.example")); - query.setBinding("flags", vf.createLiteral("i")); - TupleQueryResult result = query.evaluate(); - assertEquals(hunt, result.next().getValue("name")); - assertFalse(result.hasNext()); - result.close(); - } - - @Test - public void testExpr() throws Exception { - IRI pattern = vf.createIRI("http://example.org/ns#", "pattern"); - IRI flags = vf.createIRI("http://example.org/ns#", "flags"); - BNode bnode = vf.createBNode(); - conn.add(bnode, pattern, vf.createLiteral("@Work.example")); - conn.add(bnode, flags, vf.createLiteral("i")); - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryExpr); - TupleQueryResult result = query.evaluate(); - assertEquals(hunt, result.next().getValue("name")); - assertFalse(result.hasNext()); - result.close(); - } - - @Before - public void setUp() throws Exception { - repository = createRepository(); - vf = repository.getValueFactory(); - hunt = vf.createLiteral("James Leigh Hunt"); - createUser("james", "James Leigh", "james@leigh"); - createUser("megan", "Megan Leigh", "megan@leigh"); - createUser("hunt", "James Leigh Hunt", "james@work.example"); - conn = repository.getConnection(); - } - - protected Repository createRepository() throws Exception { - Repository repository = newRepository(); - repository.initialize(); - RepositoryConnection con = repository.getConnection(); - try { - con.clear(); - con.clearNamespaces(); - } finally { - con.close(); - } - return repository; - } - - protected abstract Repository newRepository() throws Exception; - - @After - public void tearDown() throws Exception { - conn.close(); - conn = null; - - repository.shutDown(); - repository = null; - } - - private void createUser(String id, String name, String email) throws RepositoryException { - RepositoryConnection conn = repository.getConnection(); - IRI subj = vf.createIRI("http://example.org/ns#", id); - IRI foafName = vf.createIRI("http://xmlns.com/foaf/0.1/", "name"); - IRI foafMbox = vf.createIRI("http://xmlns.com/foaf/0.1/", "mbox"); - conn.add(subj, foafName, vf.createLiteral(name)); - conn.add(subj, foafMbox, vf.createIRI("mailto:", email)); - conn.close(); - } -} diff --git a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlSetBindingTest.java b/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlSetBindingTest.java deleted file mode 100644 index f7a3a3945..000000000 --- a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/SparqlSetBindingTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Distribution License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/org/documents/edl-v10.php. - *******************************************************************************/ -package org.eclipse.rdf4j.repository; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; - -import org.eclipse.rdf4j.model.IRI; -import org.eclipse.rdf4j.model.Literal; -import org.eclipse.rdf4j.model.ValueFactory; -import org.eclipse.rdf4j.model.vocabulary.RDF; -import org.eclipse.rdf4j.query.QueryLanguage; -import org.eclipse.rdf4j.query.TupleQuery; -import org.eclipse.rdf4j.query.TupleQueryResult; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -public abstract class SparqlSetBindingTest { - - @BeforeClass - public static void setUpClass() throws Exception { - System.setProperty("org.eclipse.rdf4j.repository.debug", "true"); - } - - public String queryBinding = "PREFIX foaf: \n" + "SELECT ?name ?mbox\n" - + " WHERE { ?x foaf:name ?name ;\n" + " foaf:mbox ?mbox .\n" + " } "; - - public String queryBindingSubselect = "PREFIX foaf: \n" + "SELECT ?name ?mbox\n" - + " WHERE { ?x foaf:name ?name ;\n" + " foaf:mbox ?mbox .\n" - + " { SELECT ?x WHERE { ?x a foaf:Person } } } "; - - private Repository repository; - - private RepositoryConnection conn; - - private ValueFactory vf; - - private Literal ringo; - - private IRI ringoRes; - - @Test - public void testBinding() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryBinding); - query.setBinding("name", ringo); - TupleQueryResult result = query.evaluate(); - assertEquals(ringo, result.next().getValue("name")); - assertFalse(result.hasNext()); - result.close(); - } - - @Test - public void testBindingSubselect() throws Exception { - TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryBindingSubselect); - query.setBinding("x", ringoRes); - TupleQueryResult result = query.evaluate(); - assertEquals(ringo, result.next().getValue("name")); - assertFalse(result.hasNext()); - result.close(); - } - - @Before - public void setUp() throws Exception { - repository = createRepository(); - vf = repository.getValueFactory(); - ringo = vf.createLiteral("Ringo Starr"); - ringoRes = vf.createIRI("http://example.org/ns#", "ringo"); - - createUser("john", "John Lennon", "john@example.org"); - createUser("paul", "Paul McCartney", "paul@example.org"); - createUser("ringo", "Ringo Starr", "ringo@example.org"); - conn = repository.getConnection(); - } - - protected Repository createRepository() throws Exception { - Repository repository = newRepository(); - repository.initialize(); - RepositoryConnection con = repository.getConnection(); - try { - con.clear(); - con.clearNamespaces(); - } finally { - con.close(); - } - return repository; - } - - protected abstract Repository newRepository() throws Exception; - - @After - public void tearDown() throws Exception { - conn.close(); - conn = null; - - repository.shutDown(); - repository = null; - } - - private void createUser(String id, String name, String email) throws RepositoryException { - RepositoryConnection conn = repository.getConnection(); - IRI subj = vf.createIRI("http://example.org/ns#", id); - IRI foafName = vf.createIRI("http://xmlns.com/foaf/0.1/", "name"); - IRI foafMbox = vf.createIRI("http://xmlns.com/foaf/0.1/", "mbox"); - - conn.add(subj, RDF.TYPE, vf.createIRI("http://xmlns.com/foaf/0.1/", "Person")); - conn.add(subj, foafName, vf.createLiteral(name)); - conn.add(subj, foafMbox, vf.createIRI("mailto:", email)); - conn.close(); - } -} diff --git a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/TupleQueryResultTest.java b/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/TupleQueryResultTest.java deleted file mode 100644 index b0431db57..000000000 --- a/testsuites/store/src/main/java/org/eclipse/rdf4j/repository/TupleQueryResultTest.java +++ /dev/null @@ -1,250 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Distribution License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/org/documents/edl-v10.php. - *******************************************************************************/ -package org.eclipse.rdf4j.repository; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; - -import org.eclipse.rdf4j.model.ValueFactory; -import org.eclipse.rdf4j.query.QueryLanguage; -import org.eclipse.rdf4j.query.TupleQuery; -import org.eclipse.rdf4j.query.TupleQueryResult; -import org.eclipse.rdf4j.query.resultio.QueryResultIO; -import org.eclipse.rdf4j.query.resultio.TupleQueryResultFormat; -import org.eclipse.rdf4j.query.resultio.TupleQueryResultWriter; -import org.eclipse.rdf4j.rio.RDFFormat; -import org.eclipse.rdf4j.rio.RDFParseException; -import org.eclipse.rdf4j.rio.UnsupportedRDFormatException; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public abstract class TupleQueryResultTest { - - private final Logger logger = LoggerFactory.getLogger(TupleQueryResultTest.class); - - @BeforeClass - public static void setUpClass() throws Exception { - System.setProperty("org.eclipse.rdf4j.repository.debug", "true"); - } - - private Repository rep; - - private RepositoryConnection con; - - private String emptyResultQuery; - - private String singleResultQuery; - - private String multipleResultQuery; - - @Before - public void setUp() throws Exception { - rep = createRepository(); - con = rep.getConnection(); - - buildQueries(); - addData(); - } - - @After - public void tearDown() throws Exception { - try { - con.close(); - con = null; - } finally { - rep.shutDown(); - rep = null; - } - } - - protected Repository createRepository() throws Exception { - Repository repository = newRepository(); - repository.initialize(); - RepositoryConnection con = repository.getConnection(); - con.clear(); - con.clearNamespaces(); - con.close(); - return repository; - } - - protected abstract Repository newRepository() throws Exception; - - /* - * build some simple SeRQL queries to use for testing the result set object. - */ - private void buildQueries() { - StringBuilder query = new StringBuilder(); - - query.append("SELECT * "); - query.append("FROM {X} P {Y} "); - query.append("WHERE X != X "); - - emptyResultQuery = query.toString(); - - query = new StringBuilder(); - - query.append("SELECT DISTINCT P "); - query.append("FROM {} dc:publisher {P} "); - query.append("USING NAMESPACE "); - query.append(" dc = "); - - singleResultQuery = query.toString(); - - query = new StringBuilder(); - query.append("SELECT DISTINCT P, D "); - query.append("FROM {} dc:publisher {P}; "); - query.append(" dc:date {D} "); - query.append("USING NAMESPACE "); - query.append(" dc = "); - - multipleResultQuery = query.toString(); - } - - private void addData() throws IOException, UnsupportedRDFormatException, RDFParseException, RepositoryException { - InputStream defaultGraph = TupleQueryResultTest.class.getResourceAsStream("/testcases/default-graph-1.ttl"); - try { - con.add(defaultGraph, "", RDFFormat.TURTLE); - } finally { - defaultGraph.close(); - } - } - - @Test - public void testGetBindingNames() throws Exception { - TupleQueryResult result = con.prepareTupleQuery(QueryLanguage.SERQL, multipleResultQuery).evaluate(); - try { - List headers = result.getBindingNames(); - - assertThat(headers.get(0)).isEqualTo("P").as("first header element"); - assertThat(headers.get(1)).isEqualTo("D").as("second header element"); - } finally { - result.close(); - } - } - - /* - * deprecated public void testIsDistinct() throws Exception { TupleQueryResult result = - * con.prepareTupleQuery(QueryLanguage.SERQL, emptyResultQuery).evaluate(); try { if (result.isDistinct()) { - * fail("query result should not be distinct."); } } finally { result.close(); } result = - * con.prepareTupleQuery(QueryLanguage.SERQL, singleResultQuery).evaluate(); try { if (!result.isDistinct()) { - * fail("query result should be distinct."); } } finally { result.close(); } } - */ - - @Test - public void testIterator() throws Exception { - TupleQueryResult result = con.prepareTupleQuery(QueryLanguage.SERQL, multipleResultQuery).evaluate(); - - try { - int count = 0; - while (result.hasNext()) { - result.next(); - count++; - } - - assertTrue("query should have multiple results.", count > 1); - } finally { - result.close(); - } - } - - @Test - public void testIsEmpty() throws Exception { - TupleQueryResult result = con.prepareTupleQuery(QueryLanguage.SERQL, emptyResultQuery).evaluate(); - - try { - assertFalse("Query result should be empty", result.hasNext()); - } finally { - result.close(); - } - } - - @Test - public void testStreaming() throws Exception { - ValueFactory vf = con.getValueFactory(); - int subjectIndex = 0; - int predicateIndex = 100; - int objectIndex = 1000; - int testStatementCount = 1000; - int count = 0; - con.begin(); - while (count < testStatementCount) { - con.add(vf.createIRI("urn:test:" + subjectIndex), vf.createIRI("urn:test:" + predicateIndex), - vf.createIRI("urn:test:" + objectIndex)); - if (Math.round(Math.random()) > 0) { - subjectIndex++; - } - if (Math.round(Math.random()) > 0) { - predicateIndex++; - } - if (Math.round(Math.random()) > 0) { - objectIndex++; - } - count++; - } - con.commit(); - - for (int evaluateCount = 0; evaluateCount < 1000; evaluateCount++) { - try (ByteArrayOutputStream stream = new ByteArrayOutputStream(); - RepositoryConnection nextCon = rep.getConnection();) { - TupleQueryResultWriter sparqlWriter = QueryResultIO.createTupleWriter(TupleQueryResultFormat.SPARQL, - stream); - TupleQuery tupleQuery = nextCon.prepareTupleQuery(QueryLanguage.SPARQL, - "SELECT ?s ?p ?o WHERE { ?s ?p ?o . }"); - tupleQuery.setIncludeInferred(false); - tupleQuery.evaluate(sparqlWriter); - } - } - } - - @Test - public void testNotClosingResult() { - ValueFactory vf = con.getValueFactory(); - int subjectIndex = 0; - int predicateIndex = 100; - int objectIndex = 1000; - int testStatementCount = 1000; - int count = 0; - con.begin(); - while (count < testStatementCount) { - con.add(vf.createIRI("urn:test:" + subjectIndex), vf.createIRI("urn:test:" + predicateIndex), - vf.createIRI("urn:test:" + objectIndex)); - if (Math.round(Math.random()) > 0) { - subjectIndex++; - } - if (Math.round(Math.random()) > 0) { - predicateIndex++; - } - if (Math.round(Math.random()) > 0) { - objectIndex++; - } - count++; - } - con.commit(); - - logger.info("Open lots of TupleQueryResults without closing them"); - for (int i = 0; i < 100; i++) { - try (RepositoryConnection repCon = rep.getConnection()) { - String queryString = "select * where {?s ?p ?o}"; - TupleQuery tupleQuery = repCon.prepareTupleQuery(QueryLanguage.SPARQL, queryString); - - // see if open results hangs test - tupleQuery.evaluate(); - } - } - } -}