Author: rwesten
Date: Wed Oct 28 07:18:35 2015
New Revision: 1710948
URL: http://svn.apache.org/viewvc?rev=1710948&view=rev
Log:
fixed full text query issues for STANBOL-877; fixed also an issue where an
additional '.' where added to SPARQL queries for unsupported FieldConstraints;
Also added a toString implementation for the SimilarityConstraint to make the
WARN level logging in case of an unsupported constraint more informative
Modified:
stanbol/trunk/entityhub/generic/servicesapi/src/main/java/org/apache/stanbol/entityhub/servicesapi/query/SimilarityConstraint.java
stanbol/trunk/entityhub/query/sparql/src/main/java/org/apache/stanbol/entityhub/query/sparql/SparqlQueryUtils.java
stanbol/trunk/entityhub/query/sparql/src/test/java/org/apache/stanbol/entityhub/query/sparql/SparqlQueryUtilsTest.java
Modified:
stanbol/trunk/entityhub/generic/servicesapi/src/main/java/org/apache/stanbol/entityhub/servicesapi/query/SimilarityConstraint.java
URL:
http://svn.apache.org/viewvc/stanbol/trunk/entityhub/generic/servicesapi/src/main/java/org/apache/stanbol/entityhub/servicesapi/query/SimilarityConstraint.java?rev=1710948&r1=1710947&r2=1710948&view=diff
==============================================================================
---
stanbol/trunk/entityhub/generic/servicesapi/src/main/java/org/apache/stanbol/entityhub/servicesapi/query/SimilarityConstraint.java
(original)
+++
stanbol/trunk/entityhub/generic/servicesapi/src/main/java/org/apache/stanbol/entityhub/servicesapi/query/SimilarityConstraint.java
Wed Oct 28 07:18:35 2015
@@ -154,4 +154,12 @@ public class SimilarityConstraint extend
}
return refContext.toString();
}
+
+ @Override
+ public String toString() {
+ return new StringBuilder(getClass().getSimpleName()).append("[context:
")
+ .append(context.length() > 20 ? (context.substring(0,18)+"..")
: context)
+ .append(" | contextType: ").append(contextType).append(" |
languages: ")
+ .append(languages).append(']').toString();
+ }
}
Modified:
stanbol/trunk/entityhub/query/sparql/src/main/java/org/apache/stanbol/entityhub/query/sparql/SparqlQueryUtils.java
URL:
http://svn.apache.org/viewvc/stanbol/trunk/entityhub/query/sparql/src/main/java/org/apache/stanbol/entityhub/query/sparql/SparqlQueryUtils.java?rev=1710948&r1=1710947&r2=1710948&view=diff
==============================================================================
---
stanbol/trunk/entityhub/query/sparql/src/main/java/org/apache/stanbol/entityhub/query/sparql/SparqlQueryUtils.java
(original)
+++
stanbol/trunk/entityhub/query/sparql/src/main/java/org/apache/stanbol/entityhub/query/sparql/SparqlQueryUtils.java
Wed Oct 28 07:18:35 2015
@@ -23,6 +23,7 @@ import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -37,6 +38,7 @@ import org.apache.stanbol.entityhub.serv
import org.apache.stanbol.entityhub.servicesapi.model.rdf.RdfResourceEnum;
import org.apache.stanbol.entityhub.servicesapi.query.Constraint;
import org.apache.stanbol.entityhub.servicesapi.query.RangeConstraint;
+import org.apache.stanbol.entityhub.servicesapi.query.SimilarityConstraint;
import org.apache.stanbol.entityhub.servicesapi.query.TextConstraint;
import
org.apache.stanbol.entityhub.servicesapi.query.TextConstraint.PatternType;
import org.apache.stanbol.entityhub.servicesapi.query.ValueConstraint;
@@ -471,7 +473,7 @@ public final class SparqlQueryUtils {
log.trace("adding a constraint [type :: {}][field :: {}][prefix ::
{}][intent :: {}].",
new Object[]{constraint.getType(), field, varPrefix, intend});
-
+ boolean added = true;
switch (constraint.getType()) {
case value:
addValueConstraint(queryString, field, (ValueConstraint)
constraint, selectedFields,
@@ -487,12 +489,15 @@ public final class SparqlQueryUtils {
addRangeConstriant(queryString, var, (RangeConstraint)
constraint, intend);
break;
default:
- log.warn("Please update this Implementation to support the
Constraint Type "
- + fieldConstraint.getValue().getType());
+ log.warn("Constraint Type '{}' not supported in SPARQL!
Constriant {} "
+ + "will be not included in the query!",
+ fieldConstraint.getValue().getType(),
fieldConstraint.getValue());
+ added = false;
break;
}
-
- queryString.append(" . \n");
+ if(added){
+ queryString.append(" . \n");
+ }
}
// for some endpoints we need to add an additional constraints used for
// ranking. If sub-queries are used this need to be in the select part
@@ -848,7 +853,7 @@ public final class SparqlQueryUtils {
textQuery.append(" OR ");
}
// TODO: maybe we should use a word tokenizer here
- String[] words = constraintText.split("\\s");
+ String[] words = constraintText.split("\\W+");
if (words.length > 1) {
// not perfect because words might contain empty string,
but
// it will eliminate most unnecessary brackets .
@@ -872,7 +877,9 @@ public final class SparqlQueryUtils {
}
textQuery.append('"');
- addGrammarEscapedValue(textQuery, word);
+ textQuery.append(word);
+ //escapes are no longer needed with the "\W" regex
tokenizer
+ //addGrammarEscapedValue(textQuery, word);
textQuery.append('"');
}
}
@@ -1200,7 +1207,7 @@ public final class SparqlQueryUtils {
// "text value","anothertest","some more values"),true));
// query.setConstraint("urn:field2a", new TextConstraint(":-]"));
// //tests escaping of REGEX
- query.setConstraint("urn:field3", new TextConstraint("language
text",PatternType.wildcard, true, "en"));
+ query.setConstraint("urn:field3", new
TextConstraint("\"quote",PatternType.none, true, "en", null));
//query.setConstraint("urn:field4", new TextConstraint("multi language
text", "en", "de", null));
// query.setConstraint("urn:field5", new
// TextConstraint("wildcar*",PatternType.wildcard,false,"en","de"));
@@ -1214,6 +1221,8 @@ public final class SparqlQueryUtils {
// query.setConstraint("urn:field11", new RangeConstraint(null,
(int)10, true));
// query.setConstraint("urn:field12", new RangeConstraint((int)5,
null, true));
//query.setConstraint("urn:field12", new RangeConstraint(new Date(),
null, true));
+ query.setConstraint("urn:similarity", new
SimilarityConstraint(Collections.singleton("This is a test"),
+ DataTypeEnum.Text));
// query.addSelectedField("urn:field2a");
// query.addSelectedField("urn:field3");
query.setLimit(5);
Modified:
stanbol/trunk/entityhub/query/sparql/src/test/java/org/apache/stanbol/entityhub/query/sparql/SparqlQueryUtilsTest.java
URL:
http://svn.apache.org/viewvc/stanbol/trunk/entityhub/query/sparql/src/test/java/org/apache/stanbol/entityhub/query/sparql/SparqlQueryUtilsTest.java?rev=1710948&r1=1710947&r2=1710948&view=diff
==============================================================================
---
stanbol/trunk/entityhub/query/sparql/src/test/java/org/apache/stanbol/entityhub/query/sparql/SparqlQueryUtilsTest.java
(original)
+++
stanbol/trunk/entityhub/query/sparql/src/test/java/org/apache/stanbol/entityhub/query/sparql/SparqlQueryUtilsTest.java
Wed Oct 28 07:18:35 2015
@@ -49,7 +49,8 @@ public class SparqlQueryUtilsTest {
SparqlQueryUtils.createFullTextQueryString(keywords));
keywords = Arrays.asList("'test' \"keyword\"");
- assertEquals("(\"\\'test\\'\" AND \"\\\"keyword\\\"\")",
+ //NOTE: changed implementation to remove none word chars
+ assertEquals("(\"test\" AND \"keyword\")",
SparqlQueryUtils.createFullTextQueryString(keywords));
keywords = Arrays.asList("1 Alpha ? Numeric Test .");