Merge "Add support for "corpus" in deserialization."
diff --git a/Changes b/Changes
index 04a6289..dc768c4 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
-0.64.3 2025-07-25
+0.64.3 2025-08-19
- [feature] Add tar and zip archive input support to Krill-Indexer (kupietz)
- [security] Update dependencies (kupietz)
+ - [enhancement] Add support for "corpus" in deserialization, "collection"
+ is marked as legacy (margaretha).
0.64.2 2025-07-02
- [bugfix] Restore rewrites in Meta. (diewald)
diff --git a/src/main/java/de/ids_mannheim/korap/Krill.java b/src/main/java/de/ids_mannheim/korap/Krill.java
index 7b10c8a..9b520e0 100644
--- a/src/main/java/de/ids_mannheim/korap/Krill.java
+++ b/src/main/java/de/ids_mannheim/korap/Krill.java
@@ -211,7 +211,17 @@
// Parse "collection" or "collections" attribute
try {
- if (json.has("collection")) {
+ if (json.has("corpus")) {
+ final JsonNode collNode = json.get("corpus");
+
+ // TODO: Temporary
+ if (collNode.fieldNames().hasNext()) {
+ this.setCollection(
+ new KrillCollection().fromKoral(collNode));
+ };
+ }
+ // EM: legacy
+ else if (json.has("collection")) {
final JsonNode collNode = json.get("collection");
// TODO: Temporary
diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index dd4cb75..c5e3d27 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -104,6 +104,10 @@
if (json.has("errors") && json.get("errors").size() > 0) {
this.addError(StatusCodes.INVALID_QUERY, "Json has errors.");
}
+ else if (json.has("corpus")) {
+ this.fromKoral(json.get("corpus"));
+ }
+ // EM: legacy
else if (json.has("collection")) {
this.fromKoral(json.get("collection"));
}
@@ -113,7 +117,7 @@
}
else {
this.addError(StatusCodes.MISSING_COLLECTION,
- "Collection is not found");
+ "VC is not found");
this.fromBuilder(this.build().nothing());
}
}
@@ -216,7 +220,7 @@
}
else{
this.addError(StatusCodes.MISSING_COLLECTION,
- "Collection is not found " + fileName);
+ "VC is not found " + fileName);
return this;
};
@@ -251,6 +255,10 @@
private CollectionBuilder.Interface _fromKoral (JsonNode json)
throws QueryException {
+ if (json.has("corpus")) {
+ return this._fromKoral(json.at("/corpus"));
+ };
+
if (json.has("collection")) {
return this._fromKoral(json.at("/collection"));
};
diff --git a/src/main/java/de/ids_mannheim/korap/response/Response.java b/src/main/java/de/ids_mannheim/korap/response/Response.java
index 46c51c1..eaf4d7f 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Response.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Response.java
@@ -557,8 +557,11 @@
if (this.collection != null) {
// && this.collection.getFilters().toArray().length > 0) {
JsonNode collNode = this.collection.toJsonNode();
- if (collNode != null)
+ if (collNode != null) {
+ json.set("corpus", collNode);
+ // EM: legacy
json.set("collection", collNode);
+ };
};
return (JsonNode) json;
diff --git a/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java b/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java
index 6e6f7c2..828cb40 100644
--- a/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java
+++ b/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java
@@ -30,7 +30,7 @@
VirtualCorpusCache.store(vcId, ki);
});
assertEquals("de.ids_mannheim.korap.util.QueryException: "
- + "Collection is not found queries/collections/named-vcs/snx.jsonld",
+ + "VC is not found queries/collections/named-vcs/snx.jsonld",
ex.getMessage());
}
@@ -46,7 +46,7 @@
Message m = result.getError(0);
assertEquals(StatusCodes.MISSING_COLLECTION, m.getCode());
assertEquals(
- "Collection is not found queries/collections/named-vcs/unknown-vc.jsonld",
+ "VC is not found queries/collections/named-vcs/unknown-vc.jsonld",
m.getMessage());
assertEquals(0, result.getTotalResults());
}
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
index 066dc43..c38a10e 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
@@ -677,7 +677,7 @@
Result result = krill.apply(ki);
assertEquals(StatusCodes.MISSING_COLLECTION, result.getError(0).getCode());
- assertTrue(result.getError(0).getMessage().startsWith("Collection is not found"));
+ assertTrue(result.getError(0).getMessage().startsWith("VC is not found"));
};
@Test
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
index 39c98e8..99ae8b8 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
@@ -32,6 +32,12 @@
assertEquals(kc.toString(), "pubDate:[20000101 TO 20000101]");
};
+ @Test
+ public void corpus1 () {
+ String metaQuery = _getJSONString("corpus_1.jsonld");
+ KrillCollection kc = new KrillCollection(metaQuery);
+ assertEquals(kc.toString(), "pubDate:[20000101 TO 20000101]");
+ };
@Test
public void collection2 () {
diff --git a/src/test/resources/queries/collections/corpus_1.jsonld b/src/test/resources/queries/collections/corpus_1.jsonld
new file mode 100644
index 0000000..ad8e433
--- /dev/null
+++ b/src/test/resources/queries/collections/corpus_1.jsonld
@@ -0,0 +1,13 @@
+{
+ "@context" : "http://ids-mannheim.de/ns/KorAP/json-ld/v0.2/context.jsonld",
+ "errors" : [ ],
+ "warnings" : [ ],
+ "announcements" : [ ],
+ "corpus" : {
+ "@type" : "koral:doc",
+ "key" : "pubDate",
+ "type" : "type:date",
+ "value" : "2000-01-01",
+ "match" : "match:eq"
+ }
+}
\ No newline at end of file