/******************************************************************************* * Copyright (c) 2007 Cambridge Semantics Incorporated. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Cambridge Semantics Incorporated *******************************************************************************/ package org.openanzo.glitter; import java.util.HashSet; import junit.framework.TestCase; import org.openanzo.glitter.query.PatternSolutionImpl; import org.openanzo.glitter.query.SPARQLAlgebra; import org.openanzo.glitter.query.SolutionList; import org.openanzo.glitter.query.SolutionSet; import org.openanzo.glitter.syntax.abstrakt.Expression; import org.openanzo.rdf.MemTypedLiteral; import org.openanzo.rdf.MemVariable; import org.openanzo.rdf.Variable; /** * Tests SPARQL algebraic operations. * */ public class TestSPARQLAlgebra extends TestCase { private static SolutionList solutionsLHS = new SolutionList(); private static SolutionList solutionsRHS = new SolutionList(); private static SolutionList solutionExpectedLeftJoin = new SolutionList(); private static SolutionList solutionExpectedJoin = new SolutionList(); private static Variable x = MemVariable.createVariable("x"); private static Variable y = MemVariable.createVariable("y"); static { PatternSolutionImpl patternA1 = new PatternSolutionImpl(); patternA1.setBinding(x, MemTypedLiteral.create("x1")); patternA1.setBinding(y, MemTypedLiteral.create("y1")); solutionsLHS.add(patternA1); PatternSolutionImpl patternA2 = new PatternSolutionImpl(); patternA2.setBinding(y, MemTypedLiteral.create("y2")); solutionsLHS.add(patternA2); PatternSolutionImpl patternB1 = new PatternSolutionImpl(); patternB1.setBinding(x, MemTypedLiteral.create("x1")); patternB1.setBinding(y, MemTypedLiteral.create("y3")); solutionsRHS.add(patternB1); PatternSolutionImpl patternB2 = new PatternSolutionImpl(); patternB2.setBinding(x, MemTypedLiteral.create("x2")); patternB2.setBinding(y, MemTypedLiteral.create("y2")); solutionsRHS.add(patternB2); solutionExpectedLeftJoin.add(patternA1); solutionExpectedLeftJoin.add(patternB2); solutionExpectedJoin.add(patternB2); } /** * Test left join logic * * @throws Exception */ public void testLeftJoin1() throws Exception { SolutionSet ssActual = SPARQLAlgebra.leftJoin(solutionsLHS, solutionsRHS, new HashSet<Expression>()); assertEquals(solutionExpectedLeftJoin, ssActual); } /** * Test join logic * * @throws Exception */ public void testJoin() throws Exception { SolutionSet ssActual = SPARQLAlgebra.join(solutionsLHS, solutionsRHS); assertEquals(solutionExpectedJoin, ssActual); } }