You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2018/05/04 08:40:42 UTC
[1/9] jena git commit: JENA-1532 | fix for date based text query
search
Repository: jena
Updated Branches:
refs/heads/master 0870e404b -> 88cd917f2
JENA-1532 | fix for date based text query search
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/c2a3bac1
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/c2a3bac1
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/c2a3bac1
Branch: refs/heads/master
Commit: c2a3bac147a786210b1ba4125a4be9edc66719c4
Parents: a56f771
Author: Anuj Kumar <ak...@isightpartners.com>
Authored: Mon Apr 23 10:42:13 2018 +0200
Committer: Anuj Kumar <ak...@isightpartners.com>
Committed: Mon Apr 23 10:42:13 2018 +0200
----------------------------------------------------------------------
.../main/java/examples/JenaESTextExample.java | 3 +-
.../apache/jena/query/text/es/TextIndexES.java | 13 +++++----
.../jena/query/text/es/it/TextIndexESIT.java | 30 ++++++++++++++++++++
3 files changed, 40 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/c2a3bac1/jena-text-es/src/main/java/examples/JenaESTextExample.java
----------------------------------------------------------------------
diff --git a/jena-text-es/src/main/java/examples/JenaESTextExample.java b/jena-text-es/src/main/java/examples/JenaESTextExample.java
index f48b291..1b40fe6 100644
--- a/jena-text-es/src/main/java/examples/JenaESTextExample.java
+++ b/jena-text-es/src/main/java/examples/JenaESTextExample.java
@@ -73,7 +73,8 @@ public class JenaESTextExample {
String qs = StrUtils.strjoinNL
( "SELECT * "
// , " { ?s text:query (rdfs:comment 'this' 'lang:en') ;"
- , " { ?s text:query ('this' 'lang:en*') ;"
+// , " { ?s text:query ('this' 'lang:en*') ;"
+ ,"{ ?s text:query ('2016-12-01T15:31:10-05:00') ;"
// , " { ?s text:query ('this' 'lang:en-GB') ;"
// , " { ?s text:query (rdfs:comment 'this' 'lang:en-GB') ;"
// , " { ?s text:query (rdfs:comment 'this' 'lang:*') ;"
http://git-wip-us.apache.org/repos/asf/jena/blob/c2a3bac1/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
----------------------------------------------------------------------
diff --git a/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java b/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
index fc2a8b5..6e5e91c 100644
--- a/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
+++ b/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
@@ -18,11 +18,6 @@
package org.apache.jena.query.text.es;
-import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
-
-import java.net.InetAddress;
-import java.util.*;
-
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.jena.graph.Node;
import org.apache.jena.graph.NodeFactory;
@@ -48,6 +43,11 @@ import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.net.InetAddress;
+import java.util.*;
+
+import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
+
/**
* Elastic Search Implementation of {@link TextIndex}
*
@@ -422,6 +422,9 @@ public class TextIndexES implements TextIndex {
}
private String parse(String fieldName, String qs, String lang) {
+ //Escape the ":" character if any in the query string
+ qs = qs.replaceAll("\\:", "\\\\:");
+
if(fieldName != null && !fieldName.isEmpty()) {
if(lang != null && !lang.equals("none")) {
if (!ASTERISK.equals(lang)) {
http://git-wip-us.apache.org/repos/asf/jena/blob/c2a3bac1/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
----------------------------------------------------------------------
diff --git a/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java b/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
index 9d0e38d..0ccb203 100644
--- a/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
+++ b/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
@@ -46,6 +46,36 @@ public class TextIndexESIT extends BaseESTest {
}
@Test
+ public void testAddDateEntity() {
+ String dateKey = "label";
+ String dateValue = "2016-12-01T15:31:10-05:00";
+ Assert.assertNotNull(classToTest);
+ Entity entityToAdd = entity("http://example/x5", dateKey, dateValue);
+ GetResponse response = addEntity(entityToAdd);
+ Assert.assertTrue(response.getSource().containsKey(dateKey));
+ Assert.assertEquals(dateValue, ((List<?>)response.getSource().get(dateKey)).get(0));
+ }
+
+ @Test
+ public void dateQuery() {
+ testAddDateEntity();
+ List<TextHit> result = classToTest.query(RDFS.label.asNode(), "2016-12-01T15:31:10-05:00", null, null, 10);
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.size());
+
+ //This will search for value "2016-12-01T15:31:10-05:00" across all the fields
+ result = classToTest.query(null, "2016-12-01T15:31:10-05:00", null, null, 10);
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.size());
+
+ //This will search for value "this" in the label_en field, if it exists. In this case it doesnt so we should get zero results
+ result = classToTest.query(RDFS.label.asNode(), "2016-12-01T15:31:10-05:00", null, "en", 10);
+ Assert.assertNotNull(result);
+ Assert.assertEquals(0, result.size());
+
+ }
+
+ @Test
public void testDeleteEntity() {
testAddEntity();
String labelKey = "label";
[7/9] jena git commit: JENA-1538: Merge commit 'refs/pull/411/head'
of https://github.com/apache/jena
Posted by an...@apache.org.
JENA-1538: Merge commit 'refs/pull/411/head' of https://github.com/apache/jena
This closes #411.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/18eb495c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/18eb495c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/18eb495c
Branch: refs/heads/master
Commit: 18eb495c788c77a623536787d8342440e4836344
Parents: 81fedb1 b901e14
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 4 08:52:26 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 4 08:52:26 2018 +0100
----------------------------------------------------------------------
apache-jena-osgi/jena-osgi/pom.xml | 7 +++++++
.../services/org.apache.jena.sys.JenaSubsystemLifecycle | 1 +
2 files changed, 8 insertions(+)
----------------------------------------------------------------------
[4/9] jena git commit: Include TDB2 in the jena-osgi module
Posted by an...@apache.org.
Include TDB2 in the jena-osgi module
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/b901e14e
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/b901e14e
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/b901e14e
Branch: refs/heads/master
Commit: b901e14e50f563cf8e0f2993ca2362cc3c07b58e
Parents: ad5b445
Author: Aaron Coburn <ac...@apache.org>
Authored: Sat Apr 28 16:43:51 2018 -0400
Committer: Aaron Coburn <ac...@apache.org>
Committed: Sat Apr 28 16:43:51 2018 -0400
----------------------------------------------------------------------
apache-jena-osgi/jena-osgi/pom.xml | 7 +++++++
.../services/org.apache.jena.sys.JenaSubsystemLifecycle | 1 +
2 files changed, 8 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/b901e14e/apache-jena-osgi/jena-osgi/pom.xml
----------------------------------------------------------------------
diff --git a/apache-jena-osgi/jena-osgi/pom.xml b/apache-jena-osgi/jena-osgi/pom.xml
index aa434ae..91f04e5 100644
--- a/apache-jena-osgi/jena-osgi/pom.xml
+++ b/apache-jena-osgi/jena-osgi/pom.xml
@@ -143,6 +143,13 @@
<version>3.8.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-tdb2</artifactId>
+ <version>3.8.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
<!--
NOTE: Also update
src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle
http://git-wip-us.apache.org/repos/asf/jena/blob/b901e14e/apache-jena-osgi/jena-osgi/src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle
----------------------------------------------------------------------
diff --git a/apache-jena-osgi/jena-osgi/src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle b/apache-jena-osgi/jena-osgi/src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle
index 52ac905..45bf115 100644
--- a/apache-jena-osgi/jena-osgi/src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle
+++ b/apache-jena-osgi/jena-osgi/src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle
@@ -2,3 +2,4 @@ org.apache.jena.sys.InitJenaCore
org.apache.jena.riot.system.InitRIOT
org.apache.jena.sparql.system.InitARQ
org.apache.jena.tdb.sys.InitTDB
+org.apache.jena.tdb2.sys.InitTDB2
[5/9] jena git commit: JENA-1539: Txn nesting compatibility
Posted by an...@apache.org.
JENA-1539: Txn nesting compatibility
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/dbce176a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/dbce176a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/dbce176a
Branch: refs/heads/master
Commit: dbce176ad7f9a422198c24f8b7b79cb3c1fe5d9f
Parents: 52377b8
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Apr 29 17:22:31 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Apr 29 17:22:31 2018 +0100
----------------------------------------------------------------------
.../main/java/org/apache/jena/system/Txn.java | 45 ++++++++++-----
.../java/org/apache/jena/system/TestTxn.java | 61 ++++++++++++++++----
.../apache/jena/system/TestTxnLifecycle.java | 3 +-
3 files changed, 83 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/dbce176a/jena-arq/src/main/java/org/apache/jena/system/Txn.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/system/Txn.java b/jena-arq/src/main/java/org/apache/jena/system/Txn.java
index dc7158b..4ab2c82 100644
--- a/jena-arq/src/main/java/org/apache/jena/system/Txn.java
+++ b/jena-arq/src/main/java/org/apache/jena/system/Txn.java
@@ -18,6 +18,7 @@
package org.apache.jena.system;
+import java.util.Objects;
import java.util.function.Supplier ;
import org.apache.jena.query.TxnType;
@@ -71,12 +72,9 @@ public class Txn {
/** Execute application code in a transaction with the given {@link TxnType trasnaction type}. */
public static <T extends Transactional> void exec(T txn, TxnType txnType, Runnable r) {
boolean b = txn.isInTransaction() ;
- if ( b ) {
- TxnType txnTypeOuter = txn.transactionType();
- if ( txnTypeOuter != txnType )
- throw new JenaTransactionException("Already in a transaction of a different type: "
- +"outer="+txnTypeOuter+" : inner="+txnType);
- } else
+ if ( b )
+ checkCompatible(txn, txnType);
+ else
txn.begin(txnType) ;
try { r.run() ; }
catch (Throwable th) {
@@ -94,14 +92,10 @@ public class Txn {
/** Execute and return a value in a transaction with the given {@link TxnType trasnaction type}. */
public static <T extends Transactional, X> X calc(T txn, TxnType txnType, Supplier<X> r) {
boolean b = txn.isInTransaction() ;
- if ( b ) {
- TxnType txnTypeOuter = txn.transactionType();
- if ( txnTypeOuter != txnType )
- throw new JenaTransactionException("Already in a transaction of a different type: "
- +"outer="+txnTypeOuter+" : inner="+txnType);
- } else
+ if ( b )
+ checkCompatible(txn, txnType);
+ else
txn.begin(txnType) ;
-
X x;
try { x = r.get() ; }
catch (Throwable th) {
@@ -138,6 +132,31 @@ public class Txn {
return calc(txn, TxnType.WRITE, r);
}
+ /** Check the requested transaction {@code innerTxnType} is compatible with the transactional.
+ * @param txn
+ * @param innerTxnType
+ */
+ private static void checkCompatible(Transactional txn, TxnType innerTxnType) {
+ TxnType outerTxnType = txn.transactionType();
+ if ( outerTxnType == null )
+ // Not in an outer transaction.
+ return;
+ // innerTxnType must be "less than or equal to the outer.
+ // Inner is READ works with any outer.
+ // Outer is WRITE works with any inner.
+ // Must match:
+ // Outer is READ, then inner must be READ.
+ // Promotion must be the same.
+ if ( TxnType.READ.equals(innerTxnType) )
+ return;
+ if ( TxnType.WRITE.equals(outerTxnType) )
+ return;
+ if ( Objects.equals(innerTxnType, outerTxnType) )
+ return;
+ throw new JenaTransactionException("Already in a transaction of an incompatable type: "
+ +"outer="+outerTxnType+" : inner="+innerTxnType);
+ }
+
// Attempt some kind of cleanup.
private static <T extends Transactional> void onThrowable(Throwable th, T txn) {
try {
http://git-wip-us.apache.org/repos/asf/jena/blob/dbce176a/jena-arq/src/test/java/org/apache/jena/system/TestTxn.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/system/TestTxn.java b/jena-arq/src/test/java/org/apache/jena/system/TestTxn.java
index 668efb5..901b9c6 100644
--- a/jena-arq/src/test/java/org/apache/jena/system/TestTxn.java
+++ b/jena-arq/src/test/java/org/apache/jena/system/TestTxn.java
@@ -242,23 +242,36 @@ public class TestTxn {
});
}
- @Test(expected=JenaTransactionException.class)
+ @Test
public void txn_nested_02() {
- Txn.exec(counter, TxnType.READ, ()->{
- Txn.exec(counter, TxnType.WRITE, ()->{});
+ Txn.exec(counter, TxnType.WRITE, ()->{
+ Txn.exec(counter, TxnType.READ, ()->{});
});
}
- @Test(expected=JenaTransactionException.class)
+ @Test
public void txn_nested_03() {
- Txn.exec(counter, TxnType.WRITE, ()->{
- // Must the same type to nest Txn.
+ Txn.exec(counter, TxnType.READ_PROMOTE, ()->{
Txn.exec(counter, TxnType.READ, ()->{});
});
}
@Test
public void txn_nested_04() {
+ Txn.exec(counter, TxnType.READ_COMMITTED_PROMOTE, ()->{
+ Txn.exec(counter, TxnType.READ, ()->{});
+ });
+ }
+
+ @Test(expected=JenaTransactionException.class)
+ public void txn_nested_05() {
+ Txn.exec(counter, TxnType.READ, ()->{
+ Txn.exec(counter, TxnType.WRITE, ()->{});
+ });
+ }
+
+ @Test
+ public void txn_nested_06() {
Txn.exec(counter, TxnType.READ_PROMOTE, ()->{
boolean b = counter.promote();
assertTrue(b);
@@ -268,23 +281,49 @@ public class TestTxn {
}
@Test
- public void txn_nested_05() {
- Txn.exec(counter, TxnType.READ_PROMOTE, ()->{
+ public void txn_nested_07() {
+ Txn.exec(counter, TxnType.READ_COMMITTED_PROMOTE, ()->{
+ boolean b = counter.promote();
+ assertTrue(b);
+ // Must the same type to nest Txn.
+ Txn.exec(counter, TxnType.READ_COMMITTED_PROMOTE, ()->{});
+ });
+ }
+
+ @Test
+ public void txn_nested_08() {
+ Txn.exec(counter, TxnType.READ_COMMITTED_PROMOTE, ()->{
boolean b = counter.promote();
assertTrue(b);
assertEquals(ReadWrite.WRITE, counter.transactionMode());
// Must the same type to nest Txn.
- Txn.exec(counter, TxnType.READ_PROMOTE, ()->{});
+ Txn.exec(counter, TxnType.READ_COMMITTED_PROMOTE, ()->{});
});
}
- @Test(expected=JenaTransactionException.class)
- public void txn_nested_06() {
+ @Test
+ public void txn_nested_09() {
Txn.exec(counter, TxnType.READ_PROMOTE, ()->{
boolean b = counter.promote();
assertTrue(b);
assertEquals(ReadWrite.WRITE, counter.transactionMode());
// Must the same type to nest Txn.
+ Txn.exec(counter, TxnType.READ_PROMOTE, ()->{});
+ });
+ }
+
+ @Test(expected=JenaTransactionException.class)
+ public void txn_nested_10() {
+ Txn.exec(counter, TxnType.READ_PROMOTE, ()->{
+ // Must the same type to nest Txn.
+ Txn.exec(counter, TxnType.WRITE, ()->{});
+ });
+ }
+
+ @Test(expected=JenaTransactionException.class)
+ public void txn_nested_11() {
+ Txn.exec(counter, TxnType.READ_COMMITTED_PROMOTE, ()->{
+ // Must the same type to nest Txn.
Txn.exec(counter, TxnType.WRITE, ()->{});
});
}
http://git-wip-us.apache.org/repos/asf/jena/blob/dbce176a/jena-arq/src/test/java/org/apache/jena/system/TestTxnLifecycle.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/system/TestTxnLifecycle.java b/jena-arq/src/test/java/org/apache/jena/system/TestTxnLifecycle.java
index 76ae02e..bf65468 100644
--- a/jena-arq/src/test/java/org/apache/jena/system/TestTxnLifecycle.java
+++ b/jena-arq/src/test/java/org/apache/jena/system/TestTxnLifecycle.java
@@ -72,10 +72,9 @@ public class TestTxnLifecycle {
assertEquals(56,x) ;
}
- @Test(expected=JenaTransactionException.class)
+ @Test
public void txn_lifecycle_05b() {
int x = Txn.calculateWrite(trans, ()-> {
- // Does not continue outer transaction.
return Txn.calculateRead(trans, ()->56) ;
});
assertEquals(56,x) ;
[2/9] jena git commit: JENA-1532 | fix for date based text query
search
Posted by an...@apache.org.
JENA-1532 | fix for date based text query search
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/7f4915ee
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/7f4915ee
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/7f4915ee
Branch: refs/heads/master
Commit: 7f4915ee6c94b1044155110fe4612147a9e8de91
Parents: c2a3bac
Author: Anuj Kumar <ak...@isightpartners.com>
Authored: Mon Apr 23 20:23:38 2018 +0200
Committer: Anuj Kumar <ak...@isightpartners.com>
Committed: Mon Apr 23 20:23:38 2018 +0200
----------------------------------------------------------------------
.../apache/jena/query/text/es/TextIndexES.java | 22 +-
.../jena/query/text/es/it/TextIndexESIT.java | 244 ++++++++++++++++---
2 files changed, 233 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/7f4915ee/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
----------------------------------------------------------------------
diff --git a/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java b/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
index 6e5e91c..6a8a649 100644
--- a/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
+++ b/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
@@ -422,8 +422,26 @@ public class TextIndexES implements TextIndex {
}
private String parse(String fieldName, String qs, String lang) {
- //Escape the ":" character if any in the query string
- qs = qs.replaceAll("\\:", "\\\\:");
+ //Escape special characters if any in the query string
+ qs = qs.replaceAll("\\:", "\\\\:")
+ .replaceAll("\\+", "\\\\+")
+ .replaceAll("\\-", "\\\\-")
+ .replaceAll("\\=", "\\\\=")
+ .replaceAll("\\&", "\\\\&")
+ .replaceAll("\\|", "\\\\|")
+ .replaceAll("\\>", "\\\\>")
+ .replaceAll("\\<", "\\\\<")
+ .replaceAll("\\!", "\\\\!")
+ .replaceAll("\\(", "\\\\(")
+ .replaceAll("\\)", "\\\\)")
+ .replaceAll("\\{", "\\\\{")
+ .replaceAll("\\}", "\\\\}")
+ .replaceAll("\\]", "\\\\]")
+ .replaceAll("\\[", "\\\\[")
+ .replaceAll("\\^", "\\\\^")
+ .replaceAll("\\~", "\\\\~")
+ .replaceAll("\\?", "\\\\?");
+
if(fieldName != null && !fieldName.isEmpty()) {
if(lang != null && !lang.equals("none")) {
http://git-wip-us.apache.org/repos/asf/jena/blob/7f4915ee/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
----------------------------------------------------------------------
diff --git a/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java b/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
index 0ccb203..1e03e39 100644
--- a/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
+++ b/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
@@ -36,59 +36,241 @@ public class TextIndexESIT extends BaseESTest {
@Test
public void testAddEntity() {
- String labelKey = "label";
- String labelValue = "this is a sample Label";
- Assert.assertNotNull(classToTest);
- Entity entityToAdd = entity("http://example/x3", labelKey, labelValue);
- GetResponse response = addEntity(entityToAdd);
- Assert.assertTrue(response.getSource().containsKey(labelKey));
- Assert.assertEquals(labelValue, ((List<?>)response.getSource().get(labelKey)).get(0));
+
+ addSpecialCharacterString("label", "this is a sample Label");
+
}
@Test
public void testAddDateEntity() {
- String dateKey = "label";
- String dateValue = "2016-12-01T15:31:10-05:00";
- Assert.assertNotNull(classToTest);
- Entity entityToAdd = entity("http://example/x5", dateKey, dateValue);
- GetResponse response = addEntity(entityToAdd);
- Assert.assertTrue(response.getSource().containsKey(dateKey));
- Assert.assertEquals(dateValue, ((List<?>)response.getSource().get(dateKey)).get(0));
+
+ addSpecialCharacterString("label", "2016-12-01T15:31:10-05:00");
+
}
@Test
- public void dateQuery() {
- testAddDateEntity();
- List<TextHit> result = classToTest.query(RDFS.label.asNode(), "2016-12-01T15:31:10-05:00", null, null, 10);
- Assert.assertNotNull(result);
- Assert.assertEquals(1, result.size());
+ public void testPlusInSearchQuery() {
+ //Test + character string
+ addSpecialCharacterString("label", "We have +plus in the string");
+ String queryString = "+plus";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
- //This will search for value "2016-12-01T15:31:10-05:00" across all the fields
- result = classToTest.query(null, "2016-12-01T15:31:10-05:00", null, null, 10);
- Assert.assertNotNull(result);
- Assert.assertEquals(1, result.size());
+ @Test
+ public void testMinusInSearchQuery() {
+ //Test - character string
+ addSpecialCharacterString("label", "We have -minus in the string");
+ String queryString = "-minus";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
- //This will search for value "this" in the label_en field, if it exists. In this case it doesnt so we should get zero results
- result = classToTest.query(RDFS.label.asNode(), "2016-12-01T15:31:10-05:00", null, "en", 10);
- Assert.assertNotNull(result);
- Assert.assertEquals(0, result.size());
+ @Test
+ public void testEqualInSearchQuery() {
+ //Test = character string
+ addSpecialCharacterString("label", "We have =equal in the string");
+ String queryString = "=equal";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+
+ @Test
+ public void testAmpersandInSearchQuery() {
+ //Test && character string
+ addSpecialCharacterString("label", "We have &&ersand in the string");
+ String queryString = "&&ersand";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+ @Test
+ public void testPipeInSearchQuery() {
+// Test || character string
+ addSpecialCharacterString("label", "We have ||pipe in the string");
+ String queryString = "||pipe";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
}
@Test
+ public void testGreaterInSearchQuery() {
+// //Test > character string
+ addSpecialCharacterString("label", "We have >greater in the string");
+ String queryString = ">greater";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testLessInSearchQuery() {
+ // Test < character string
+ addSpecialCharacterString("label", "We have <less in the string");
+ String queryString = "<less";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+
+ @Test
+ public void testExclamationInSearchQuery() {
+ //Test ! character string
+ addSpecialCharacterString("label", "We have !notequal in the string");
+ String queryString = "!notequal";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testOpenRoundInSearchQuery() {
+ //Test ( character string
+ addSpecialCharacterString("label", "We have (bracket in the string");
+ String queryString = "(bracket";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testClosedRoundInSearchQuery() {
+ //Test ) character string
+ addSpecialCharacterString("label", "We have )bracket in the string");
+ String queryString = ")bracket";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testOpenCurlyInSearchQuery() {
+ //Test {bracket character string
+ addSpecialCharacterString("label", "We have {bracket in the string");
+ String queryString = "{bracket";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testClosedCurlyInSearchQuery() {
+ //Test }bracket character string
+ addSpecialCharacterString("label", "We have }bracket in the string");
+ String queryString = "}bracket";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testOpenSquareInSearchQuery() {
+ //Test [bracket character string
+ addSpecialCharacterString("label", "We have [bracket in the string");
+ String queryString = "[bracket";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testClosedSquareInSearchQuery() {
+ //Test ]bracket character string
+ addSpecialCharacterString("label", "We have ]bracket in the string");
+ String queryString = "]bracket";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testCaretInSearchQuery() {
+ //Test ^bracket character string
+ addSpecialCharacterString("label", "We have ^bracket in the string");
+ String queryString = "^bracket";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testTildaInSearchQuery() {
+ //Test ~bracket character string
+ addSpecialCharacterString("label", "We have ~tilda in the string");
+ String queryString = "~tilda";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testQuestionInSearchQuery() {
+ //Test ?question character string
+ addSpecialCharacterString("label", "We have ?question in the string");
+ String queryString = "?question";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+ }
+
+ @Test
+ public void testDateQuery() {
+ addSpecialCharacterString("label", "2016-12-01T15:31:10-05:00");
+ String queryString = "2016-12-01T15:31:10-05:00";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+
+ }
+
+ @Test
+ public void testDoubleQouteQuery() {
+ addSpecialCharacterString("label", "This is a \"double\" quote");
+ String queryString = "\"double\"";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 0);
+
+ }
+
+
+ private void addSpecialCharacterString(String key, String value) {
+
+ Assert.assertNotNull(classToTest);
+ Entity entityToAdd = entity("http://example/x5", key, value);
+ GetResponse response = addEntity(entityToAdd);
+ Assert.assertTrue(response.getSource().containsKey(key));
+ Assert.assertEquals(value, ((List<?>)response.getSource().get(key)).get(0));
+
+ }
+ private void querySpecialCharacterQuery(Node label, String queryString, String lang, int limit, int expectedResults) {
+ List<TextHit> result = classToTest.query(label, queryString, null, lang, limit);
+ Assert.assertNotNull(result);
+ Assert.assertEquals(expectedResults, result.size());
+ }
+
+
+ @Test
public void testDeleteEntity() {
testAddEntity();
String labelKey = "label";
String labelValue = "this is a sample Label";
//Now Delete the entity
- classToTest.deleteEntity(entity("http://example/x3", labelKey, labelValue));
+ classToTest.deleteEntity(entity("http://example/x5", labelKey, labelValue));
//Try to find it
- GetResponse response = transportClient.prepareGet(INDEX_NAME, DOC_TYPE, "http://example/x3").get();
+ GetResponse response = transportClient.prepareGet(INDEX_NAME, DOC_TYPE, "http://example/x5").get();
//It Should Exist
Assert.assertTrue(response.isExists());
//But the field value should now be empty
- Assert.assertEquals("http://example/x3", response.getId());
+ Assert.assertEquals("http://example/x5", response.getId());
Assert.assertTrue(response.getSource().containsKey(labelKey));
Assert.assertEquals(0, ((List<?>)response.getSource().get(labelKey)).size());
}
@@ -136,7 +318,7 @@ public class TextIndexESIT extends BaseESTest {
public void testGet() {
testAddEntity();
//Now Get the same entity
- Map<String, Node> response = classToTest.get("http://example/x3");
+ Map<String, Node> response = classToTest.get("http://example/x5");
Assert.assertNotNull(response);
Assert.assertEquals(2, response.size());
}
[9/9] jena git commit: This closes #390
Posted by an...@apache.org.
This closes #390
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/88cd917f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/88cd917f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/88cd917f
Branch: refs/heads/master
Commit: 88cd917f2615f4d70c22ae42ef0b11d89f0d0c58
Parents: ec72211
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 4 09:09:24 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 4 09:09:24 2018 +0100
----------------------------------------------------------------------
----------------------------------------------------------------------
[6/9] jena git commit: JENA-1532: Merge commit 'refs/pull/406/head'
of https://github.com/apache/jena
Posted by an...@apache.org.
JENA-1532: Merge commit 'refs/pull/406/head' of https://github.com/apache/jena
This closes #406.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/81fedb16
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/81fedb16
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/81fedb16
Branch: refs/heads/master
Commit: 81fedb16a4869783ff3dc3eb40f65ebd0c5fe13e
Parents: 0870e40 77058de
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 4 08:51:21 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 4 08:51:21 2018 +0100
----------------------------------------------------------------------
.../main/java/examples/JenaESTextExample.java | 3 +-
.../apache/jena/query/text/es/TextIndexES.java | 14 +-
.../jena/query/text/es/it/TextIndexESIT.java | 239 ++++++++++++++++++-
3 files changed, 241 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
[3/9] jena git commit: JENA-1532 | fix for date based text query
search
Posted by an...@apache.org.
JENA-1532 | fix for date based text query search
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/77058de8
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/77058de8
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/77058de8
Branch: refs/heads/master
Commit: 77058de86a6a85f6bdffc5b0b733572cac1d84b1
Parents: 7f4915e
Author: Anuj Kumar <ak...@isightpartners.com>
Authored: Tue Apr 24 19:38:37 2018 +0200
Committer: Anuj Kumar <ak...@isightpartners.com>
Committed: Tue Apr 24 19:38:37 2018 +0200
----------------------------------------------------------------------
.../apache/jena/query/text/es/TextIndexES.java | 21 ++------------------
.../jena/query/text/es/it/TextIndexESIT.java | 9 +++++++++
2 files changed, 11 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/77058de8/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
----------------------------------------------------------------------
diff --git a/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java b/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
index 6a8a649..62c66f3 100644
--- a/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
+++ b/jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java
@@ -23,6 +23,7 @@ import org.apache.jena.graph.Node;
import org.apache.jena.graph.NodeFactory;
import org.apache.jena.query.text.*;
import org.apache.jena.sparql.util.NodeFactoryExtra;
+import org.apache.lucene.queryparser.classic.QueryParserBase;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.action.get.GetResponse;
@@ -423,25 +424,7 @@ public class TextIndexES implements TextIndex {
private String parse(String fieldName, String qs, String lang) {
//Escape special characters if any in the query string
- qs = qs.replaceAll("\\:", "\\\\:")
- .replaceAll("\\+", "\\\\+")
- .replaceAll("\\-", "\\\\-")
- .replaceAll("\\=", "\\\\=")
- .replaceAll("\\&", "\\\\&")
- .replaceAll("\\|", "\\\\|")
- .replaceAll("\\>", "\\\\>")
- .replaceAll("\\<", "\\\\<")
- .replaceAll("\\!", "\\\\!")
- .replaceAll("\\(", "\\\\(")
- .replaceAll("\\)", "\\\\)")
- .replaceAll("\\{", "\\\\{")
- .replaceAll("\\}", "\\\\}")
- .replaceAll("\\]", "\\\\]")
- .replaceAll("\\[", "\\\\[")
- .replaceAll("\\^", "\\\\^")
- .replaceAll("\\~", "\\\\~")
- .replaceAll("\\?", "\\\\?");
-
+ qs = QueryParserBase.escape(qs);
if(fieldName != null && !fieldName.isEmpty()) {
if(lang != null && !lang.equals("none")) {
http://git-wip-us.apache.org/repos/asf/jena/blob/77058de8/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
----------------------------------------------------------------------
diff --git a/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java b/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
index 1e03e39..022bef5 100644
--- a/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
+++ b/jena-text-es/src/test/java/org/apache/jena/query/text/es/it/TextIndexESIT.java
@@ -240,6 +240,15 @@ public class TextIndexESIT extends BaseESTest {
}
+ @Test
+ public void testBackslash() {
+ addSpecialCharacterString("label", "C:\\ title.csv save this");
+ String queryString = "C:\\ title.csv";
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, null, 10, 1);
+ querySpecialCharacterQuery(null, queryString, null, 10, 1);
+ querySpecialCharacterQuery(RDFS.label.asNode(), queryString, "en", 10, 1);
+ }
+
private void addSpecialCharacterString(String key, String value) {
[8/9] jena git commit: JENA-1539: Merge commit 'refs/pull/412/head'
of https://github.com/apache/jena
Posted by an...@apache.org.
JENA-1539: Merge commit 'refs/pull/412/head' of https://github.com/apache/jena
This closes #412.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/ec722117
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/ec722117
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/ec722117
Branch: refs/heads/master
Commit: ec7221176e131b34bfc1ac8cdfc5251b3daaddbe
Parents: 18eb495 dbce176
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 4 08:53:53 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 4 08:53:53 2018 +0100
----------------------------------------------------------------------
.../main/java/org/apache/jena/system/Txn.java | 45 ++++++++++-----
.../java/org/apache/jena/system/TestTxn.java | 61 ++++++++++++++++----
.../apache/jena/system/TestTxnLifecycle.java | 3 +-
3 files changed, 83 insertions(+), 26 deletions(-)
----------------------------------------------------------------------