diff --git a/pom.xml b/pom.xml
index 6dcfd7b..9695592 100644
--- a/pom.xml
+++ b/pom.xml
@@ -315,6 +315,24 @@
2.4
+
+ javax.validation
+ validation-api
+ 2.0.1.Final
+
+
+
+ com.github.victools
+ jsonschema-generator
+ ${jsonschemagenerator.version}
+
+
+
+ com.github.imifou
+ jsonschema-module-addon
+ 1.2.1
+
+
com.fasterxml.jackson.core
jackson-databind
@@ -389,16 +407,19 @@
javax.persistence
javax.persistence-api
+
+
+ javax.validation
+ validation-api
+
+
com.github.victools
jsonschema-generator
- ${jsonschemagenerator.version}
-
com.github.imifou
jsonschema-module-addon
- 1.2.1
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java
index c680555..e5751b1 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java
@@ -3,11 +3,14 @@ package eu.dnetlib.dhp.schema.oaf;
import java.util.Optional;
+import javax.validation.constraints.NotNull;
+
/**
* This class models the access rights of research products.
*/
public class AccessRight extends Qualifier {
+ @NotNull
private OpenAccessRoute openAccessRoute;
public OpenAccessRoute getOpenAccessRoute() {
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java
index b2f757d..5c6f9a4 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java
@@ -4,8 +4,13 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
import java.util.*;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
public class Author implements Serializable {
+ @NotBlank
private String fullname;
private String name;
@@ -13,6 +18,8 @@ public class Author implements Serializable {
private String surname;
// START WITH 1
+ @NotNull
+ @Min(1)
private Integer rank;
private List pid;
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java
index 57912c4..6a51d6b 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java
@@ -4,9 +4,15 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
import java.util.List;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
public class Context implements Serializable {
+
+ @NotBlank
private String id;
+ @NotNull
private List dataInfo;
public String getId() {
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java
index 9d572ee..9992ff8 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java
@@ -4,13 +4,24 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
import java.util.Objects;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
public class DataInfo implements Serializable {
+ @NotNull
private Boolean invisible = false;
+
+ @NotNull
private Boolean inferred;
+
+ @NotNull
private Boolean deletedbyinference = false;
private String trust;
+
private String inferenceprovenance;
+
+ @NotNull
private Qualifier provenanceaction;
public Boolean getInvisible() {
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java
index 8358bc4..9f82124 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java
@@ -4,8 +4,11 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
import java.util.Objects;
+import javax.validation.constraints.NotBlank;
+
public class Field implements Serializable {
+ @NotBlank
private T value;
private DataInfo dataInfo;
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java
index 6bb2908..1657f8f 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java
@@ -4,21 +4,30 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
import java.util.List;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
public class Instance implements Serializable {
private Field license;
+ @NotNull
private AccessRight accessright;
+ @NotNull
private Qualifier instancetype;
+ @NotNull
private KeyValue hostedby;
+ @NotEmpty
private List url;
// other research products specifc
private String distributionlocation;
+ @NotNull
private KeyValue collectedfrom;
private List pid;
@@ -35,6 +44,7 @@ public class Instance implements Serializable {
// typed results
private Field processingchargecurrency;
+ @NotNull
private Qualifier refereed; // peer-review status
private List measures;
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java
index 4e2d601..8bc3707 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java
@@ -3,14 +3,19 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
import org.apache.commons.lang3.StringUtils;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class KeyValue implements Serializable {
+ @NotBlank
private String key;
+ @NotBlank
private String value;
private DataInfo dataInfo;
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java
index 494123f..9bbcac2 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java
@@ -9,13 +9,21 @@ import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
public abstract class Oaf implements Serializable {
/**
* The list of datasource id/name pairs providing this relationship.
*/
+ @Valid
+ @NotEmpty
protected List collectedfrom;
+ @Valid
+ @NotNull
private DataInfo dataInfo;
private Long lastupdatetimestamp;
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java
index 0411821..fe0a07f 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java
@@ -5,14 +5,18 @@ import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;
+import javax.validation.constraints.NotBlank;
+
public abstract class OafEntity extends Oaf implements Serializable {
+ @NotBlank
private String id;
private List originalId;
private List pid;
+ @NotBlank
private String dateofcollection;
private String dateoftransformation;
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java
index 87ecb55..d5f0e1b 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java
@@ -3,15 +3,24 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
+import javax.validation.constraints.NotBlank;
+
import org.apache.commons.lang3.StringUtils;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class Qualifier implements Serializable {
+ @NotBlank
private String classid;
+
+ @NotBlank
private String classname;
+
+ @NotBlank
private String schemeid;
+
+ @NotBlank
private String schemename;
public String getClassid() {
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java
index fc6c5e0..a1c6316 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java
@@ -8,6 +8,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import javax.validation.constraints.NotBlank;
+
import eu.dnetlib.dhp.schema.common.ModelSupport;
/**
@@ -21,27 +23,32 @@ public class Relation extends Oaf {
/**
* Main relationship classifier, values include 'resultResult', 'resultProject', 'resultOrganization', etc.
*/
+ @NotBlank
private String relType;
/**
* Further classifies a relationship, values include 'affiliation', 'similarity', 'supplement', etc.
*/
+ @NotBlank
private String subRelType;
/**
* Indicates the direction of the relationship, values include 'isSupplementTo', 'isSupplementedBy', 'merges,
* 'isMergedIn'.
*/
+ @NotBlank
private String relClass;
/**
* The source entity id.
*/
+ @NotBlank
private String source;
/**
* The target entity id.
*/
+ @NotBlank
private String target;
/**
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java
index 9d1f52c..d5b8d63 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java
@@ -5,6 +5,10 @@ import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
@@ -28,15 +32,15 @@ public class Result extends OafEntity implements Serializable {
private List author;
/**
- * The Resulttype.
+ * The Resulttype, allows subclassing results into publications | datasets | software
*/
-// resulttype allows subclassing results into publications | datasets | software
+ @Valid
+ @NotNull
private Qualifier resulttype;
/**
* The Language.
*/
-// common fields
private Qualifier language;
/**
@@ -112,6 +116,8 @@ public class Result extends OafEntity implements Serializable {
/**
* The Bestaccessright.
*/
+ @Valid
+ @NotNull
private Qualifier bestaccessright;
/**
@@ -127,6 +133,8 @@ public class Result extends OafEntity implements Serializable {
/**
* The Instance.
*/
+ @Valid
+ @NotEmpty
private List instance;
/**
diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java
index 8750950..d416709 100644
--- a/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java
+++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java
@@ -6,12 +6,17 @@ import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
import org.apache.commons.lang3.StringUtils;
public class StructuredProperty implements Serializable {
+ @NotBlank
private String value;
+ @NotNull
private Qualifier qualifier;
private DataInfo dataInfo;