org.openrdf.repository.SparqlSetBindingTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sesame-store-testsuite Show documentation
Show all versions of sesame-store-testsuite Show documentation
Test suite for SAIL and Repository API
/*
* Licensed to Aduna under one or more contributor license agreements.
* See the NOTICE.txt file distributed with this work for additional
* information regarding copyright ownership.
*
* Aduna licenses this file to you under the terms of the Aduna BSD
* License (the "License"); you may not use this file except in compliance
* with the License. See the LICENSE.txt file distributed with this work
* for the full License.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package org.openrdf.repository;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openrdf.model.Literal;
import org.openrdf.model.IRI;
import org.openrdf.model.ValueFactory;
import org.openrdf.model.vocabulary.RDF;
import org.openrdf.query.QueryLanguage;
import org.openrdf.query.TupleQuery;
import org.openrdf.query.TupleQueryResult;
public abstract class SparqlSetBindingTest {
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", "[email protected]");
createUser("paul", "Paul McCartney", "[email protected]");
createUser("ringo", "Ringo Starr", "[email protected]");
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();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy