From 3a4df8bbb1abd8ec478dc42a2438e4355e2895ff Mon Sep 17 00:00:00 2001 From: Tpt Date: Tue, 16 May 2017 19:14:27 +0200 Subject: [PATCH] Adds geo-shape datatype support --- .../datamodel/interfaces/DatatypeIdValue.java | 4 ++ .../json/jackson/JacksonDatatypeId.java | 7 +++ .../json/jackson/JacksonObjectFactory.java | 52 +++---------------- .../json/jackson/TestDatatypeId.java | 11 +++- 4 files changed, 28 insertions(+), 46 deletions(-) diff --git a/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/interfaces/DatatypeIdValue.java b/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/interfaces/DatatypeIdValue.java index 5f326ebfd..aff1e5d7d 100644 --- a/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/interfaces/DatatypeIdValue.java +++ b/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/interfaces/DatatypeIdValue.java @@ -73,5 +73,9 @@ public interface DatatypeIdValue extends IriIdentifiedValue { * IRI of the math datatype in Wikibase. */ String DT_MATH = "http://wikiba.se/ontology#Math"; + /** + * IRI of the geo shape datatype in Wikibase. + */ + String DT_GEO_SHAPE = "http://wikiba.se/ontology#GeoShape"; } diff --git a/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/json/jackson/JacksonDatatypeId.java b/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/json/jackson/JacksonDatatypeId.java index 5b58803e1..b6aac0843 100644 --- a/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/json/jackson/JacksonDatatypeId.java +++ b/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/json/jackson/JacksonDatatypeId.java @@ -90,6 +90,11 @@ public class JacksonDatatypeId implements DatatypeIdValue { * {@link DatatypeIdValue#DT_MATH} in JSON. */ public static final String JSON_DT_MATH = "math"; + /** + * String used to refer to the property datatype + * {@link DatatypeIdValue#DT_GEO_SHAPE} in JSON. + */ + public static final String JSON_DT_GEO_SHAPE = "geo-shape"; /** * Datatype IRI as used in Wikidata Toolkit. @@ -129,6 +134,8 @@ public static String getDatatypeIriFromJsonDatatype(String jsonDatatype) { return DT_EXTERNAL_ID; case JSON_DT_MATH: return DT_MATH; + case JSON_DT_GEO_SHAPE: + return DT_GEO_SHAPE; default: throw new IllegalArgumentException("Unknown JSON datatype \"" + jsonDatatype + "\""); diff --git a/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/json/jackson/JacksonObjectFactory.java b/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/json/jackson/JacksonObjectFactory.java index 89106478e..bc66a7efe 100644 --- a/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/json/jackson/JacksonObjectFactory.java +++ b/wdtk-datamodel/src/main/java/org/wikidata/wdtk/datamodel/json/jackson/JacksonObjectFactory.java @@ -20,52 +20,13 @@ * #L% */ -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import org.wikidata.wdtk.datamodel.helpers.Datamodel; import org.wikidata.wdtk.datamodel.helpers.DatamodelConverter; -import org.wikidata.wdtk.datamodel.interfaces.Claim; -import org.wikidata.wdtk.datamodel.interfaces.DataObjectFactory; -import org.wikidata.wdtk.datamodel.interfaces.DatatypeIdValue; -import org.wikidata.wdtk.datamodel.interfaces.EntityIdValue; -import org.wikidata.wdtk.datamodel.interfaces.GlobeCoordinatesValue; -import org.wikidata.wdtk.datamodel.interfaces.ItemDocument; -import org.wikidata.wdtk.datamodel.interfaces.ItemIdValue; -import org.wikidata.wdtk.datamodel.interfaces.MonolingualTextValue; -import org.wikidata.wdtk.datamodel.interfaces.NoValueSnak; -import org.wikidata.wdtk.datamodel.interfaces.PropertyDocument; -import org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue; -import org.wikidata.wdtk.datamodel.interfaces.QuantityValue; -import org.wikidata.wdtk.datamodel.interfaces.Reference; -import org.wikidata.wdtk.datamodel.interfaces.SiteLink; -import org.wikidata.wdtk.datamodel.interfaces.Snak; -import org.wikidata.wdtk.datamodel.interfaces.SnakGroup; -import org.wikidata.wdtk.datamodel.interfaces.SomeValueSnak; -import org.wikidata.wdtk.datamodel.interfaces.Statement; -import org.wikidata.wdtk.datamodel.interfaces.StatementGroup; -import org.wikidata.wdtk.datamodel.interfaces.StatementRank; -import org.wikidata.wdtk.datamodel.interfaces.StringValue; -import org.wikidata.wdtk.datamodel.interfaces.TimeValue; -import org.wikidata.wdtk.datamodel.interfaces.Value; -import org.wikidata.wdtk.datamodel.interfaces.ValueSnak; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonInnerEntityId; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonInnerGlobeCoordinates; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonInnerMonolingualText; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonInnerQuantity; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonInnerTime; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonValue; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonValueGlobeCoordinates; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonValueItemId; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonValueMonolingualText; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonValuePropertyId; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonValueQuantity; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonValueString; -import org.wikidata.wdtk.datamodel.json.jackson.datavalues.JacksonValueTime; +import org.wikidata.wdtk.datamodel.interfaces.*; +import org.wikidata.wdtk.datamodel.json.jackson.datavalues.*; + +import java.math.BigDecimal; +import java.util.*; /** * Factory implementation to create Jackson versions of the datamodel objects, @@ -393,6 +354,9 @@ public PropertyDocument getPropertyDocument(PropertyIdValue propertyId, case DatatypeIdValue.DT_MATH: result.setJsonDatatype(JacksonDatatypeId.JSON_DT_MATH); break; + case DatatypeIdValue.DT_GEO_SHAPE: + result.setJsonDatatype(JacksonDatatypeId.JSON_DT_GEO_SHAPE); + break; default: throw new IllegalArgumentException("Unknown datatype: " + datatypeId.getIri()); diff --git a/wdtk-datamodel/src/test/java/org/wikidata/wdtk/datamodel/json/jackson/TestDatatypeId.java b/wdtk-datamodel/src/test/java/org/wikidata/wdtk/datamodel/json/jackson/TestDatatypeId.java index 02ad014a5..3e840db67 100644 --- a/wdtk-datamodel/src/test/java/org/wikidata/wdtk/datamodel/json/jackson/TestDatatypeId.java +++ b/wdtk-datamodel/src/test/java/org/wikidata/wdtk/datamodel/json/jackson/TestDatatypeId.java @@ -20,11 +20,11 @@ * #L% */ -import static org.junit.Assert.assertEquals; - import org.junit.Test; import org.wikidata.wdtk.datamodel.interfaces.DatatypeIdValue; +import static org.junit.Assert.assertEquals; + public class TestDatatypeId extends JsonTestData { @Test @@ -90,6 +90,13 @@ public void testIriForMath() { assertEquals(uut.getIri(), DatatypeIdValue.DT_MATH); } + @Test + public void testIriForGeoShape() { + JacksonDatatypeId uut = new JacksonDatatypeId( + JacksonDatatypeId.JSON_DT_GEO_SHAPE); + assertEquals(uut.getIri(), DatatypeIdValue.DT_GEO_SHAPE); + } + @Test public void testIriForUrl() { JacksonDatatypeId uut = new JacksonDatatypeId(