[Mulgara-svn] r1932 - in trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational: . d2rq
alexhall at mulgara.org
alexhall at mulgara.org
Wed Mar 24 19:07:11 UTC 2010
Author: alexhall
Date: 2010-03-24 12:07:10 -0700 (Wed, 24 Mar 2010)
New Revision: 1932
Modified:
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalQuery.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ClassMapElem.java
Log:
Applying patch from Alex Miller to support the d2rq:containsDuplicates property in the relational resolver
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalQuery.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalQuery.java 2010-03-18 21:26:58 UTC (rev 1931)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalQuery.java 2010-03-24 19:07:10 UTC (rev 1932)
@@ -78,6 +78,7 @@
private Set<String> restrictionSet;
private Map<Variable,VariableDesc> variableMap;
private Set<Variable> variableSet;
+ private boolean distinct = false;
private Map<LiteralDesc,List<UnionCase>> unionCases;
@@ -144,9 +145,14 @@
restrictionSet.add(restriction);
}
+ public void makeDistinct() {
+ this.distinct = true;
+ }
+
public List<String> getQuery() {
if (unionCases.size() == 0) {
- String sql = "SELECT " + toList(columnList, ", ") + " FROM " + toList(tableSet, ", ");
+ String distinctStr = distinct ? "DISTINCT " : "";
+ String sql = "SELECT " + distinctStr + toList(columnList, ", ") + " FROM " + toList(tableSet, ", ");
if (restrictionSet.size() > 0) {
sql += " WHERE " + toList(restrictionSet, " AND ");
}
@@ -165,7 +171,6 @@
}
}
-
private List<LiteralDesc> assignIndicies() {
List<LiteralDesc> indexList = new ArrayList<LiteralDesc>();
for (LiteralDesc desc: unionCases.keySet()) {
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java 2010-03-18 21:26:58 UTC (rev 1931)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java 2010-03-24 19:07:10 UTC (rev 1932)
@@ -435,6 +435,7 @@
} finally {
answer.close();
}
+
try {
st = TuplesOperations.sort(lt);
} finally {
@@ -480,6 +481,7 @@
for (String c: classMap.condition) {
query.addRestriction(c);
}
+
} else { // subj !instanceof Variable
VariableDesc desc;
if (classMap.uriColumn != null) {
@@ -500,6 +502,10 @@
query.addRestriction(r);
}
}
+
+ if(classMap.containsDuplicates) {
+ query.makeDistinct();
+ }
}
private void includePropertyBridge(RelationalQuery query, Constraint c, Map<String,? extends PropertyBridgeElem> propBs)
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ClassMapElem.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ClassMapElem.java 2010-03-18 21:26:58 UTC (rev 1931)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ClassMapElem.java 2010-03-24 19:07:10 UTC (rev 1932)
@@ -59,7 +59,7 @@
public final String bNodeIdColumns;
public final TranslationTableElem translateWith;
public final String dataStorage;
-// public final String containsDuplicates;
+ public final boolean containsDuplicates;
public final List<AdditionalPropertyElem> additionalProperties;
public final List<String> condition;
@@ -74,7 +74,9 @@
bNodeIdColumns = getStringObject(map, Constants.bNodeIdColumns, model, true);
dataStorage = getStringObject(map, Constants.dataStorage, model, true);
condition = getStringObjects(map, Constants.condition, model);
-
+ String duplicateStr = getStringObject(map, Constants.containsDuplicates, model, true);
+ containsDuplicates = "true".equalsIgnoreCase(duplicateStr);
+
LocalNode ttable = getLocalNodeObject(map, Constants.translateWith, model, true);
translateWith = (ttable != null) ? new TranslationTableElem(resolver, session, ttable, defModel) : null;
More information about the Mulgara-svn
mailing list