package exp.sparql;
import org.aksw.sparqlify.core.RegexDerivation;
import org.apache.jena.sparql.expr.Expr;
import org.apache.jena.sparql.util.ExprUtils;
import org.junit.Assert;
import org.junit.Test;
import com.karneim.util.collection.regex.PAutomaton;
import com.karneim.util.collection.regex.PatternPro;
public class RegexTests {
@Test
public void intersection() {
intersection("^http://linkedgeodata.org/ontology/.*", "^http://linkedgeodata.org/.*");
intersection("a(aa)+", "(aa)+");
}
@Test
public void alternatives() {
PatternPro p = new PatternPro("(http://blah.org/.*)|(http://test.org/.*)");
Assert.assertTrue(p.contains("http://test.org/hui"));
Assert.assertFalse(p.contains("http://evil/xxx"));
System.out.println("Success");
}
public void intersection(String a, String b) {
PatternPro p1 = new PatternPro(a);
PatternPro p2 = new PatternPro(b);
PAutomaton a1 = p1.getAutomaton();
PAutomaton a2 = p2.getAutomaton();
a1.retainAll(a2);
a1.minimize();
System.out.println(p1.getAutomaton().getStates().size());
}
@Test
public void union() {
PatternPro p1 = new PatternPro("ab1");
PatternPro p2 = new PatternPro("cd2");
PAutomaton a1 = p1.getAutomaton();
PAutomaton a2 = p2.getAutomaton();
a1.addAll(a2);
System.out.println("Union");
System.out.println(" " + p1.contains("ab2"));
System.out.println(" " + p1.contains("cd2"));
}
@Test
public void derivation() {
Expr expr = ExprUtils.parse("concat('te.*st', ?x)");
String str = RegexDerivation.deriveRegex(expr);
System.out.println(str);
PatternPro pattern = new PatternPro(str);
System.out.println("Contains: " + pattern.contains("te.*st"));
System.out.println(pattern.getRegEx());
}
}