diff --git a/dhp-applications/dhp-is-mapper/pom.xml b/dhp-applications/dhp-is-mapper/pom.xml
deleted file mode 100644
index b30e84a38..000000000
--- a/dhp-applications/dhp-is-mapper/pom.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
- dhp-applications
- eu.dnetlib.dhp
- 1.0.0-SNAPSHOT
-
- 4.0.0
-
- dhp-is-mapper
-
-
-
-
- org.apache.spark
- spark-core_2.11
-
-
- org.apache.spark
- spark-sql_2.11
-
-
-
- eu.dnetlib.dhp
- dhp-common
- 1.0.0-SNAPSHOT
-
-
-
- eu.dnetlib.dhp
- dhp-schemas
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/dhp-schemas/pom.xml b/dhp-schemas/pom.xml
index 6ba9dead7..1f9c38b56 100644
--- a/dhp-schemas/pom.xml
+++ b/dhp-schemas/pom.xml
@@ -14,39 +14,7 @@
dhp-schemas
jar
-
-
- dnet-plugin
- dnet plugin repository
- http://maven.research-infrastructures.eu/nexus/content/repositories/dnet4-bootstrap-release
- default
-
-
-
-
-
- eu.dnetlib
- protoc-jar-maven-plugin
- 1.1.0
-
-
- generate-sources
-
- run
-
-
- ${google.protobuf.version}
-
- src/main/resources
-
- src/gen/java
-
-
-
-
-
-
@@ -65,18 +33,17 @@
commons-io
commons-io
-
-
- com.google.protobuf
- protobuf-java
-
com.googlecode.protobuf-java-format
protobuf-java-format
- 1.2
-
+
+ eu.dnetlib
+ dnet-openaire-data-protos
+
+
+
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java
new file mode 100644
index 000000000..892c8d4f5
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java
@@ -0,0 +1,58 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public class Author implements Serializable {
+
+ private String name;
+
+ private String typology;
+
+ private String provenance;
+
+ private String trust;
+
+ // json containing a Citation or Statistics
+ private String value;
+
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getTypology() {
+ return typology;
+ }
+
+ public void setTypology(String typology) {
+ this.typology = typology;
+ }
+
+ public String getProvenance() {
+ return provenance;
+ }
+
+ public void setProvenance(String provenance) {
+ this.provenance = provenance;
+ }
+
+ public String getTrust() {
+ return trust;
+ }
+
+ public void setTrust(String trust) {
+ this.trust = trust;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java
new file mode 100644
index 000000000..64e23088e
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java
@@ -0,0 +1,26 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class Context implements Serializable {
+ private String id;
+
+ private List dataInfo;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public List getDataInfo() {
+ return dataInfo;
+ }
+
+ public void setDataInfo(List dataInfo) {
+ this.dataInfo = dataInfo;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java
new file mode 100644
index 000000000..01a0396a8
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java
@@ -0,0 +1,63 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class DataInfo implements Serializable {
+
+ private Boolean invisible = false;
+ private Boolean inferred;
+ private Boolean deletedbyinference;
+ private String trust;
+ private String inferenceprovenance;
+ private List provenanceaction;
+
+
+ public Boolean getInvisible() {
+ return invisible;
+ }
+
+ public void setInvisible(Boolean invisible) {
+ this.invisible = invisible;
+ }
+
+ public Boolean getInferred() {
+ return inferred;
+ }
+
+ public void setInferred(Boolean inferred) {
+ this.inferred = inferred;
+ }
+
+ public Boolean getDeletedbyinference() {
+ return deletedbyinference;
+ }
+
+ public void setDeletedbyinference(Boolean deletedbyinference) {
+ this.deletedbyinference = deletedbyinference;
+ }
+
+ public String getTrust() {
+ return trust;
+ }
+
+ public void setTrust(String trust) {
+ this.trust = trust;
+ }
+
+ public String getInferenceprovenance() {
+ return inferenceprovenance;
+ }
+
+ public void setInferenceprovenance(String inferenceprovenance) {
+ this.inferenceprovenance = inferenceprovenance;
+ }
+
+ public List getProvenanceaction() {
+ return provenanceaction;
+ }
+
+ public void setProvenanceaction(List provenanceaction) {
+ this.provenanceaction = provenanceaction;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java
new file mode 100644
index 000000000..44d5226e9
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java
@@ -0,0 +1,77 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class Dataset extends Result implements Serializable {
+
+ private Field storagedate;
+
+ private Field device;
+
+ private Field size;
+
+ private Field version;
+
+ private Field lastmetadataupdate;
+
+ private Field metadataversionnumber;
+
+ private List geolocation;
+
+ public Field getStoragedate() {
+ return storagedate;
+ }
+
+ public void setStoragedate(Field storagedate) {
+ this.storagedate = storagedate;
+ }
+
+ public Field getDevice() {
+ return device;
+ }
+
+ public void setDevice(Field device) {
+ this.device = device;
+ }
+
+ public Field getSize() {
+ return size;
+ }
+
+ public void setSize(Field size) {
+ this.size = size;
+ }
+
+ public Field getVersion() {
+ return version;
+ }
+
+ public void setVersion(Field version) {
+ this.version = version;
+ }
+
+ public Field getLastmetadataupdate() {
+ return lastmetadataupdate;
+ }
+
+ public void setLastmetadataupdate(Field lastmetadataupdate) {
+ this.lastmetadataupdate = lastmetadataupdate;
+ }
+
+ public Field getMetadataversionnumber() {
+ return metadataversionnumber;
+ }
+
+ public void setMetadataversionnumber(Field metadataversionnumber) {
+ this.metadataversionnumber = metadataversionnumber;
+ }
+
+ public List getGeolocation() {
+ return geolocation;
+ }
+
+ public void setGeolocation(List geolocation) {
+ this.geolocation = geolocation;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java
new file mode 100644
index 000000000..354045ba7
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java
@@ -0,0 +1,364 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class Datasource extends OafEntity implements Serializable {
+
+ private Qualifier datasourcetype;
+
+ private Qualifier openairecompatibility;
+
+ private Field officialname;
+
+ private Field englishname;
+
+ private Field websiteurl;
+
+ private Field logourl;
+
+ private Field contactemail;
+
+ private Field namespaceprefix;
+
+ private Field latitude;
+
+ private Field longitude;
+
+ private Field dateofvalidation;
+
+ private Field description;
+
+ private List subjects;
+
+ // opendoar specific fields (od*)
+ private Field odnumberofitems;
+
+ private Field odnumberofitemsdate;
+
+ private Field odpolicies;
+
+ private List> odlanguages;
+
+ private List< Field> odcontenttypes;
+
+ private List< Field> accessinfopackage;
+
+ // re3data fields
+ private Field releasestartdate;
+
+ private Field releaseenddate;
+
+ private Field missionstatementurl;
+
+ private Field dataprovider;
+
+ private Field serviceprovider;
+
+ // {open, restricted or closed}
+ private Field databaseaccesstype;
+
+ // {open, restricted or closed}
+ private Field datauploadtype;
+
+ // {feeRequired, registration, other}
+ private Field databaseaccessrestriction;
+
+ // {feeRequired, registration, other}
+ private Field datauploadrestriction9;
+
+ private Field versioning;
+
+ private Field citationguidelineurl;
+
+ //{yes, no, uknown}
+ private Field qualitymanagementkind;
+
+ private Field pidsystems;
+
+ private Field certificates;
+
+ private List< KeyValue> policies;
+
+ private Journal journal;
+
+ public Qualifier getDatasourcetype() {
+ return datasourcetype;
+ }
+
+ public void setDatasourcetype(Qualifier datasourcetype) {
+ this.datasourcetype = datasourcetype;
+ }
+
+ public Qualifier getOpenairecompatibility() {
+ return openairecompatibility;
+ }
+
+ public void setOpenairecompatibility(Qualifier openairecompatibility) {
+ this.openairecompatibility = openairecompatibility;
+ }
+
+ public Field getOfficialname() {
+ return officialname;
+ }
+
+ public void setOfficialname(Field officialname) {
+ this.officialname = officialname;
+ }
+
+ public Field getEnglishname() {
+ return englishname;
+ }
+
+ public void setEnglishname(Field englishname) {
+ this.englishname = englishname;
+ }
+
+ public Field getWebsiteurl() {
+ return websiteurl;
+ }
+
+ public void setWebsiteurl(Field websiteurl) {
+ this.websiteurl = websiteurl;
+ }
+
+ public Field getLogourl() {
+ return logourl;
+ }
+
+ public void setLogourl(Field logourl) {
+ this.logourl = logourl;
+ }
+
+ public Field getContactemail() {
+ return contactemail;
+ }
+
+ public void setContactemail(Field contactemail) {
+ this.contactemail = contactemail;
+ }
+
+ public Field getNamespaceprefix() {
+ return namespaceprefix;
+ }
+
+ public void setNamespaceprefix(Field namespaceprefix) {
+ this.namespaceprefix = namespaceprefix;
+ }
+
+ public Field getLatitude() {
+ return latitude;
+ }
+
+ public void setLatitude(Field latitude) {
+ this.latitude = latitude;
+ }
+
+ public Field getLongitude() {
+ return longitude;
+ }
+
+ public void setLongitude(Field longitude) {
+ this.longitude = longitude;
+ }
+
+ public Field getDateofvalidation() {
+ return dateofvalidation;
+ }
+
+ public void setDateofvalidation(Field dateofvalidation) {
+ this.dateofvalidation = dateofvalidation;
+ }
+
+ public Field getDescription() {
+ return description;
+ }
+
+ public void setDescription(Field description) {
+ this.description = description;
+ }
+
+ public List getSubjects() {
+ return subjects;
+ }
+
+ public void setSubjects(List subjects) {
+ this.subjects = subjects;
+ }
+
+ public Field getOdnumberofitems() {
+ return odnumberofitems;
+ }
+
+ public void setOdnumberofitems(Field odnumberofitems) {
+ this.odnumberofitems = odnumberofitems;
+ }
+
+ public Field getOdnumberofitemsdate() {
+ return odnumberofitemsdate;
+ }
+
+ public void setOdnumberofitemsdate(Field odnumberofitemsdate) {
+ this.odnumberofitemsdate = odnumberofitemsdate;
+ }
+
+ public Field getOdpolicies() {
+ return odpolicies;
+ }
+
+ public void setOdpolicies(Field odpolicies) {
+ this.odpolicies = odpolicies;
+ }
+
+ public List> getOdlanguages() {
+ return odlanguages;
+ }
+
+ public void setOdlanguages(List> odlanguages) {
+ this.odlanguages = odlanguages;
+ }
+
+ public List> getOdcontenttypes() {
+ return odcontenttypes;
+ }
+
+ public void setOdcontenttypes(List> odcontenttypes) {
+ this.odcontenttypes = odcontenttypes;
+ }
+
+ public List> getAccessinfopackage() {
+ return accessinfopackage;
+ }
+
+ public void setAccessinfopackage(List> accessinfopackage) {
+ this.accessinfopackage = accessinfopackage;
+ }
+
+ public Field getReleasestartdate() {
+ return releasestartdate;
+ }
+
+ public void setReleasestartdate(Field releasestartdate) {
+ this.releasestartdate = releasestartdate;
+ }
+
+ public Field getReleaseenddate() {
+ return releaseenddate;
+ }
+
+ public void setReleaseenddate(Field releaseenddate) {
+ this.releaseenddate = releaseenddate;
+ }
+
+ public Field getMissionstatementurl() {
+ return missionstatementurl;
+ }
+
+ public void setMissionstatementurl(Field missionstatementurl) {
+ this.missionstatementurl = missionstatementurl;
+ }
+
+ public Field getDataprovider() {
+ return dataprovider;
+ }
+
+ public void setDataprovider(Field dataprovider) {
+ this.dataprovider = dataprovider;
+ }
+
+ public Field getServiceprovider() {
+ return serviceprovider;
+ }
+
+ public void setServiceprovider(Field serviceprovider) {
+ this.serviceprovider = serviceprovider;
+ }
+
+ public Field getDatabaseaccesstype() {
+ return databaseaccesstype;
+ }
+
+ public void setDatabaseaccesstype(Field databaseaccesstype) {
+ this.databaseaccesstype = databaseaccesstype;
+ }
+
+ public Field getDatauploadtype() {
+ return datauploadtype;
+ }
+
+ public void setDatauploadtype(Field datauploadtype) {
+ this.datauploadtype = datauploadtype;
+ }
+
+ public Field getDatabaseaccessrestriction() {
+ return databaseaccessrestriction;
+ }
+
+ public void setDatabaseaccessrestriction(Field databaseaccessrestriction) {
+ this.databaseaccessrestriction = databaseaccessrestriction;
+ }
+
+ public Field getDatauploadrestriction9() {
+ return datauploadrestriction9;
+ }
+
+ public void setDatauploadrestriction9(Field datauploadrestriction9) {
+ this.datauploadrestriction9 = datauploadrestriction9;
+ }
+
+ public Field getVersioning() {
+ return versioning;
+ }
+
+ public void setVersioning(Field versioning) {
+ this.versioning = versioning;
+ }
+
+ public Field getCitationguidelineurl() {
+ return citationguidelineurl;
+ }
+
+ public void setCitationguidelineurl(Field citationguidelineurl) {
+ this.citationguidelineurl = citationguidelineurl;
+ }
+
+ public Field getQualitymanagementkind() {
+ return qualitymanagementkind;
+ }
+
+ public void setQualitymanagementkind(Field qualitymanagementkind) {
+ this.qualitymanagementkind = qualitymanagementkind;
+ }
+
+ public Field getPidsystems() {
+ return pidsystems;
+ }
+
+ public void setPidsystems(Field pidsystems) {
+ this.pidsystems = pidsystems;
+ }
+
+ public Field getCertificates() {
+ return certificates;
+ }
+
+ public void setCertificates(Field certificates) {
+ this.certificates = certificates;
+ }
+
+ public List getPolicies() {
+ return policies;
+ }
+
+ public void setPolicies(List policies) {
+ this.policies = policies;
+ }
+
+ public Journal getJournal() {
+ return journal;
+ }
+
+ public void setJournal(Journal journal) {
+ this.journal = journal;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java
new file mode 100644
index 000000000..006658133
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java
@@ -0,0 +1,93 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public class ExternalReference implements Serializable {
+ // source
+ private String sitename;
+
+ // title
+ private String label;
+
+ // text()
+ private String url;
+
+ // ?? not mapped yet ??
+ private String description;
+
+ // type
+ private Qualifier qualifier;
+
+ // site internal identifier
+ private String refidentifier;
+
+ // maps the oaf:reference/@query attribute
+ private String query;
+
+ // ExternalReferences might be also inferred
+ private DataInfo dataInfo;
+
+ public String getSitename() {
+ return sitename;
+ }
+
+ public void setSitename(String sitename) {
+ this.sitename = sitename;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Qualifier getQualifier() {
+ return qualifier;
+ }
+
+ public void setQualifier(Qualifier qualifier) {
+ this.qualifier = qualifier;
+ }
+
+ public String getRefidentifier() {
+ return refidentifier;
+ }
+
+ public void setRefidentifier(String refidentifier) {
+ this.refidentifier = refidentifier;
+ }
+
+ public String getQuery() {
+ return query;
+ }
+
+ public void setQuery(String query) {
+ this.query = query;
+ }
+
+ public DataInfo getDataInfo() {
+ return dataInfo;
+ }
+
+ public void setDataInfo(DataInfo dataInfo) {
+ this.dataInfo = dataInfo;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java
new file mode 100644
index 000000000..028b812a5
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java
@@ -0,0 +1,56 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public class ExtraInfo implements Serializable {
+ private String name;
+
+ private String typology;
+
+ private String provenance;
+
+ private String trust;
+
+ // json containing a Citation or Statistics
+ private String value;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getTypology() {
+ return typology;
+ }
+
+ public void setTypology(String typology) {
+ this.typology = typology;
+ }
+
+ public String getProvenance() {
+ return provenance;
+ }
+
+ public void setProvenance(String provenance) {
+ this.provenance = provenance;
+ }
+
+ public String getTrust() {
+ return trust;
+ }
+
+ public void setTrust(String trust) {
+ this.trust = trust;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java
new file mode 100644
index 000000000..59287ddc4
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java
@@ -0,0 +1,26 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public abstract class Field implements Serializable {
+
+ private T value;
+
+ private DataInfo dataInfo;
+
+ public T getValue() {
+ return value;
+ }
+
+ public void setValue(T value) {
+ this.value = value;
+ }
+
+ public DataInfo getDataInfo() {
+ return dataInfo;
+ }
+
+ public void setDataInfo(DataInfo dataInfo) {
+ this.dataInfo = dataInfo;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java
new file mode 100644
index 000000000..567254a23
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java
@@ -0,0 +1,36 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public class GeoLocation implements Serializable {
+
+ private String point;
+
+ private String box;
+
+ private String place;
+
+ public String getPoint() {
+ return point;
+ }
+
+ public void setPoint(String point) {
+ this.point = point;
+ }
+
+ public String getBox() {
+ return box;
+ }
+
+ public void setBox(String box) {
+ this.box = box;
+ }
+
+ public String getPlace() {
+ return place;
+ }
+
+ public void setPlace(String place) {
+ this.place = place;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java
new file mode 100644
index 000000000..f27704c5c
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java
@@ -0,0 +1,87 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public class Instance implements Serializable {
+
+ private Field license;
+
+ private Qualifier accessright;
+
+ private Qualifier instancetype;
+
+ private KeyValue hostedby;
+
+ private String url;
+
+ // other research products specifc
+ private String distributionlocation;
+
+ private KeyValue collectedfrom;
+
+ private Field dateofacceptance;
+
+ public Field getLicense() {
+ return license;
+ }
+
+ public void setLicense(Field license) {
+ this.license = license;
+ }
+
+ public Qualifier getAccessright() {
+ return accessright;
+ }
+
+ public void setAccessright(Qualifier accessright) {
+ this.accessright = accessright;
+ }
+
+ public Qualifier getInstancetype() {
+ return instancetype;
+ }
+
+ public void setInstancetype(Qualifier instancetype) {
+ this.instancetype = instancetype;
+ }
+
+ public KeyValue getHostedby() {
+ return hostedby;
+ }
+
+ public void setHostedby(KeyValue hostedby) {
+ this.hostedby = hostedby;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getDistributionlocation() {
+ return distributionlocation;
+ }
+
+ public void setDistributionlocation(String distributionlocation) {
+ this.distributionlocation = distributionlocation;
+ }
+
+ public KeyValue getCollectedfrom() {
+ return collectedfrom;
+ }
+
+ public void setCollectedfrom(KeyValue collectedfrom) {
+ this.collectedfrom = collectedfrom;
+ }
+
+ public Field getDateofacceptance() {
+ return dateofacceptance;
+ }
+
+ public void setDateofacceptance(Field dateofacceptance) {
+ this.dateofacceptance = dateofacceptance;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java
new file mode 100644
index 000000000..06e5ca7dc
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java
@@ -0,0 +1,126 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public class Journal implements Serializable {
+
+ private String name;
+
+ private String issnPrinted;
+
+ private String issnOnline;
+
+ private String issnLinking;
+
+ private String ep;
+
+ private String iss;
+
+ private String sp;
+
+ private String vol;
+
+ private String edition;
+
+ private String conferenceplace;
+
+ private String conferencedate;
+
+ private DataInfo dataInfo;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getIssnPrinted() {
+ return issnPrinted;
+ }
+
+ public void setIssnPrinted(String issnPrinted) {
+ this.issnPrinted = issnPrinted;
+ }
+
+ public String getIssnOnline() {
+ return issnOnline;
+ }
+
+ public void setIssnOnline(String issnOnline) {
+ this.issnOnline = issnOnline;
+ }
+
+ public String getIssnLinking() {
+ return issnLinking;
+ }
+
+ public void setIssnLinking(String issnLinking) {
+ this.issnLinking = issnLinking;
+ }
+
+ public String getEp() {
+ return ep;
+ }
+
+ public void setEp(String ep) {
+ this.ep = ep;
+ }
+
+ public String getIss() {
+ return iss;
+ }
+
+ public void setIss(String iss) {
+ this.iss = iss;
+ }
+
+ public String getSp() {
+ return sp;
+ }
+
+ public void setSp(String sp) {
+ this.sp = sp;
+ }
+
+ public String getVol() {
+ return vol;
+ }
+
+ public void setVol(String vol) {
+ this.vol = vol;
+ }
+
+ public String getEdition() {
+ return edition;
+ }
+
+ public void setEdition(String edition) {
+ this.edition = edition;
+ }
+
+ public String getConferenceplace() {
+ return conferenceplace;
+ }
+
+ public void setConferenceplace(String conferenceplace) {
+ this.conferenceplace = conferenceplace;
+ }
+
+ public String getConferencedate() {
+ return conferencedate;
+ }
+
+ public void setConferencedate(String conferencedate) {
+ this.conferencedate = conferencedate;
+ }
+
+ public DataInfo getDataInfo() {
+ return dataInfo;
+ }
+
+ public void setDataInfo(DataInfo dataInfo) {
+ this.dataInfo = dataInfo;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java
new file mode 100644
index 000000000..1c4c7e6ef
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java
@@ -0,0 +1,36 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public class KeyValue implements Serializable {
+
+ private String key;
+
+ private String value;
+
+ private DataInfo dataInfo;
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public DataInfo getDataInfo() {
+ return dataInfo;
+ }
+
+ public void setDataInfo(DataInfo dataInfo) {
+ this.dataInfo = dataInfo;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java
new file mode 100644
index 000000000..bb97654b9
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java
@@ -0,0 +1,16 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public class OAIProvenance implements Serializable {
+
+ private OriginDescription originDescription;
+
+ public OriginDescription getOriginDescription() {
+ return originDescription;
+ }
+
+ public void setOriginDescription(OriginDescription originDescription) {
+ this.originDescription = originDescription;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java
new file mode 100644
index 000000000..a47fe7174
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java
@@ -0,0 +1,29 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public abstract class Oaf implements Serializable {
+
+ private DataInfo dataInfo;
+
+ private Long lastupdatetimestamp;
+
+
+// protected abstract T fromJson(final String json);
+
+ public DataInfo getDataInfo() {
+ return dataInfo;
+ }
+
+ public void setDataInfo(DataInfo dataInfo) {
+ this.dataInfo = dataInfo;
+ }
+
+ public Long getLastupdatetimestamp() {
+ return lastupdatetimestamp;
+ }
+
+ public void setLastupdatetimestamp(Long lastupdatetimestamp) {
+ this.lastupdatetimestamp = lastupdatetimestamp;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java
new file mode 100644
index 000000000..98f435fab
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java
@@ -0,0 +1,99 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+import java.util.List;
+
+public abstract class OafEntity extends Oaf implements Serializable {
+
+ private String id;
+
+ private List originalId;
+
+ private List collectedfrom;
+
+ private List pid;
+
+ private String dateofcollection;
+
+ private String dateoftransformation;
+
+ //TODO remove this field
+ private List children;
+
+ private List extraInfo;
+
+ private OAIProvenance oaiprovenance;
+
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public List getOriginalId() {
+ return originalId;
+ }
+
+ public void setOriginalId(List originalId) {
+ this.originalId = originalId;
+ }
+
+ public List getCollectedfrom() {
+ return collectedfrom;
+ }
+
+ public void setCollectedfrom(List collectedfrom) {
+ this.collectedfrom = collectedfrom;
+ }
+
+ public List getPid() {
+ return pid;
+ }
+
+ public void setPid(List pid) {
+ this.pid = pid;
+ }
+
+ public String getDateofcollection() {
+ return dateofcollection;
+ }
+
+ public void setDateofcollection(String dateofcollection) {
+ this.dateofcollection = dateofcollection;
+ }
+
+ public String getDateoftransformation() {
+ return dateoftransformation;
+ }
+
+ public void setDateoftransformation(String dateoftransformation) {
+ this.dateoftransformation = dateoftransformation;
+ }
+
+ public List getChildren() {
+ return children;
+ }
+
+ public void setChildren(List children) {
+ this.children = children;
+ }
+
+ public List getExtraInfo() {
+ return extraInfo;
+ }
+
+ public void setExtraInfo(List extraInfo) {
+ this.extraInfo = extraInfo;
+ }
+
+ public OAIProvenance getOaiprovenance() {
+ return oaiprovenance;
+ }
+
+ public void setOaiprovenance(OAIProvenance oaiprovenance) {
+ this.oaiprovenance = oaiprovenance;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java
new file mode 100644
index 000000000..dd966deb5
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java
@@ -0,0 +1,168 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class Organization extends OafEntity implements Serializable {
+
+ private Field legalshortname;
+
+ private Field legalname;
+
+ private List> alternativeNames;
+
+ private Field websiteurl;
+
+ private Field logourl;
+
+ private Field eclegalbody;
+
+ private Field eclegalperson;
+
+ private Field ecnonprofit;
+
+ private Field ecresearchorganization;
+
+ private Field echighereducation;
+
+ private Field ecinternationalorganizationeurinterests;
+
+ private Field ecinternationalorganization;
+
+ private Field ecenterprise;
+
+ private Field ecsmevalidated;
+
+ private Field ecnutscode;
+
+ private Qualifier country;
+
+
+ public Field getLegalshortname() {
+ return legalshortname;
+ }
+
+ public void setLegalshortname(Field legalshortname) {
+ this.legalshortname = legalshortname;
+ }
+
+ public Field getLegalname() {
+ return legalname;
+ }
+
+ public void setLegalname(Field legalname) {
+ this.legalname = legalname;
+ }
+
+ public List> getAlternativeNames() {
+ return alternativeNames;
+ }
+
+ public void setAlternativeNames(List> alternativeNames) {
+ this.alternativeNames = alternativeNames;
+ }
+
+ public Field getWebsiteurl() {
+ return websiteurl;
+ }
+
+ public void setWebsiteurl(Field websiteurl) {
+ this.websiteurl = websiteurl;
+ }
+
+ public Field getLogourl() {
+ return logourl;
+ }
+
+ public void setLogourl(Field logourl) {
+ this.logourl = logourl;
+ }
+
+ public Field getEclegalbody() {
+ return eclegalbody;
+ }
+
+ public void setEclegalbody(Field eclegalbody) {
+ this.eclegalbody = eclegalbody;
+ }
+
+ public Field getEclegalperson() {
+ return eclegalperson;
+ }
+
+ public void setEclegalperson(Field eclegalperson) {
+ this.eclegalperson = eclegalperson;
+ }
+
+ public Field getEcnonprofit() {
+ return ecnonprofit;
+ }
+
+ public void setEcnonprofit(Field ecnonprofit) {
+ this.ecnonprofit = ecnonprofit;
+ }
+
+ public Field getEcresearchorganization() {
+ return ecresearchorganization;
+ }
+
+ public void setEcresearchorganization(Field ecresearchorganization) {
+ this.ecresearchorganization = ecresearchorganization;
+ }
+
+ public Field getEchighereducation() {
+ return echighereducation;
+ }
+
+ public void setEchighereducation(Field echighereducation) {
+ this.echighereducation = echighereducation;
+ }
+
+ public Field getEcinternationalorganizationeurinterests() {
+ return ecinternationalorganizationeurinterests;
+ }
+
+ public void setEcinternationalorganizationeurinterests(Field ecinternationalorganizationeurinterests) {
+ this.ecinternationalorganizationeurinterests = ecinternationalorganizationeurinterests;
+ }
+
+ public Field getEcinternationalorganization() {
+ return ecinternationalorganization;
+ }
+
+ public void setEcinternationalorganization(Field ecinternationalorganization) {
+ this.ecinternationalorganization = ecinternationalorganization;
+ }
+
+ public Field getEcenterprise() {
+ return ecenterprise;
+ }
+
+ public void setEcenterprise(Field ecenterprise) {
+ this.ecenterprise = ecenterprise;
+ }
+
+ public Field getEcsmevalidated() {
+ return ecsmevalidated;
+ }
+
+ public void setEcsmevalidated(Field ecsmevalidated) {
+ this.ecsmevalidated = ecsmevalidated;
+ }
+
+ public Field getEcnutscode() {
+ return ecnutscode;
+ }
+
+ public void setEcnutscode(Field ecnutscode) {
+ this.ecnutscode = ecnutscode;
+ }
+
+ public Qualifier getCountry() {
+ return country;
+ }
+
+ public void setCountry(Qualifier country) {
+ this.country = country;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java
new file mode 100644
index 000000000..898c16210
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java
@@ -0,0 +1,76 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+
+public class OriginDescription implements Serializable {
+
+ private String harvestDate;
+
+ private Boolean altered = true;
+
+ private String baseURL;
+
+ private String identifier;
+
+ private String datestamp;
+
+ private String metadataNamespace;
+
+ private OriginDescription originDescription;
+
+ public String getHarvestDate() {
+ return harvestDate;
+ }
+
+ public void setHarvestDate(String harvestDate) {
+ this.harvestDate = harvestDate;
+ }
+
+ public Boolean getAltered() {
+ return altered;
+ }
+
+ public void setAltered(Boolean altered) {
+ this.altered = altered;
+ }
+
+ public String getBaseURL() {
+ return baseURL;
+ }
+
+ public void setBaseURL(String baseURL) {
+ this.baseURL = baseURL;
+ }
+
+ public String getIdentifier() {
+ return identifier;
+ }
+
+ public void setIdentifier(String identifier) {
+ this.identifier = identifier;
+ }
+
+ public String getDatestamp() {
+ return datestamp;
+ }
+
+ public void setDatestamp(String datestamp) {
+ this.datestamp = datestamp;
+ }
+
+ public String getMetadataNamespace() {
+ return metadataNamespace;
+ }
+
+ public void setMetadataNamespace(String metadataNamespace) {
+ this.metadataNamespace = metadataNamespace;
+ }
+
+ public OriginDescription getOriginDescription() {
+ return originDescription;
+ }
+
+ public void setOriginDescription(OriginDescription originDescription) {
+ this.originDescription = originDescription;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProducts.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProducts.java
new file mode 100644
index 000000000..12b578904
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProducts.java
@@ -0,0 +1,36 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class OtherResearchProducts extends Result implements Serializable {
+ private List> contactperson;
+
+ private List> contactgroup;
+
+ private List> tool;
+
+ public List> getContactperson() {
+ return contactperson;
+ }
+
+ public void setContactperson(List> contactperson) {
+ this.contactperson = contactperson;
+ }
+
+ public List> getContactgroup() {
+ return contactgroup;
+ }
+
+ public void setContactgroup(List> contactgroup) {
+ this.contactgroup = contactgroup;
+ }
+
+ public List> getTool() {
+ return tool;
+ }
+
+ public void setTool(List> tool) {
+ this.tool = tool;
+ }
+}
diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java
new file mode 100644
index 000000000..65f22da37
--- /dev/null
+++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java
@@ -0,0 +1,267 @@
+package eu.dnetlib.dhp.schema.oaf;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class Project extends OafEntity implements Serializable {
+
+ private Field websiteurl;
+
+ private Field code;
+
+ private Field acronym;
+
+ private Field title;
+
+ private Field startdate;
+
+ private Field enddate;
+
+ private Field callidentifier;
+
+ private Field keywords;
+
+ private Field duration;
+
+ private Field ecsc39;
+
+ private Field oamandatepublications;
+
+ private Field ecarticle29_3;
+
+ private List subjects;
+
+ private List> fundingtree;
+
+ private Qualifier contracttype;
+
+ private Field optional1;
+
+ private Field optional2;
+
+ private Field jsonextrainfo;
+
+ private Field contactfullname;
+
+ private Field contactfax;
+
+ private Field contactphone;
+
+ private Field contactemail;
+
+ private Field summary;
+
+ private Field currency;
+
+ private Float totalcost;
+
+ private Float fundedamount;
+
+ public Field getWebsiteurl() {
+ return websiteurl;
+ }
+
+ public void setWebsiteurl(Field websiteurl) {
+ this.websiteurl = websiteurl;
+ }
+
+ public Field getCode() {
+ return code;
+ }
+
+ public void setCode(Field code) {
+ this.code = code;
+ }
+
+ public Field getAcronym() {
+ return acronym;
+ }
+
+ public void setAcronym(Field acronym) {
+ this.acronym = acronym;
+ }
+
+ public Field getTitle() {
+ return title;
+ }
+
+ public void setTitle(Field title) {
+ this.title = title;
+ }
+
+ public Field getStartdate() {
+ return startdate;
+ }
+
+ public void setStartdate(Field startdate) {
+ this.startdate = startdate;
+ }
+
+ public Field getEnddate() {
+ return enddate;
+ }
+
+ public void setEnddate(Field enddate) {
+ this.enddate = enddate;
+ }
+
+ public Field getCallidentifier() {
+ return callidentifier;
+ }
+
+ public void setCallidentifier(Field callidentifier) {
+ this.callidentifier = callidentifier;
+ }
+
+ public Field getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(Field keywords) {
+ this.keywords = keywords;
+ }
+
+ public Field getDuration() {
+ return duration;
+ }
+
+ public void setDuration(Field duration) {
+ this.duration = duration;
+ }
+
+ public Field getEcsc39() {
+ return ecsc39;
+ }
+
+ public void setEcsc39(Field ecsc39) {
+ this.ecsc39 = ecsc39;
+ }
+
+ public Field getOamandatepublications() {
+ return oamandatepublications;
+ }
+
+ public void setOamandatepublications(Field oamandatepublications) {
+ this.oamandatepublications = oamandatepublications;
+ }
+
+ public Field getEcarticle29_3() {
+ return ecarticle29_3;
+ }
+
+ public void setEcarticle29_3(Field ecarticle29_3) {
+ this.ecarticle29_3 = ecarticle29_3;
+ }
+
+ public List getSubjects() {
+ return subjects;
+ }
+
+ public void setSubjects(List subjects) {
+ this.subjects = subjects;
+ }
+
+ public List> getFundingtree() {
+ return fundingtree;
+ }
+
+ public void setFundingtree(List> fundingtree) {
+ this.fundingtree = fundingtree;
+ }
+
+ public Qualifier getContracttype() {
+ return contracttype;
+ }
+
+ public void setContracttype(Qualifier contracttype) {
+ this.contracttype = contracttype;
+ }
+
+ public Field getOptional1() {
+ return optional1;
+ }
+
+ public void setOptional1(Field optional1) {
+ this.optional1 = optional1;
+ }
+
+ public Field getOptional2() {
+ return optional2;
+ }
+
+ public void setOptional2(Field optional2) {
+ this.optional2 = optional2;
+ }
+
+ public Field