|
From: <pan...@us...> - 2008-09-10 04:15:24
|
Revision: 103
http://trippi.svn.sourceforge.net/trippi/?rev=103&view=rev
Author: pangloss
Date: 2008-09-10 04:15:34 +0000 (Wed, 10 Sep 2008)
Log Message:
-----------
sparql support
Modified Paths:
--------------
trunk/src/java/org/trippi/Trippi.properties
trunk/src/java/org/trippi/impl/mulgara/MulgaraSession.java
trunk/src/java/org/trippi/impl/mulgara/MulgaraSessionFactory.java
trunk/src/test/org/trippi/impl/mulgara/MulgaraConnectorIntegrationTest.java
Modified: trunk/src/java/org/trippi/Trippi.properties
===================================================================
--- trunk/src/java/org/trippi/Trippi.properties 2008-09-09 09:20:23 UTC (rev 102)
+++ trunk/src/java/org/trippi/Trippi.properties 2008-09-10 04:15:34 UTC (rev 103)
@@ -1,2 +1,2 @@
-trippi.version=1.3.2
+trippi.version=1.4
buildDate=@buildDate@
Modified: trunk/src/java/org/trippi/impl/mulgara/MulgaraSession.java
===================================================================
--- trunk/src/java/org/trippi/impl/mulgara/MulgaraSession.java 2008-09-09 09:20:23 UTC (rev 102)
+++ trunk/src/java/org/trippi/impl/mulgara/MulgaraSession.java 2008-09-10 04:15:34 UTC (rev 103)
@@ -30,6 +30,7 @@
import org.mulgara.resolver.LocalJRDFDatabaseSession;
import org.mulgara.server.JRDFSession;
import org.mulgara.server.driver.JRDFGraphFactory;
+import org.mulgara.sparql.SparqlInterpreter;
import org.trippi.TripleIterator;
import org.trippi.TrippiException;
@@ -136,6 +137,27 @@
throw new TrippiException(e.getMessage(), e);
}
return new MulgaraTupleIterator(ans);
+ } else if (language.equalsIgnoreCase("sparql")) {
+ queryText = doAliasReplacements(queryText);
+ Answer ans = null;
+
+ // expand shortcut "from <#" to "from <" + m_serverURI
+ queryText = queryText.replaceAll("\\s+from\\s+<#", " from <" + m_serverURI);
+ // expand shortcut "in <#" to "in <" + m_serverURI
+ queryText = queryText.replaceAll("\\s+in\\s+<#", " in <" + m_serverURI);
+ SparqlInterpreter interpreter = new SparqlInterpreter();
+ try {
+ ans = m_session.query(interpreter.parseQuery(queryText));
+ } catch (QueryException e) {
+ throw new TrippiException(e.getMessage(), e);
+ } catch (IOException e) {
+ throw new TrippiException(e.getMessage(), e);
+ } catch (MulgaraLexerException e) {
+ throw new TrippiException(e.getMessage(), e);
+ } catch (MulgaraParserException e) {
+ throw new TrippiException(e.getMessage(), e);
+ }
+ return new MulgaraTupleIterator(ans);
} else {
throw new TrippiException("Unrecognized query language: "
+ language);
Modified: trunk/src/java/org/trippi/impl/mulgara/MulgaraSessionFactory.java
===================================================================
--- trunk/src/java/org/trippi/impl/mulgara/MulgaraSessionFactory.java 2008-09-09 09:20:23 UTC (rev 102)
+++ trunk/src/java/org/trippi/impl/mulgara/MulgaraSessionFactory.java 2008-09-10 04:15:34 UTC (rev 103)
@@ -25,7 +25,7 @@
.getLogger(MulgaraSessionFactory.class.getName());
/** iTQL */
- public static final String[] TUPLE_LANGUAGES = new String[] { "itql" };
+ public static final String[] TUPLE_LANGUAGES = new String[] { "itql", "sparql" };
/** SPO */
public static final String[] TRIPLE_LANGUAGES = new String[] { "spo" };
Modified: trunk/src/test/org/trippi/impl/mulgara/MulgaraConnectorIntegrationTest.java
===================================================================
--- trunk/src/test/org/trippi/impl/mulgara/MulgaraConnectorIntegrationTest.java 2008-09-09 09:20:23 UTC (rev 102)
+++ trunk/src/test/org/trippi/impl/mulgara/MulgaraConnectorIntegrationTest.java 2008-09-10 04:15:34 UTC (rev 103)
@@ -57,6 +57,74 @@
}
}
+ public void testTql() throws Exception {
+ if (!(_connector instanceof MulgaraConnector)) {
+ fail("expected MulgaraConnector");
+ }
+
+ TriplestoreReader reader = _connector.getReader();
+ TriplestoreWriter writer = _connector.getWriter();
+ MulgaraConnector conn = (MulgaraConnector) _connector;
+ MulgaraSessionFactory factory = (MulgaraSessionFactory) conn
+ .getSessionFactory();
+ URI modelURI = factory.getModelURI();
+
+ SubjectNode s = _geFactory.createResource(new URI("urn:test:subject"));
+ PredicateNode p = _geFactory.createResource(new URI("urn:test:predicate"));
+ ObjectNode o = _geFactory.createResource(new URI("urn:test:object"));
+ Triple triple = _geFactory.createTriple(s, p, o);
+ writer.add(triple, true);
+
+ String query = "select $s $o from <" + modelURI + "> "
+ + "where $s <" + p + "> $o;";
+
+ System.out.println("query: " + query);
+
+ TupleIterator tuples = reader.findTuples("itql", query, 0, false);
+
+ assertTrue(tuples.hasNext());
+ Map<String, Node> map = tuples.next();
+ assertFalse(tuples.hasNext());
+ ObjectNode obj = (ObjectNode)map.get("o");
+ assertEquals(o.toString(), obj.toString());
+ }
+
+ /**
+ * This is just a sanity check for SPARQL support.
+ *
+ * @throws Exception
+ */
+ public void testSparql() throws Exception {
+ if (!(_connector instanceof MulgaraConnector)) {
+ fail("expected MulgaraConnector");
+ }
+
+ TriplestoreReader reader = _connector.getReader();
+ TriplestoreWriter writer = _connector.getWriter();
+ MulgaraConnector conn = (MulgaraConnector) _connector;
+ MulgaraSessionFactory factory = (MulgaraSessionFactory) conn
+ .getSessionFactory();
+ URI modelURI = factory.getModelURI();
+
+ SubjectNode s = _geFactory.createResource(new URI("urn:test:subject"));
+ PredicateNode p = _geFactory.createResource(new URI("urn:test:predicate"));
+ ObjectNode o = _geFactory.createResource(new URI("urn:test:object"));
+ Triple triple = _geFactory.createTriple(s, p, o);
+ writer.add(triple, true);
+
+ String query = "SELECT * FROM <" + modelURI + "> WHERE { ?s <" + p + "> ?o }";
+
+ System.out.println("query: " + query);
+
+ TupleIterator tuples = reader.findTuples("sparql", query, 0, false);
+
+ assertTrue(tuples.hasNext());
+ Map<String, Node> map = tuples.next();
+ assertFalse(tuples.hasNext());
+ ObjectNode obj = (ObjectNode)map.get("o");
+ assertEquals(o.toString(), obj.toString());
+ }
+
public void xtestLuceneModel() throws Exception {
if (!(_connector instanceof MulgaraConnector)) {
fail("expected MulgaraConnector");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|