WIP: pruning out non necessary fields from the internal model

This commit is contained in:
Claudio Atzori 2023-01-31 14:36:13 +01:00
parent 3123e3f1f2
commit 3f6204ddc0
45 changed files with 820 additions and 2021 deletions

View File

@ -4,9 +4,8 @@ This project defines **object schemas** of the OpenAIRE main entities and the re
Namely it defines the model for Namely it defines the model for
- the graph internal representation, defined under the package `eu.dnetlib.dhp.schema.oaf` - the graph internal representation, defined under the package `eu.dnetlib.dhp.schema.oaf`
- the public graph dump representations, defined under the package `eu.dnetlib.dhp.schema.dump.oaf`
- the scholexplorer content representation, defined under the package `eu.dnetlib.dhp.schema.sx` - the scholexplorer content representation, defined under the package `eu.dnetlib.dhp.schema.sx`
- the contents acquired from the netadata aggregation subsystem, defined under the package `eu.dnetlib.dhp.schema.mdstore` - the contents acquired from the metadata aggregation subsystem, defined under the package `eu.dnetlib.dhp.schema.mdstore`
- the ORCID common schemas, defined under the package `eu.dnetlib.dhp.schema.orcid` - the ORCID common schemas, defined under the package `eu.dnetlib.dhp.schema.orcid`
Te serialization of such objects (data store files) are used to pass data between workflow nodes in the processing pipeline. Te serialization of such objects (data store files) are used to pass data between workflow nodes in the processing pipeline.

View File

@ -5,7 +5,7 @@
<groupId>eu.dnetlib.dhp</groupId> <groupId>eu.dnetlib.dhp</groupId>
<artifactId>dhp-schemas</artifactId> <artifactId>dhp-schemas</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<version>3.15.1-SNAPSHOT</version> <version>4.0.0-SNAPSHOT</version>
<licenses> <licenses>
<license> <license>

View File

@ -1,7 +1,7 @@
package eu.dnetlib.dhp.schema.common; package eu.dnetlib.dhp.schema.common;
import eu.dnetlib.dhp.schema.oaf.OafEntity; import eu.dnetlib.dhp.schema.oaf.Entity;
/** Actual entity types in the Graph */ /** Actual entity types in the Graph */
public enum EntityType { public enum EntityType {
@ -14,7 +14,7 @@ public enum EntityType {
* @param <T> actual OafEntity subclass * @param <T> actual OafEntity subclass
* @return the EntityType associated to the given class * @return the EntityType associated to the given class
*/ */
public static <T extends OafEntity> EntityType fromClass(Class<T> clazz) { public static <T extends Entity> EntityType fromClass(Class<T> clazz) {
return EntityType.valueOf(clazz.getSimpleName().toLowerCase()); return EntityType.valueOf(clazz.getSimpleName().toLowerCase());
} }

View File

@ -81,7 +81,7 @@ public class ModelConstants {
public static final Qualifier PROVENANCE_ACTION_SET_QUALIFIER = qualifier( public static final Qualifier PROVENANCE_ACTION_SET_QUALIFIER = qualifier(
SYSIMPORT_ACTIONSET, SYSIMPORT_ACTIONSET, DNET_PROVENANCE_ACTIONS, DNET_PROVENANCE_ACTIONS); SYSIMPORT_ACTIONSET, SYSIMPORT_ACTIONSET, DNET_PROVENANCE_ACTIONS);
public static final String DATASET_RESULTTYPE_CLASSID = "dataset"; public static final String DATASET_RESULTTYPE_CLASSID = "dataset";
public static final String PUBLICATION_RESULTTYPE_CLASSID = "publication"; public static final String PUBLICATION_RESULTTYPE_CLASSID = "publication";
@ -186,36 +186,36 @@ public class ModelConstants {
public static final Qualifier PUBLICATION_DEFAULT_RESULTTYPE = qualifier( public static final Qualifier PUBLICATION_DEFAULT_RESULTTYPE = qualifier(
PUBLICATION_RESULTTYPE_CLASSID, PUBLICATION_RESULTTYPE_CLASSID, PUBLICATION_RESULTTYPE_CLASSID, PUBLICATION_RESULTTYPE_CLASSID,
DNET_RESULT_TYPOLOGIES, DNET_RESULT_TYPOLOGIES); DNET_RESULT_TYPOLOGIES);
public static final Qualifier DATASET_DEFAULT_RESULTTYPE = qualifier( public static final Qualifier DATASET_DEFAULT_RESULTTYPE = qualifier(
DATASET_RESULTTYPE_CLASSID, DATASET_RESULTTYPE_CLASSID, DATASET_RESULTTYPE_CLASSID, DATASET_RESULTTYPE_CLASSID,
DNET_RESULT_TYPOLOGIES, DNET_RESULT_TYPOLOGIES); DNET_RESULT_TYPOLOGIES);
public static final Qualifier SOFTWARE_DEFAULT_RESULTTYPE = qualifier( public static final Qualifier SOFTWARE_DEFAULT_RESULTTYPE = qualifier(
SOFTWARE_RESULTTYPE_CLASSID, SOFTWARE_RESULTTYPE_CLASSID, SOFTWARE_RESULTTYPE_CLASSID, SOFTWARE_RESULTTYPE_CLASSID,
DNET_RESULT_TYPOLOGIES, DNET_RESULT_TYPOLOGIES); DNET_RESULT_TYPOLOGIES);
public static final Qualifier ORP_DEFAULT_RESULTTYPE = qualifier( public static final Qualifier ORP_DEFAULT_RESULTTYPE = qualifier(
ORP_RESULTTYPE_CLASSID, ORP_RESULTTYPE_CLASSID, ORP_RESULTTYPE_CLASSID, ORP_RESULTTYPE_CLASSID,
DNET_RESULT_TYPOLOGIES, DNET_RESULT_TYPOLOGIES); DNET_RESULT_TYPOLOGIES);
public static final Qualifier REPOSITORY_PROVENANCE_ACTIONS = qualifier( public static final Qualifier REPOSITORY_PROVENANCE_ACTIONS = qualifier(
SYSIMPORT_CROSSWALK_REPOSITORY, SYSIMPORT_CROSSWALK_REPOSITORY, SYSIMPORT_CROSSWALK_REPOSITORY, SYSIMPORT_CROSSWALK_REPOSITORY,
DNET_PROVENANCE_ACTIONS, DNET_PROVENANCE_ACTIONS); DNET_PROVENANCE_ACTIONS);
public static final Qualifier ENTITYREGISTRY_PROVENANCE_ACTION = qualifier( public static final Qualifier ENTITYREGISTRY_PROVENANCE_ACTION = qualifier(
SYSIMPORT_CROSSWALK_ENTITYREGISTRY, SYSIMPORT_CROSSWALK_ENTITYREGISTRY, SYSIMPORT_CROSSWALK_ENTITYREGISTRY, SYSIMPORT_CROSSWALK_ENTITYREGISTRY,
DNET_PROVENANCE_ACTIONS, DNET_PROVENANCE_ACTIONS); DNET_PROVENANCE_ACTIONS);
public static final String UNKNOWN_REPOSITORY_ORIGINALID = "openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18"; public static final String UNKNOWN_REPOSITORY_ORIGINALID = "openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18";
public static final KeyValue UNKNOWN_REPOSITORY = keyValue( public static final KeyValue UNKNOWN_REPOSITORY = keyValue(
"10|openaire____::55045bd2a65019fd8e6741a755395c8c", "Unknown Repository"); "10|openaire____::55045bd2a65019fd8e6741a755395c8c", "Unknown Repository");
public static final Qualifier UNKNOWN_COUNTRY = qualifier(UNKNOWN, "Unknown", DNET_COUNTRY_TYPE, DNET_COUNTRY_TYPE); public static final Qualifier UNKNOWN_COUNTRY = qualifier(UNKNOWN, "Unknown", DNET_COUNTRY_TYPE);
public static final Qualifier MAIN_TITLE_QUALIFIER = qualifier( public static final Qualifier MAIN_TITLE_QUALIFIER = qualifier(
"main title", "main title", DNET_DATACITE_TITLE, DNET_DATACITE_TITLE); "main title", "main title", DNET_DATACITE_TITLE);
public static final AccessRight OPEN_ACCESS_RIGHT() { public static final AccessRight OPEN_ACCESS_RIGHT() {
@ -223,20 +223,17 @@ public class ModelConstants {
result.setClassid(ACCESS_RIGHT_OPEN); result.setClassid(ACCESS_RIGHT_OPEN);
result.setClassid(ACCESS_RIGHT_OPEN); result.setClassid(ACCESS_RIGHT_OPEN);
result.setSchemeid(ModelConstants.DNET_ACCESS_MODES); result.setSchemeid(ModelConstants.DNET_ACCESS_MODES);
result.setSchemename(ModelConstants.DNET_ACCESS_MODES);
return result; return result;
} }
private static Qualifier qualifier( private static Qualifier qualifier(
final String classid, final String classid,
final String classname, final String classname,
final String schemeid, final String schemeid) {
final String schemename) {
final Qualifier q = new Qualifier(); final Qualifier q = new Qualifier();
q.setClassid(classid); q.setClassid(classid);
q.setClassname(classname); q.setClassname(classname);
q.setSchemeid(schemeid); q.setSchemeid(schemeid);
q.setSchemename(schemename);
return q; return q;
} }
@ -244,7 +241,6 @@ public class ModelConstants {
final KeyValue kv = new KeyValue(); final KeyValue kv = new KeyValue();
kv.setKey(key); kv.setKey(key);
kv.setValue(value); kv.setValue(value);
kv.setDataInfo(new DataInfo());
return kv; return kv;
} }
} }

View File

@ -184,8 +184,6 @@ public class ModelSupport {
.filter(r -> relationName.equalsIgnoreCase(r.getRelClass())) .filter(r -> relationName.equalsIgnoreCase(r.getRelClass()))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
} }
/** /**
@ -206,7 +204,7 @@ public class ModelSupport {
private ModelSupport() { private ModelSupport() {
} }
public static <E extends OafEntity> String getIdPrefix(Class<E> clazz) { public static <E extends Entity> String getIdPrefix(Class<E> clazz) {
return idPrefixMap.get(clazz); return idPrefixMap.get(clazz);
} }
@ -258,36 +256,44 @@ public class ModelSupport {
* @param <T> * @param <T>
* @return * @return
*/ */
public static <T extends Oaf> Class<T>[] getOafModelClasses() { public static <T extends Entity> Class<T>[] getOafModelClasses() {
return new Class[] { return new Class[] {
AccessRight.class,
Author.class, Author.class,
AuthorPid.class,
Context.class, Context.class,
Country.class, Country.class,
DataInfo.class, DataInfo.class,
Dataset.class, Dataset.class,
Datasource.class, Datasource.class,
Entity.class,
EntityDataInfo.class,
EoscIfGuidelines.class,
ExternalReference.class, ExternalReference.class,
ExtraInfo.class, ExtraInfo.class,
Field.class,
GeoLocation.class, GeoLocation.class,
H2020Classification.class,
H2020Programme.class,
Instance.class, Instance.class,
AccessRight.class,
OpenAccessRoute.class,
Journal.class, Journal.class,
KeyValue.class, KeyValue.class,
Oaf.class, License.class,
OafEntity.class, Measure.class,
OAIProvenance.class, OAIProvenance.class,
OpenAccessRoute.class,
Organization.class, Organization.class,
OriginDescription.class, OriginDescription.class,
OtherResearchProduct.class, OtherResearchProduct.class,
Project.class, Project.class,
Provenance.class,
Publication.class, Publication.class,
Publisher.class,
Qualifier.class, Qualifier.class,
Relation.class, Relation.class,
Result.class, Result.class,
Software.class, Software.class,
StructuredProperty.class StructuredProperty.class,
Subject.class
}; };
} }
@ -307,7 +313,7 @@ public class ModelSupport {
entityMapping.get(EntityType.valueOf(targetType)).name()); entityMapping.get(EntityType.valueOf(targetType)).name());
} }
public static <T extends Oaf> String tableIdentifier(String dbName, String tableName) { public static String tableIdentifier(String dbName, String tableName) {
checkArgument(StringUtils.isNotBlank(dbName), "DB name cannot be empty"); checkArgument(StringUtils.isNotBlank(dbName), "DB name cannot be empty");
checkArgument(StringUtils.isNotBlank(tableName), "table name cannot be empty"); checkArgument(StringUtils.isNotBlank(tableName), "table name cannot be empty");
@ -315,24 +321,14 @@ public class ModelSupport {
return String.format("%s.%s", dbName, tableName); return String.format("%s.%s", dbName, tableName);
} }
public static <T extends Oaf> String tableIdentifier(String dbName, Class<T> clazz) { public static <T extends Entity> String tableIdentifier(String dbName, Class<T> clazz) {
checkArgument(Objects.nonNull(clazz), "clazz is needed to derive the table name, thus cannot be null"); checkArgument(Objects.nonNull(clazz), "clazz is needed to derive the table name, thus cannot be null");
return tableIdentifier(dbName, clazz.getSimpleName().toLowerCase()); return tableIdentifier(dbName, clazz.getSimpleName().toLowerCase());
} }
public static <T extends Oaf> Function<T, String> idFn() { private static String idFnForRelation(Relation r) {
return x -> {
if (isSubClass(x, Relation.class)) {
return idFnForRelation(x);
}
return idFnForOafEntity(x);
};
}
private static <T extends Oaf> String idFnForRelation(T t) {
Relation r = (Relation) t;
return Optional return Optional
.ofNullable(r.getSource()) .ofNullable(r.getSource())
.map( .map(
@ -368,8 +364,8 @@ public class ModelSupport {
.orElse(null); .orElse(null);
} }
private static <T extends Oaf> String idFnForOafEntity(T t) { private static <T extends Entity> String idFnForOafEntity(T t) {
return ((OafEntity) t).getId(); return t.getId();
} }
public static String md5(final String s) { public static String md5(final String s) {

View File

@ -15,9 +15,7 @@ public class Author implements Serializable {
// START WITH 1 // START WITH 1
private Integer rank; private Integer rank;
private List<StructuredProperty> pid; private List<AuthorPid> pid;
private List<Field<String>> affiliation;
public String getFullname() { public String getFullname() {
return fullname; return fullname;
@ -51,22 +49,14 @@ public class Author implements Serializable {
this.rank = rank; this.rank = rank;
} }
public List<StructuredProperty> getPid() { public List<AuthorPid> getPid() {
return pid; return pid;
} }
public void setPid(List<StructuredProperty> pid) { public void setPid(List<AuthorPid> pid) {
this.pid = pid; this.pid = pid;
} }
public List<Field<String>> getAffiliation() {
return affiliation;
}
public void setAffiliation(List<Field<String>> affiliation) {
this.affiliation = affiliation;
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) if (this == o)
@ -78,13 +68,12 @@ public class Author implements Serializable {
&& Objects.equals(name, author.name) && Objects.equals(name, author.name)
&& Objects.equals(surname, author.surname) && Objects.equals(surname, author.surname)
&& Objects.equals(rank, author.rank) && Objects.equals(rank, author.rank)
&& Objects.equals(pid, author.pid) && Objects.equals(pid, author.pid);
&& Objects.equals(affiliation, author.affiliation);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(fullname, name, surname, rank, pid, affiliation); return Objects.hash(fullname, name, surname, rank, pid);
} }
} }

View File

@ -0,0 +1,16 @@
package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
public class AuthorPid extends StructuredProperty implements Serializable {
private DataInfo dataInfo;
public DataInfo getDataInfo() {
return dataInfo;
}
public void setDataInfo(DataInfo dataInfo) {
this.dataInfo = dataInfo;
}
}

View File

@ -3,24 +3,15 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
public class DataInfo implements Serializable { public class DataInfo implements Serializable {
private Boolean invisible = false;
private Boolean inferred; private Boolean inferred;
private Boolean deletedbyinference = false; private float trust;
private String trust;
private String inferenceprovenance; private String inferenceprovenance;
private Qualifier provenanceaction; private Qualifier provenanceaction;
public Boolean getInvisible() {
return invisible;
}
public void setInvisible(Boolean invisible) {
this.invisible = invisible;
}
public Boolean getInferred() { public Boolean getInferred() {
return inferred; return inferred;
} }
@ -29,19 +20,11 @@ public class DataInfo implements Serializable {
this.inferred = inferred; this.inferred = inferred;
} }
public Boolean getDeletedbyinference() { public float getTrust() {
return deletedbyinference;
}
public void setDeletedbyinference(Boolean deletedbyinference) {
this.deletedbyinference = deletedbyinference;
}
public String getTrust() {
return trust; return trust;
} }
public void setTrust(String trust) { public void setTrust(float trust) {
this.trust = trust; this.trust = trust;
} }
@ -68,9 +51,7 @@ public class DataInfo implements Serializable {
if (o == null || getClass() != o.getClass()) if (o == null || getClass() != o.getClass())
return false; return false;
DataInfo dataInfo = (DataInfo) o; DataInfo dataInfo = (DataInfo) o;
return Objects.equals(invisible, dataInfo.invisible) return Objects.equals(inferred, dataInfo.inferred)
&& Objects.equals(inferred, dataInfo.inferred)
&& Objects.equals(deletedbyinference, dataInfo.deletedbyinference)
&& Objects.equals(trust, dataInfo.trust) && Objects.equals(trust, dataInfo.trust)
&& Objects.equals(inferenceprovenance, dataInfo.inferenceprovenance) && Objects.equals(inferenceprovenance, dataInfo.inferenceprovenance)
&& Objects.equals(provenanceaction, dataInfo.provenanceaction); && Objects.equals(provenanceaction, dataInfo.provenanceaction);
@ -80,6 +61,6 @@ public class DataInfo implements Serializable {
public int hashCode() { public int hashCode() {
return Objects return Objects
.hash( .hash(
invisible, inferred, deletedbyinference, trust, inferenceprovenance, provenanceaction); inferred, trust, inferenceprovenance, provenanceaction);
} }
} }

View File

@ -8,70 +8,70 @@ import eu.dnetlib.dhp.schema.common.ModelConstants;
public class Dataset extends Result implements Serializable { public class Dataset extends Result implements Serializable {
private Field<String> storagedate; private String storagedate;
// candidate for removal // candidate for removal
private Field<String> device; private String device;
private Field<String> size; private String size;
private Field<String> version; private String version;
private Field<String> lastmetadataupdate; private String lastmetadataupdate;
private Field<String> metadataversionnumber; private String metadataversionnumber;
private List<GeoLocation> geolocation; private List<GeoLocation> geolocation;
public Dataset() { public Dataset() {
setResulttype(ModelConstants.DATASET_DEFAULT_RESULTTYPE); setResulttype(ModelConstants.DATASET_RESULTTYPE_CLASSID);
} }
public Field<String> getStoragedate() { public String getStoragedate() {
return storagedate; return storagedate;
} }
public void setStoragedate(Field<String> storagedate) { public void setStoragedate(String storagedate) {
this.storagedate = storagedate; this.storagedate = storagedate;
} }
public Field<String> getDevice() { public String getDevice() {
return device; return device;
} }
public void setDevice(Field<String> device) { public void setDevice(String device) {
this.device = device; this.device = device;
} }
public Field<String> getSize() { public String getSize() {
return size; return size;
} }
public void setSize(Field<String> size) { public void setSize(String size) {
this.size = size; this.size = size;
} }
public Field<String> getVersion() { public String getVersion() {
return version; return version;
} }
public void setVersion(Field<String> version) { public void setVersion(String version) {
this.version = version; this.version = version;
} }
public Field<String> getLastmetadataupdate() { public String getLastmetadataupdate() {
return lastmetadataupdate; return lastmetadataupdate;
} }
public void setLastmetadataupdate(Field<String> lastmetadataupdate) { public void setLastmetadataupdate(String lastmetadataupdate) {
this.lastmetadataupdate = lastmetadataupdate; this.lastmetadataupdate = lastmetadataupdate;
} }
public Field<String> getMetadataversionnumber() { public String getMetadataversionnumber() {
return metadataversionnumber; return metadataversionnumber;
} }
public void setMetadataversionnumber(Field<String> metadataversionnumber) { public void setMetadataversionnumber(String metadataversionnumber) {
this.metadataversionnumber = metadataversionnumber; this.metadataversionnumber = metadataversionnumber;
} }
@ -82,35 +82,4 @@ public class Dataset extends Result implements Serializable {
public void setGeolocation(List<GeoLocation> geolocation) { public void setGeolocation(List<GeoLocation> geolocation) {
this.geolocation = geolocation; this.geolocation = geolocation;
} }
@Override
public void mergeFrom(OafEntity e) {
super.mergeFrom(e);
if (!Dataset.class.isAssignableFrom(e.getClass())) {
return;
}
final Dataset d = (Dataset) e;
storagedate = d.getStoragedate() != null && compareTrust(this, e) < 0 ? d.getStoragedate() : storagedate;
device = d.getDevice() != null && compareTrust(this, e) < 0 ? d.getDevice() : device;
size = d.getSize() != null && compareTrust(this, e) < 0 ? d.getSize() : size;
version = d.getVersion() != null && compareTrust(this, e) < 0 ? d.getVersion() : version;
lastmetadataupdate = d.getLastmetadataupdate() != null && compareTrust(this, e) < 0
? d.getLastmetadataupdate()
: lastmetadataupdate;
metadataversionnumber = d.getMetadataversionnumber() != null && compareTrust(this, e) < 0
? d.getMetadataversionnumber()
: metadataversionnumber;
geolocation = mergeLists(geolocation, d.getGeolocation());
mergeOAFDataInfo(d);
}
} }

View File

@ -4,11 +4,8 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
public class Datasource extends OafEntity implements Serializable { public class Datasource extends Entity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1019089598408414496L; private static final long serialVersionUID = 1019089598408414496L;
@Deprecated @Deprecated
@ -23,83 +20,83 @@ public class Datasource extends OafEntity implements Serializable {
private Qualifier openairecompatibility; private Qualifier openairecompatibility;
private Field<String> officialname; private String officialname;
private Field<String> englishname; private String englishname;
private Field<String> websiteurl; private String websiteurl;
private Field<String> logourl; private String logourl;
private Field<String> contactemail; private String contactemail;
private Field<String> namespaceprefix; private String namespaceprefix;
private Field<String> latitude; private String latitude;
private Field<String> longitude; private String longitude;
private Field<String> dateofvalidation; private String dateofvalidation;
private Field<String> description; private String description;
private List<StructuredProperty> subjects; private List<StructuredProperty> subjects;
// opendoar specific fields (od*) // opendoar specific fields (od*)
@Deprecated @Deprecated
private Field<String> odnumberofitems; private String odnumberofitems;
@Deprecated @Deprecated
private Field<String> odnumberofitemsdate; private String odnumberofitemsdate;
@Deprecated @Deprecated
private Field<String> odpolicies; private String odpolicies;
@Deprecated @Deprecated
private List<Field<String>> odlanguages; private List<String> odlanguages;
private List<String> languages; private List<String> languages;
@Deprecated @Deprecated
private List<Field<String>> odcontenttypes; private List<String> odcontenttypes;
private List<Field<String>> accessinfopackage; private List<String> accessinfopackage;
// re3data fields // re3data fields
private Field<String> releasestartdate; private String releasestartdate;
private Field<String> releaseenddate; private String releaseenddate;
private Field<String> missionstatementurl; private String missionstatementurl;
@Deprecated @Deprecated
private Field<Boolean> dataprovider; private Boolean dataprovider;
@Deprecated @Deprecated
private Field<Boolean> serviceprovider; private Boolean serviceprovider;
// {open, restricted or closed} // {open, restricted or closed}
private Field<String> databaseaccesstype; private String databaseaccesstype;
// {open, restricted or closed} // {open, restricted or closed}
private Field<String> datauploadtype; private String datauploadtype;
// {feeRequired, registration, other} // {feeRequired, registration, other}
private Field<String> databaseaccessrestriction; private String databaseaccessrestriction;
// {feeRequired, registration, other} // {feeRequired, registration, other}
private Field<String> datauploadrestriction; private String datauploadrestriction;
@Deprecated @Deprecated
private Field<Boolean> versioning; private Boolean versioning;
private Boolean versioncontrol; private Boolean versioncontrol;
private Field<String> citationguidelineurl; private String citationguidelineurl;
private Field<String> pidsystems; private String pidsystems;
private Field<String> certificates; private String certificates;
@Deprecated @Deprecated
private List<KeyValue> policies; private List<KeyValue> policies;
@ -146,7 +143,7 @@ public class Datasource extends OafEntity implements Serializable {
return datasourcetype; return datasourcetype;
} }
public void setDatasourcetype(final Qualifier datasourcetype) { public void setDatasourcetype(Qualifier datasourcetype) {
this.datasourcetype = datasourcetype; this.datasourcetype = datasourcetype;
} }
@ -154,7 +151,7 @@ public class Datasource extends OafEntity implements Serializable {
return datasourcetypeui; return datasourcetypeui;
} }
public void setDatasourcetypeui(final Qualifier datasourcetypeui) { public void setDatasourcetypeui(Qualifier datasourcetypeui) {
this.datasourcetypeui = datasourcetypeui; this.datasourcetypeui = datasourcetypeui;
} }
@ -178,87 +175,87 @@ public class Datasource extends OafEntity implements Serializable {
return openairecompatibility; return openairecompatibility;
} }
public void setOpenairecompatibility(final Qualifier openairecompatibility) { public void setOpenairecompatibility(Qualifier openairecompatibility) {
this.openairecompatibility = openairecompatibility; this.openairecompatibility = openairecompatibility;
} }
public Field<String> getOfficialname() { public String getOfficialname() {
return officialname; return officialname;
} }
public void setOfficialname(final Field<String> officialname) { public void setOfficialname(String officialname) {
this.officialname = officialname; this.officialname = officialname;
} }
public Field<String> getEnglishname() { public String getEnglishname() {
return englishname; return englishname;
} }
public void setEnglishname(final Field<String> englishname) { public void setEnglishname(String englishname) {
this.englishname = englishname; this.englishname = englishname;
} }
public Field<String> getWebsiteurl() { public String getWebsiteurl() {
return websiteurl; return websiteurl;
} }
public void setWebsiteurl(final Field<String> websiteurl) { public void setWebsiteurl(String websiteurl) {
this.websiteurl = websiteurl; this.websiteurl = websiteurl;
} }
public Field<String> getLogourl() { public String getLogourl() {
return logourl; return logourl;
} }
public void setLogourl(final Field<String> logourl) { public void setLogourl(String logourl) {
this.logourl = logourl; this.logourl = logourl;
} }
public Field<String> getContactemail() { public String getContactemail() {
return contactemail; return contactemail;
} }
public void setContactemail(final Field<String> contactemail) { public void setContactemail(String contactemail) {
this.contactemail = contactemail; this.contactemail = contactemail;
} }
public Field<String> getNamespaceprefix() { public String getNamespaceprefix() {
return namespaceprefix; return namespaceprefix;
} }
public void setNamespaceprefix(final Field<String> namespaceprefix) { public void setNamespaceprefix(String namespaceprefix) {
this.namespaceprefix = namespaceprefix; this.namespaceprefix = namespaceprefix;
} }
public Field<String> getLatitude() { public String getLatitude() {
return latitude; return latitude;
} }
public void setLatitude(final Field<String> latitude) { public void setLatitude(String latitude) {
this.latitude = latitude; this.latitude = latitude;
} }
public Field<String> getLongitude() { public String getLongitude() {
return longitude; return longitude;
} }
public void setLongitude(final Field<String> longitude) { public void setLongitude(String longitude) {
this.longitude = longitude; this.longitude = longitude;
} }
public Field<String> getDateofvalidation() { public String getDateofvalidation() {
return dateofvalidation; return dateofvalidation;
} }
public void setDateofvalidation(final Field<String> dateofvalidation) { public void setDateofvalidation(String dateofvalidation) {
this.dateofvalidation = dateofvalidation; this.dateofvalidation = dateofvalidation;
} }
public Field<String> getDescription() { public String getDescription() {
return description; return description;
} }
public void setDescription(final Field<String> description) { public void setDescription(String description) {
this.description = description; this.description = description;
} }
@ -266,39 +263,39 @@ public class Datasource extends OafEntity implements Serializable {
return subjects; return subjects;
} }
public void setSubjects(final List<StructuredProperty> subjects) { public void setSubjects(List<StructuredProperty> subjects) {
this.subjects = subjects; this.subjects = subjects;
} }
public Field<String> getOdnumberofitems() { public String getOdnumberofitems() {
return odnumberofitems; return odnumberofitems;
} }
public void setOdnumberofitems(final Field<String> odnumberofitems) { public void setOdnumberofitems(String odnumberofitems) {
this.odnumberofitems = odnumberofitems; this.odnumberofitems = odnumberofitems;
} }
public Field<String> getOdnumberofitemsdate() { public String getOdnumberofitemsdate() {
return odnumberofitemsdate; return odnumberofitemsdate;
} }
public void setOdnumberofitemsdate(final Field<String> odnumberofitemsdate) { public void setOdnumberofitemsdate(String odnumberofitemsdate) {
this.odnumberofitemsdate = odnumberofitemsdate; this.odnumberofitemsdate = odnumberofitemsdate;
} }
public Field<String> getOdpolicies() { public String getOdpolicies() {
return odpolicies; return odpolicies;
} }
public void setOdpolicies(final Field<String> odpolicies) { public void setOdpolicies(String odpolicies) {
this.odpolicies = odpolicies; this.odpolicies = odpolicies;
} }
public List<Field<String>> getOdlanguages() { public List<String> getOdlanguages() {
return odlanguages; return odlanguages;
} }
public void setOdlanguages(final List<Field<String>> odlanguages) { public void setOdlanguages(List<String> odlanguages) {
this.odlanguages = odlanguages; this.odlanguages = odlanguages;
} }
@ -306,103 +303,103 @@ public class Datasource extends OafEntity implements Serializable {
return languages; return languages;
} }
public void setLanguages(final List<String> languages) { public void setLanguages(List<String> languages) {
this.languages = languages; this.languages = languages;
} }
public List<Field<String>> getOdcontenttypes() { public List<String> getOdcontenttypes() {
return odcontenttypes; return odcontenttypes;
} }
public void setOdcontenttypes(final List<Field<String>> odcontenttypes) { public void setOdcontenttypes(List<String> odcontenttypes) {
this.odcontenttypes = odcontenttypes; this.odcontenttypes = odcontenttypes;
} }
public List<Field<String>> getAccessinfopackage() { public List<String> getAccessinfopackage() {
return accessinfopackage; return accessinfopackage;
} }
public void setAccessinfopackage(final List<Field<String>> accessinfopackage) { public void setAccessinfopackage(List<String> accessinfopackage) {
this.accessinfopackage = accessinfopackage; this.accessinfopackage = accessinfopackage;
} }
public Field<String> getReleasestartdate() { public String getReleasestartdate() {
return releasestartdate; return releasestartdate;
} }
public void setReleasestartdate(final Field<String> releasestartdate) { public void setReleasestartdate(String releasestartdate) {
this.releasestartdate = releasestartdate; this.releasestartdate = releasestartdate;
} }
public Field<String> getReleaseenddate() { public String getReleaseenddate() {
return releaseenddate; return releaseenddate;
} }
public void setReleaseenddate(final Field<String> releaseenddate) { public void setReleaseenddate(String releaseenddate) {
this.releaseenddate = releaseenddate; this.releaseenddate = releaseenddate;
} }
public Field<String> getMissionstatementurl() { public String getMissionstatementurl() {
return missionstatementurl; return missionstatementurl;
} }
public void setMissionstatementurl(final Field<String> missionstatementurl) { public void setMissionstatementurl(String missionstatementurl) {
this.missionstatementurl = missionstatementurl; this.missionstatementurl = missionstatementurl;
} }
public Field<Boolean> getDataprovider() { public Boolean getDataprovider() {
return dataprovider; return dataprovider;
} }
public void setDataprovider(final Field<Boolean> dataprovider) { public void setDataprovider(Boolean dataprovider) {
this.dataprovider = dataprovider; this.dataprovider = dataprovider;
} }
public Field<Boolean> getServiceprovider() { public Boolean getServiceprovider() {
return serviceprovider; return serviceprovider;
} }
public void setServiceprovider(final Field<Boolean> serviceprovider) { public void setServiceprovider(Boolean serviceprovider) {
this.serviceprovider = serviceprovider; this.serviceprovider = serviceprovider;
} }
public Field<String> getDatabaseaccesstype() { public String getDatabaseaccesstype() {
return databaseaccesstype; return databaseaccesstype;
} }
public void setDatabaseaccesstype(final Field<String> databaseaccesstype) { public void setDatabaseaccesstype(String databaseaccesstype) {
this.databaseaccesstype = databaseaccesstype; this.databaseaccesstype = databaseaccesstype;
} }
public Field<String> getDatauploadtype() { public String getDatauploadtype() {
return datauploadtype; return datauploadtype;
} }
public void setDatauploadtype(final Field<String> datauploadtype) { public void setDatauploadtype(String datauploadtype) {
this.datauploadtype = datauploadtype; this.datauploadtype = datauploadtype;
} }
public Field<String> getDatabaseaccessrestriction() { public String getDatabaseaccessrestriction() {
return databaseaccessrestriction; return databaseaccessrestriction;
} }
public void setDatabaseaccessrestriction(final Field<String> databaseaccessrestriction) { public void setDatabaseaccessrestriction(String databaseaccessrestriction) {
this.databaseaccessrestriction = databaseaccessrestriction; this.databaseaccessrestriction = databaseaccessrestriction;
} }
public Field<String> getDatauploadrestriction() { public String getDatauploadrestriction() {
return datauploadrestriction; return datauploadrestriction;
} }
public void setDatauploadrestriction(final Field<String> datauploadrestriction) { public void setDatauploadrestriction(String datauploadrestriction) {
this.datauploadrestriction = datauploadrestriction; this.datauploadrestriction = datauploadrestriction;
} }
public Field<Boolean> getVersioning() { public Boolean getVersioning() {
return versioning; return versioning;
} }
public void setVersioning(final Field<Boolean> versioning) { public void setVersioning(Boolean versioning) {
this.versioning = versioning; this.versioning = versioning;
} }
@ -414,27 +411,27 @@ public class Datasource extends OafEntity implements Serializable {
this.versioncontrol = versioncontrol; this.versioncontrol = versioncontrol;
} }
public Field<String> getCitationguidelineurl() { public String getCitationguidelineurl() {
return citationguidelineurl; return citationguidelineurl;
} }
public void setCitationguidelineurl(final Field<String> citationguidelineurl) { public void setCitationguidelineurl(String citationguidelineurl) {
this.citationguidelineurl = citationguidelineurl; this.citationguidelineurl = citationguidelineurl;
} }
public Field<String> getPidsystems() { public String getPidsystems() {
return pidsystems; return pidsystems;
} }
public void setPidsystems(final Field<String> pidsystems) { public void setPidsystems(String pidsystems) {
this.pidsystems = pidsystems; this.pidsystems = pidsystems;
} }
public Field<String> getCertificates() { public String getCertificates() {
return certificates; return certificates;
} }
public void setCertificates(final Field<String> certificates) { public void setCertificates(String certificates) {
this.certificates = certificates; this.certificates = certificates;
} }
@ -442,7 +439,7 @@ public class Datasource extends OafEntity implements Serializable {
return policies; return policies;
} }
public void setPolicies(final List<KeyValue> policies) { public void setPolicies(List<KeyValue> policies) {
this.policies = policies; this.policies = policies;
} }
@ -450,7 +447,7 @@ public class Datasource extends OafEntity implements Serializable {
return journal; return journal;
} }
public void setJournal(final Journal journal) { public void setJournal(Journal journal) {
this.journal = journal; this.journal = journal;
} }
@ -458,7 +455,7 @@ public class Datasource extends OafEntity implements Serializable {
return researchentitytypes; return researchentitytypes;
} }
public void setResearchentitytypes(final List<String> researchentitytypes) { public void setResearchentitytypes(List<String> researchentitytypes) {
this.researchentitytypes = researchentitytypes; this.researchentitytypes = researchentitytypes;
} }
@ -466,7 +463,7 @@ public class Datasource extends OafEntity implements Serializable {
return providedproducttypes; return providedproducttypes;
} }
public void setProvidedproducttypes(final List<String> providedproducttypes) { public void setProvidedproducttypes(List<String> providedproducttypes) {
this.providedproducttypes = providedproducttypes; this.providedproducttypes = providedproducttypes;
} }
@ -474,7 +471,7 @@ public class Datasource extends OafEntity implements Serializable {
return jurisdiction; return jurisdiction;
} }
public void setJurisdiction(final Qualifier jurisdiction) { public void setJurisdiction(Qualifier jurisdiction) {
this.jurisdiction = jurisdiction; this.jurisdiction = jurisdiction;
} }
@ -482,7 +479,7 @@ public class Datasource extends OafEntity implements Serializable {
return thematic; return thematic;
} }
public void setThematic(final Boolean thematic) { public void setThematic(Boolean thematic) {
this.thematic = thematic; this.thematic = thematic;
} }
@ -490,7 +487,7 @@ public class Datasource extends OafEntity implements Serializable {
return contentpolicies; return contentpolicies;
} }
public void setContentpolicies(final List<Qualifier> contentpolicies) { public void setContentpolicies(List<Qualifier> contentpolicies) {
this.contentpolicies = contentpolicies; this.contentpolicies = contentpolicies;
} }
@ -530,10 +527,26 @@ public class Datasource extends OafEntity implements Serializable {
return consenttermsofuse; return consenttermsofuse;
} }
public void setConsenttermsofuse(final Boolean consenttermsofuse) { public void setConsenttermsofuse(Boolean consenttermsofuse) {
this.consenttermsofuse = consenttermsofuse; this.consenttermsofuse = consenttermsofuse;
} }
public Boolean getFulltextdownload() {
return fulltextdownload;
}
public void setFulltextdownload(Boolean fulltextdownload) {
this.fulltextdownload = fulltextdownload;
}
public String getConsenttermsofusedate() {
return consenttermsofusedate;
}
public void setConsenttermsofusedate(String consenttermsofusedate) {
this.consenttermsofusedate = consenttermsofusedate;
}
public String getLastconsenttermsofusedate() { public String getLastconsenttermsofusedate() {
return lastconsenttermsofusedate; return lastconsenttermsofusedate;
} }
@ -542,22 +555,6 @@ public class Datasource extends OafEntity implements Serializable {
this.lastconsenttermsofusedate = lastconsenttermsofusedate; this.lastconsenttermsofusedate = lastconsenttermsofusedate;
} }
public Boolean getFulltextdownload() {
return fulltextdownload;
}
public void setFulltextdownload(final Boolean fulltextdownload) {
this.fulltextdownload = fulltextdownload;
}
public String getConsenttermsofusedate() {
return consenttermsofusedate;
}
public void setConsenttermsofusedate(final String consenttermsofusedate) {
this.consenttermsofusedate = consenttermsofusedate;
}
public List<EoscIfGuidelines> getEoscifguidelines() { public List<EoscIfGuidelines> getEoscifguidelines() {
return eoscifguidelines; return eoscifguidelines;
} }
@ -565,10 +562,4 @@ public class Datasource extends OafEntity implements Serializable {
public void setEoscifguidelines(List<EoscIfGuidelines> eoscifguidelines) { public void setEoscifguidelines(List<EoscIfGuidelines> eoscifguidelines) {
this.eoscifguidelines = eoscifguidelines; this.eoscifguidelines = eoscifguidelines;
} }
@Override
public void mergeFrom(final OafEntity e) {
super.mergeFrom(e);
}
} }

View File

@ -5,21 +5,50 @@ import java.io.Serializable;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public abstract class OafEntity extends Oaf implements Serializable { public abstract class Entity extends Oaf implements Serializable {
private String id; private String id;
private List<String> originalId; private List<String> originalId;
/**
* The list of datasource id/name pairs providing this Oaf.
*/
protected List<KeyValue> collectedfrom;
private Long lastupdatetimestamp;
private List<StructuredProperty> pid; private List<StructuredProperty> pid;
private String dateofcollection; private String dateofcollection;
private String dateoftransformation; private String dateoftransformation;
/**
* The Measures.
*/
private List<Measure> measures;
private List<ExtraInfo> extraInfo; private List<ExtraInfo> extraInfo;
private OAIProvenance oaiprovenance; private EntityDataInfo dataInfo;
public List<KeyValue> getCollectedfrom() {
return collectedfrom;
}
public void setCollectedfrom(List<KeyValue> collectedfrom) {
this.collectedfrom = collectedfrom;
}
public Long getLastupdatetimestamp() {
return lastupdatetimestamp;
}
public void setLastupdatetimestamp(Long lastupdatetimestamp) {
this.lastupdatetimestamp = lastupdatetimestamp;
}
public String getId() { public String getId() {
return id; return id;
@ -57,6 +86,24 @@ public abstract class OafEntity extends Oaf implements Serializable {
return dateoftransformation; return dateoftransformation;
} }
/**
* Gets measures.
*
* @return the measures
*/
public List<Measure> getMeasures() {
return measures;
}
/**
* Sets measures.
*
* @param measures the measures
*/
public void setMeasures(List<Measure> measures) {
this.measures = measures;
}
public void setDateoftransformation(String dateoftransformation) { public void setDateoftransformation(String dateoftransformation) {
this.dateoftransformation = dateoftransformation; this.dateoftransformation = dateoftransformation;
} }
@ -69,43 +116,12 @@ public abstract class OafEntity extends Oaf implements Serializable {
this.extraInfo = extraInfo; this.extraInfo = extraInfo;
} }
public OAIProvenance getOaiprovenance() { public EntityDataInfo getDataInfo() {
return oaiprovenance; return dataInfo;
} }
public void setOaiprovenance(OAIProvenance oaiprovenance) { public void setDataInfo(EntityDataInfo dataInfo) {
this.oaiprovenance = oaiprovenance; this.dataInfo = dataInfo;
}
public void mergeFrom(OafEntity e) {
super.mergeFrom(e);
originalId = mergeLists(originalId, e.getOriginalId());
pid = mergeLists(pid, e.getPid());
if (e.getDateofcollection() != null && compareTrust(this, e) < 0)
dateofcollection = e.getDateofcollection();
if (e.getDateoftransformation() != null && compareTrust(this, e) < 0)
dateoftransformation = e.getDateoftransformation();
extraInfo = mergeLists(extraInfo, e.getExtraInfo());
if (e.getOaiprovenance() != null && compareTrust(this, e) < 0)
oaiprovenance = e.getOaiprovenance();
}
@SafeVarargs
protected final <T> List<T> mergeLists(final List<T>... lists) {
return Arrays
.stream(lists)
.filter(Objects::nonNull)
.flatMap(List::stream)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
} }
@Override @Override
@ -116,7 +132,7 @@ public abstract class OafEntity extends Oaf implements Serializable {
return false; return false;
if (!super.equals(o)) if (!super.equals(o))
return false; return false;
OafEntity oafEntity = (OafEntity) o; Entity oafEntity = (Entity) o;
return Objects.equals(id, oafEntity.id); return Objects.equals(id, oafEntity.id);
} }
@ -124,4 +140,5 @@ public abstract class OafEntity extends Oaf implements Serializable {
public int hashCode() { public int hashCode() {
return Objects.hash(super.hashCode(), id); return Objects.hash(super.hashCode(), id);
} }
} }

View File

@ -0,0 +1,44 @@
package eu.dnetlib.dhp.schema.oaf;
import java.util.Objects;
public class EntityDataInfo extends DataInfo {
private Boolean invisible = false;
private Boolean deletedbyinference = false;
public Boolean getInvisible() {
return invisible;
}
public void setInvisible(Boolean invisible) {
this.invisible = invisible;
}
public Boolean getDeletedbyinference() {
return deletedbyinference;
}
public void setDeletedbyinference(Boolean deletedbyinference) {
this.deletedbyinference = deletedbyinference;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
EntityDataInfo dataInfo = (EntityDataInfo) o;
return super.equals(o) && Objects.equals(invisible, dataInfo.invisible)
&& Objects.equals(deletedbyinference, dataInfo.deletedbyinference);
}
@Override
public int hashCode() {
return Objects
.hash(super.hashCode(), invisible, deletedbyinference);
}
}

View File

@ -27,9 +27,6 @@ public class ExternalReference implements Serializable {
// maps the oaf:reference/@query attribute // maps the oaf:reference/@query attribute
private String query; private String query;
// ExternalReferences might be also inferred
private DataInfo dataInfo;
public String getSitename() { public String getSitename() {
return sitename; return sitename;
} }
@ -86,14 +83,6 @@ public class ExternalReference implements Serializable {
this.query = query; this.query = query;
} }
public DataInfo getDataInfo() {
return dataInfo;
}
public void setDataInfo(DataInfo dataInfo) {
this.dataInfo = dataInfo;
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) if (this == o)
@ -106,15 +95,14 @@ public class ExternalReference implements Serializable {
&& Objects.equals(url, that.url) && Objects.equals(url, that.url)
&& Objects.equals(qualifier, that.qualifier) && Objects.equals(qualifier, that.qualifier)
&& Objects.equals(refidentifier, that.refidentifier) && Objects.equals(refidentifier, that.refidentifier)
&& Objects.equals(query, that.query) && Objects.equals(query, that.query);
&& Objects.equals(dataInfo, that.dataInfo);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects return Objects
.hash( .hash(
sitename, label, url, qualifier, refidentifier, query, dataInfo); sitename, label, url, qualifier, refidentifier, query);
} }
} }

View File

@ -1,45 +0,0 @@
package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
import java.util.Objects;
public class Field<T> 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;
}
@Override
public int hashCode() {
return getValue() == null ? 0 : getValue().hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Field<T> other = (Field<T>) obj;
return Objects.equals(getValue(), other.getValue());
}
}

View File

@ -6,7 +6,7 @@ import java.util.List;
public class Instance implements Serializable { public class Instance implements Serializable {
private Field<String> license; private License license;
private AccessRight accessright; private AccessRight accessright;
@ -16,6 +16,8 @@ public class Instance implements Serializable {
private List<String> url; private List<String> url;
private List<String> fulltext;
// other research products specifc // other research products specifc
private String distributionlocation; private String distributionlocation;
@ -25,25 +27,23 @@ public class Instance implements Serializable {
private List<StructuredProperty> alternateIdentifier; private List<StructuredProperty> alternateIdentifier;
private Field<String> dateofacceptance; private String dateofacceptance;
// ( article | book ) processing charges. Defined here to cope with possible wrongly typed // ( article | book ) processing charges. Defined here to cope with possible wrongly typed
// results // results
private Field<String> processingchargeamount; private String processingchargeamount;
// currency - alphabetic code describe in ISO-4217. Defined here to cope with possible wrongly // currency - alphabetic code describe in ISO-4217. Defined here to cope with possible wrongly
// typed results // typed results
private Field<String> processingchargecurrency; private String processingchargecurrency;
private Qualifier refereed; // peer-review status private Qualifier refereed; // peer-review status
private List<Measure> measures; public License getLicense() {
public Field<String> getLicense() {
return license; return license;
} }
public void setLicense(Field<String> license) { public void setLicense(License license) {
this.license = license; this.license = license;
} }
@ -79,6 +79,14 @@ public class Instance implements Serializable {
this.url = url; this.url = url;
} }
public List<String> getFulltext() {
return fulltext;
}
public void setFulltext(List<String> fulltext) {
this.fulltext = fulltext;
}
public String getDistributionlocation() { public String getDistributionlocation() {
return distributionlocation; return distributionlocation;
} }
@ -103,11 +111,11 @@ public class Instance implements Serializable {
this.pid = pid; this.pid = pid;
} }
public Field<String> getDateofacceptance() { public String getDateofacceptance() {
return dateofacceptance; return dateofacceptance;
} }
public void setDateofacceptance(Field<String> dateofacceptance) { public void setDateofacceptance(String dateofacceptance) {
this.dateofacceptance = dateofacceptance; this.dateofacceptance = dateofacceptance;
} }
@ -119,19 +127,19 @@ public class Instance implements Serializable {
this.alternateIdentifier = alternateIdentifier; this.alternateIdentifier = alternateIdentifier;
} }
public Field<String> getProcessingchargeamount() { public String getProcessingchargeamount() {
return processingchargeamount; return processingchargeamount;
} }
public void setProcessingchargeamount(Field<String> processingchargeamount) { public void setProcessingchargeamount(String processingchargeamount) {
this.processingchargeamount = processingchargeamount; this.processingchargeamount = processingchargeamount;
} }
public Field<String> getProcessingchargecurrency() { public String getProcessingchargecurrency() {
return processingchargecurrency; return processingchargecurrency;
} }
public void setProcessingchargecurrency(Field<String> processingchargecurrency) { public void setProcessingchargecurrency(String processingchargecurrency) {
this.processingchargecurrency = processingchargecurrency; this.processingchargecurrency = processingchargecurrency;
} }
@ -143,14 +151,6 @@ public class Instance implements Serializable {
this.refereed = refereed; this.refereed = refereed;
} }
public List<Measure> getMeasures() {
return measures;
}
public void setMeasures(List<Measure> measures) {
this.measures = measures;
}
public String toComparableString() { public String toComparableString() {
return String return String
.format( .format(

View File

@ -13,8 +13,6 @@ public class KeyValue implements Serializable {
private String value; private String value;
private DataInfo dataInfo;
public String getKey() { public String getKey() {
return key; return key;
} }
@ -31,14 +29,6 @@ public class KeyValue implements Serializable {
this.value = value; this.value = value;
} }
public DataInfo getDataInfo() {
return dataInfo;
}
public void setDataInfo(DataInfo dataInfo) {
this.dataInfo = dataInfo;
}
public String toComparableString() { public String toComparableString() {
return isBlank() return isBlank()
? "" ? ""

View File

@ -0,0 +1,16 @@
package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
public class License implements Serializable {
private String url;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}

View File

@ -1,108 +1,6 @@
package eu.dnetlib.dhp.schema.oaf; package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public abstract class Oaf implements Serializable { public class Oaf implements Serializable {
/**
* The list of datasource id/name pairs providing this relationship.
*/
protected List<KeyValue> collectedfrom;
private DataInfo dataInfo;
private Long lastupdatetimestamp;
public List<KeyValue> getCollectedfrom() {
return collectedfrom;
}
public void setCollectedfrom(List<KeyValue> collectedfrom) {
this.collectedfrom = collectedfrom;
}
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;
}
public void mergeFrom(Oaf o) {
if (Objects.isNull(o)) {
return;
}
setCollectedfrom(
Stream
.concat(
Optional
.ofNullable(getCollectedfrom())
.map(Collection::stream)
.orElse(Stream.empty()),
Optional
.ofNullable(o.getCollectedfrom())
.map(Collection::stream)
.orElse(Stream.empty()))
.distinct() // relies on KeyValue.equals
.collect(Collectors.toList()));
setLastupdatetimestamp(
Math
.max(
Optional.ofNullable(getLastupdatetimestamp()).orElse(0L),
Optional.ofNullable(o.getLastupdatetimestamp()).orElse(0L)));
}
public void mergeOAFDataInfo(Oaf o) {
Optional.ofNullable(o)
.ifPresent(other -> Optional.ofNullable(other.getDataInfo())
.ifPresent(otherDataInfo -> Optional.ofNullable(this.getDataInfo())
.ifPresent(thisDataInfo -> {
if (compareTrust(this, other) < 0 || thisDataInfo.getInvisible()) {
setDataInfo(otherDataInfo);
}
})));
}
protected String extractTrust(Oaf e) {
if (e == null || e.getDataInfo() == null || e.getDataInfo().getTrust() == null)
return "0.0";
return e.getDataInfo().getTrust();
}
protected int compareTrust(Oaf a, Oaf b) {
return extractTrust(a).compareTo(extractTrust(b));
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
Oaf oaf = (Oaf) o;
return Objects.equals(getDataInfo(), oaf.getDataInfo())
&& Objects.equals(lastupdatetimestamp, oaf.lastupdatetimestamp);
}
@Override
public int hashCode() {
return Objects.hash(dataInfo, lastupdatetimestamp);
}
} }

View File

@ -4,158 +4,158 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
public class Organization extends OafEntity implements Serializable { public class Organization extends Entity implements Serializable {
private Field<String> legalshortname; private String legalshortname;
private Field<String> legalname; private String legalname;
private List<Field<String>> alternativeNames; private List<String> alternativeNames;
private Field<String> websiteurl; private String websiteurl;
private Field<String> logourl; private String logourl;
private Field<String> eclegalbody; private String eclegalbody;
private Field<String> eclegalperson; private String eclegalperson;
private Field<String> ecnonprofit; private String ecnonprofit;
private Field<String> ecresearchorganization; private String ecresearchorganization;
private Field<String> echighereducation; private String echighereducation;
private Field<String> ecinternationalorganizationeurinterests; private String ecinternationalorganizationeurinterests;
private Field<String> ecinternationalorganization; private String ecinternationalorganization;
private Field<String> ecenterprise; private String ecenterprise;
private Field<String> ecsmevalidated; private String ecsmevalidated;
private Field<String> ecnutscode; private String ecnutscode;
private Qualifier country; private Qualifier country;
public Field<String> getLegalshortname() { public String getLegalshortname() {
return legalshortname; return legalshortname;
} }
public void setLegalshortname(Field<String> legalshortname) { public void setLegalshortname(String legalshortname) {
this.legalshortname = legalshortname; this.legalshortname = legalshortname;
} }
public Field<String> getLegalname() { public String getLegalname() {
return legalname; return legalname;
} }
public void setLegalname(Field<String> legalname) { public void setLegalname(String legalname) {
this.legalname = legalname; this.legalname = legalname;
} }
public List<Field<String>> getAlternativeNames() { public List<String> getAlternativeNames() {
return alternativeNames; return alternativeNames;
} }
public void setAlternativeNames(List<Field<String>> alternativeNames) { public void setAlternativeNames(List<String> alternativeNames) {
this.alternativeNames = alternativeNames; this.alternativeNames = alternativeNames;
} }
public Field<String> getWebsiteurl() { public String getWebsiteurl() {
return websiteurl; return websiteurl;
} }
public void setWebsiteurl(Field<String> websiteurl) { public void setWebsiteurl(String websiteurl) {
this.websiteurl = websiteurl; this.websiteurl = websiteurl;
} }
public Field<String> getLogourl() { public String getLogourl() {
return logourl; return logourl;
} }
public void setLogourl(Field<String> logourl) { public void setLogourl(String logourl) {
this.logourl = logourl; this.logourl = logourl;
} }
public Field<String> getEclegalbody() { public String getEclegalbody() {
return eclegalbody; return eclegalbody;
} }
public void setEclegalbody(Field<String> eclegalbody) { public void setEclegalbody(String eclegalbody) {
this.eclegalbody = eclegalbody; this.eclegalbody = eclegalbody;
} }
public Field<String> getEclegalperson() { public String getEclegalperson() {
return eclegalperson; return eclegalperson;
} }
public void setEclegalperson(Field<String> eclegalperson) { public void setEclegalperson(String eclegalperson) {
this.eclegalperson = eclegalperson; this.eclegalperson = eclegalperson;
} }
public Field<String> getEcnonprofit() { public String getEcnonprofit() {
return ecnonprofit; return ecnonprofit;
} }
public void setEcnonprofit(Field<String> ecnonprofit) { public void setEcnonprofit(String ecnonprofit) {
this.ecnonprofit = ecnonprofit; this.ecnonprofit = ecnonprofit;
} }
public Field<String> getEcresearchorganization() { public String getEcresearchorganization() {
return ecresearchorganization; return ecresearchorganization;
} }
public void setEcresearchorganization(Field<String> ecresearchorganization) { public void setEcresearchorganization(String ecresearchorganization) {
this.ecresearchorganization = ecresearchorganization; this.ecresearchorganization = ecresearchorganization;
} }
public Field<String> getEchighereducation() { public String getEchighereducation() {
return echighereducation; return echighereducation;
} }
public void setEchighereducation(Field<String> echighereducation) { public void setEchighereducation(String echighereducation) {
this.echighereducation = echighereducation; this.echighereducation = echighereducation;
} }
public Field<String> getEcinternationalorganizationeurinterests() { public String getEcinternationalorganizationeurinterests() {
return ecinternationalorganizationeurinterests; return ecinternationalorganizationeurinterests;
} }
public void setEcinternationalorganizationeurinterests( public void setEcinternationalorganizationeurinterests(
Field<String> ecinternationalorganizationeurinterests) { String ecinternationalorganizationeurinterests) {
this.ecinternationalorganizationeurinterests = ecinternationalorganizationeurinterests; this.ecinternationalorganizationeurinterests = ecinternationalorganizationeurinterests;
} }
public Field<String> getEcinternationalorganization() { public String getEcinternationalorganization() {
return ecinternationalorganization; return ecinternationalorganization;
} }
public void setEcinternationalorganization(Field<String> ecinternationalorganization) { public void setEcinternationalorganization(String ecinternationalorganization) {
this.ecinternationalorganization = ecinternationalorganization; this.ecinternationalorganization = ecinternationalorganization;
} }
public Field<String> getEcenterprise() { public String getEcenterprise() {
return ecenterprise; return ecenterprise;
} }
public void setEcenterprise(Field<String> ecenterprise) { public void setEcenterprise(String ecenterprise) {
this.ecenterprise = ecenterprise; this.ecenterprise = ecenterprise;
} }
public Field<String> getEcsmevalidated() { public String getEcsmevalidated() {
return ecsmevalidated; return ecsmevalidated;
} }
public void setEcsmevalidated(Field<String> ecsmevalidated) { public void setEcsmevalidated(String ecsmevalidated) {
this.ecsmevalidated = ecsmevalidated; this.ecsmevalidated = ecsmevalidated;
} }
public Field<String> getEcnutscode() { public String getEcnutscode() {
return ecnutscode; return ecnutscode;
} }
public void setEcnutscode(Field<String> ecnutscode) { public void setEcnutscode(String ecnutscode) {
this.ecnutscode = ecnutscode; this.ecnutscode = ecnutscode;
} }
@ -167,48 +167,4 @@ public class Organization extends OafEntity implements Serializable {
this.country = country; this.country = country;
} }
@Override
public void mergeFrom(OafEntity e) {
super.mergeFrom(e);
if (!Organization.class.isAssignableFrom(e.getClass())) {
return;
}
final Organization o = (Organization) e;
legalshortname = o.getLegalshortname() != null && compareTrust(this, e) < 0
? o.getLegalshortname()
: legalshortname;
legalname = o.getLegalname() != null && compareTrust(this, e) < 0 ? o.getLegalname() : legalname;
alternativeNames = mergeLists(o.getAlternativeNames(), alternativeNames);
websiteurl = o.getWebsiteurl() != null && compareTrust(this, e) < 0 ? o.getWebsiteurl() : websiteurl;
logourl = o.getLogourl() != null && compareTrust(this, e) < 0 ? o.getLogourl() : logourl;
eclegalbody = o.getEclegalbody() != null && compareTrust(this, e) < 0 ? o.getEclegalbody() : eclegalbody;
eclegalperson = o.getEclegalperson() != null && compareTrust(this, e) < 0
? o.getEclegalperson()
: eclegalperson;
ecnonprofit = o.getEcnonprofit() != null && compareTrust(this, e) < 0 ? o.getEcnonprofit() : ecnonprofit;
ecresearchorganization = o.getEcresearchorganization() != null && compareTrust(this, e) < 0
? o.getEcresearchorganization()
: ecresearchorganization;
echighereducation = o.getEchighereducation() != null && compareTrust(this, e) < 0
? o.getEchighereducation()
: echighereducation;
ecinternationalorganizationeurinterests = o.getEcinternationalorganizationeurinterests() != null
&& compareTrust(this, e) < 0
? o.getEcinternationalorganizationeurinterests()
: ecinternationalorganizationeurinterests;
ecinternationalorganization = o.getEcinternationalorganization() != null && compareTrust(this, e) < 0
? o.getEcinternationalorganization()
: ecinternationalorganization;
ecenterprise = o.getEcenterprise() != null && compareTrust(this, e) < 0
? o.getEcenterprise()
: ecenterprise;
ecsmevalidated = o.getEcsmevalidated() != null && compareTrust(this, e) < 0
? o.getEcsmevalidated()
: ecsmevalidated;
ecnutscode = o.getEcnutscode() != null && compareTrust(this, e) < 0 ? o.getEcnutscode() : ecnutscode;
country = o.getCountry() != null && compareTrust(this, e) < 0 ? o.getCountry() : country;
mergeOAFDataInfo(o);
}
} }

View File

@ -8,53 +8,37 @@ import eu.dnetlib.dhp.schema.common.ModelConstants;
public class OtherResearchProduct extends Result implements Serializable { public class OtherResearchProduct extends Result implements Serializable {
private List<Field<String>> contactperson; private List<String> contactperson;
private List<Field<String>> contactgroup; private List<String> contactgroup;
private List<Field<String>> tool; private List<String> tool;
public OtherResearchProduct() { public OtherResearchProduct() {
setResulttype(ModelConstants.ORP_DEFAULT_RESULTTYPE); setResulttype(ModelConstants.ORP_RESULTTYPE_CLASSID);
} }
public List<Field<String>> getContactperson() { public List<String> getContactperson() {
return contactperson; return contactperson;
} }
public void setContactperson(List<Field<String>> contactperson) { public void setContactperson(List<String> contactperson) {
this.contactperson = contactperson; this.contactperson = contactperson;
} }
public List<Field<String>> getContactgroup() { public List<String> getContactgroup() {
return contactgroup; return contactgroup;
} }
public void setContactgroup(List<Field<String>> contactgroup) { public void setContactgroup(List<String> contactgroup) {
this.contactgroup = contactgroup; this.contactgroup = contactgroup;
} }
public List<Field<String>> getTool() { public List<String> getTool() {
return tool; return tool;
} }
public void setTool(List<Field<String>> tool) { public void setTool(List<String> tool) {
this.tool = tool; this.tool = tool;
} }
@Override
public void mergeFrom(OafEntity e) {
super.mergeFrom(e);
if (!OtherResearchProduct.class.isAssignableFrom(e.getClass())) {
return;
}
OtherResearchProduct o = (OtherResearchProduct) e;
contactperson = mergeLists(contactperson, o.getContactperson());
contactgroup = mergeLists(contactgroup, o.getContactgroup());
tool = mergeLists(tool, o.getTool());
mergeOAFDataInfo(e);
}
} }

View File

@ -4,57 +4,55 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.StringUtils; public class Project extends Entity implements Serializable {
public class Project extends OafEntity implements Serializable { private String websiteurl;
private Field<String> websiteurl; private String code;
private Field<String> code; private String acronym;
private Field<String> acronym; private String title;
private Field<String> title; private String startdate;
private Field<String> startdate; private String enddate;
private Field<String> enddate; private String callidentifier;
private Field<String> callidentifier; private String keywords;
private Field<String> keywords; private String duration;
private Field<String> duration; private String ecsc39;
private Field<String> ecsc39; private String oamandatepublications;
private Field<String> oamandatepublications; private String ecarticle29_3;
private Field<String> ecarticle29_3;
private List<StructuredProperty> subjects; private List<StructuredProperty> subjects;
private List<Field<String>> fundingtree; private List<String> fundingtree;
private Qualifier contracttype; private Qualifier contracttype;
private Field<String> optional1; private String optional1;
private Field<String> optional2; private String optional2;
private Field<String> jsonextrainfo; private String jsonextrainfo;
private Field<String> contactfullname; private String contactfullname;
private Field<String> contactfax; private String contactfax;
private Field<String> contactphone; private String contactphone;
private Field<String> contactemail; private String contactemail;
private Field<String> summary; private String summary;
private Field<String> currency; private String currency;
private Float totalcost; private Float totalcost;
@ -64,7 +62,7 @@ public class Project extends OafEntity implements Serializable {
private String h2020topicdescription; private String h2020topicdescription;
private List<H2020Classification> h2020classification; private List<H2020Classification>h2020classification;
public String getH2020topicdescription() { public String getH2020topicdescription() {
return h2020topicdescription; return h2020topicdescription;
@ -90,99 +88,99 @@ public class Project extends OafEntity implements Serializable {
this.h2020classification = h2020classification; this.h2020classification = h2020classification;
} }
public Field<String> getWebsiteurl() { public String getWebsiteurl() {
return websiteurl; return websiteurl;
} }
public void setWebsiteurl(Field<String> websiteurl) { public void setWebsiteurl( String websiteurl) {
this.websiteurl = websiteurl; this.websiteurl = websiteurl;
} }
public Field<String> getCode() { public String getCode() {
return code; return code;
} }
public void setCode(Field<String> code) { public void setCode( String code) {
this.code = code; this.code = code;
} }
public Field<String> getAcronym() { public String getAcronym() {
return acronym; return acronym;
} }
public void setAcronym(Field<String> acronym) { public void setAcronym( String acronym) {
this.acronym = acronym; this.acronym = acronym;
} }
public Field<String> getTitle() { public String getTitle() {
return title; return title;
} }
public void setTitle(Field<String> title) { public void setTitle( String title) {
this.title = title; this.title = title;
} }
public Field<String> getStartdate() { public String getStartdate() {
return startdate; return startdate;
} }
public void setStartdate(Field<String> startdate) { public void setStartdate( String startdate) {
this.startdate = startdate; this.startdate = startdate;
} }
public Field<String> getEnddate() { public String getEnddate() {
return enddate; return enddate;
} }
public void setEnddate(Field<String> enddate) { public void setEnddate( String enddate) {
this.enddate = enddate; this.enddate = enddate;
} }
public Field<String> getCallidentifier() { public String getCallidentifier() {
return callidentifier; return callidentifier;
} }
public void setCallidentifier(Field<String> callidentifier) { public void setCallidentifier( String callidentifier) {
this.callidentifier = callidentifier; this.callidentifier = callidentifier;
} }
public Field<String> getKeywords() { public String getKeywords() {
return keywords; return keywords;
} }
public void setKeywords(Field<String> keywords) { public void setKeywords( String keywords) {
this.keywords = keywords; this.keywords = keywords;
} }
public Field<String> getDuration() { public String getDuration() {
return duration; return duration;
} }
public void setDuration(Field<String> duration) { public void setDuration( String duration) {
this.duration = duration; this.duration = duration;
} }
public Field<String> getEcsc39() { public String getEcsc39() {
return ecsc39; return ecsc39;
} }
public void setEcsc39(Field<String> ecsc39) { public void setEcsc39( String ecsc39) {
this.ecsc39 = ecsc39; this.ecsc39 = ecsc39;
} }
public Field<String> getOamandatepublications() { public String getOamandatepublications() {
return oamandatepublications; return oamandatepublications;
} }
public void setOamandatepublications(Field<String> oamandatepublications) { public void setOamandatepublications( String oamandatepublications) {
this.oamandatepublications = oamandatepublications; this.oamandatepublications = oamandatepublications;
} }
public Field<String> getEcarticle29_3() { public String getEcarticle29_3() {
return ecarticle29_3; return ecarticle29_3;
} }
public void setEcarticle29_3(Field<String> ecarticle29_3) { public void setEcarticle29_3( String ecarticle29_3) {
this.ecarticle29_3 = ecarticle29_3; this.ecarticle29_3 = ecarticle29_3;
} }
@ -194,11 +192,11 @@ public class Project extends OafEntity implements Serializable {
this.subjects = subjects; this.subjects = subjects;
} }
public List<Field<String>> getFundingtree() { public List< String> getFundingtree() {
return fundingtree; return fundingtree;
} }
public void setFundingtree(List<Field<String>> fundingtree) { public void setFundingtree(List< String> fundingtree) {
this.fundingtree = fundingtree; this.fundingtree = fundingtree;
} }
@ -210,75 +208,75 @@ public class Project extends OafEntity implements Serializable {
this.contracttype = contracttype; this.contracttype = contracttype;
} }
public Field<String> getOptional1() { public String getOptional1() {
return optional1; return optional1;
} }
public void setOptional1(Field<String> optional1) { public void setOptional1( String optional1) {
this.optional1 = optional1; this.optional1 = optional1;
} }
public Field<String> getOptional2() { public String getOptional2() {
return optional2; return optional2;
} }
public void setOptional2(Field<String> optional2) { public void setOptional2( String optional2) {
this.optional2 = optional2; this.optional2 = optional2;
} }
public Field<String> getJsonextrainfo() { public String getJsonextrainfo() {
return jsonextrainfo; return jsonextrainfo;
} }
public void setJsonextrainfo(Field<String> jsonextrainfo) { public void setJsonextrainfo( String jsonextrainfo) {
this.jsonextrainfo = jsonextrainfo; this.jsonextrainfo = jsonextrainfo;
} }
public Field<String> getContactfullname() { public String getContactfullname() {
return contactfullname; return contactfullname;
} }
public void setContactfullname(Field<String> contactfullname) { public void setContactfullname( String contactfullname) {
this.contactfullname = contactfullname; this.contactfullname = contactfullname;
} }
public Field<String> getContactfax() { public String getContactfax() {
return contactfax; return contactfax;
} }
public void setContactfax(Field<String> contactfax) { public void setContactfax( String contactfax) {
this.contactfax = contactfax; this.contactfax = contactfax;
} }
public Field<String> getContactphone() { public String getContactphone() {
return contactphone; return contactphone;
} }
public void setContactphone(Field<String> contactphone) { public void setContactphone( String contactphone) {
this.contactphone = contactphone; this.contactphone = contactphone;
} }
public Field<String> getContactemail() { public String getContactemail() {
return contactemail; return contactemail;
} }
public void setContactemail(Field<String> contactemail) { public void setContactemail( String contactemail) {
this.contactemail = contactemail; this.contactemail = contactemail;
} }
public Field<String> getSummary() { public String getSummary() {
return summary; return summary;
} }
public void setSummary(Field<String> summary) { public void setSummary( String summary) {
this.summary = summary; this.summary = summary;
} }
public Field<String> getCurrency() { public String getCurrency() {
return currency; return currency;
} }
public void setCurrency(Field<String> currency) { public void setCurrency( String currency) {
this.currency = currency; this.currency = currency;
} }
@ -298,64 +296,4 @@ public class Project extends OafEntity implements Serializable {
this.fundedamount = fundedamount; this.fundedamount = fundedamount;
} }
@Override
public void mergeFrom(OafEntity e) {
super.mergeFrom(e);
if (!Project.class.isAssignableFrom(e.getClass())) {
return;
}
Project p = (Project) e;
websiteurl = p.getWebsiteurl() != null && compareTrust(this, e) < 0 ? p.getWebsiteurl() : websiteurl;
code = p.getCode() != null && compareTrust(this, e) < 0 ? p.getCode() : code;
acronym = p.getAcronym() != null && compareTrust(this, e) < 0 ? p.getAcronym() : acronym;
title = p.getTitle() != null && compareTrust(this, e) < 0 ? p.getTitle() : title;
startdate = p.getStartdate() != null && compareTrust(this, e) < 0 ? p.getStartdate() : startdate;
enddate = p.getEnddate() != null && compareTrust(this, e) < 0 ? p.getEnddate() : enddate;
callidentifier = p.getCallidentifier() != null && compareTrust(this, e) < 0
? p.getCallidentifier()
: callidentifier;
keywords = p.getKeywords() != null && compareTrust(this, e) < 0 ? p.getKeywords() : keywords;
duration = p.getDuration() != null && compareTrust(this, e) < 0 ? p.getDuration() : duration;
ecsc39 = p.getEcsc39() != null && compareTrust(this, e) < 0 ? p.getEcsc39() : ecsc39;
oamandatepublications = p.getOamandatepublications() != null && compareTrust(this, e) < 0
? p.getOamandatepublications()
: oamandatepublications;
ecarticle29_3 = p.getEcarticle29_3() != null && compareTrust(this, e) < 0
? p.getEcarticle29_3()
: ecarticle29_3;
subjects = mergeLists(subjects, p.getSubjects());
fundingtree = mergeLists(fundingtree, p.getFundingtree());
contracttype = p.getContracttype() != null && compareTrust(this, e) < 0
? p.getContracttype()
: contracttype;
optional1 = p.getOptional1() != null && compareTrust(this, e) < 0 ? p.getOptional1() : optional1;
optional2 = p.getOptional2() != null && compareTrust(this, e) < 0 ? p.getOptional2() : optional2;
jsonextrainfo = p.getJsonextrainfo() != null && compareTrust(this, e) < 0
? p.getJsonextrainfo()
: jsonextrainfo;
contactfullname = p.getContactfullname() != null && compareTrust(this, e) < 0
? p.getContactfullname()
: contactfullname;
contactfax = p.getContactfax() != null && compareTrust(this, e) < 0 ? p.getContactfax() : contactfax;
contactphone = p.getContactphone() != null && compareTrust(this, e) < 0
? p.getContactphone()
: contactphone;
contactemail = p.getContactemail() != null && compareTrust(this, e) < 0
? p.getContactemail()
: contactemail;
summary = p.getSummary() != null && compareTrust(this, e) < 0 ? p.getSummary() : summary;
currency = p.getCurrency() != null && compareTrust(this, e) < 0 ? p.getCurrency() : currency;
if (p.getH2020topiccode() != null && StringUtils.isEmpty(h2020topiccode)){
h2020topiccode = p.getH2020topiccode();
h2020topicdescription = p.getH2020topicdescription();
}
h2020classification = mergeLists(h2020classification, p.getH2020classification());
mergeOAFDataInfo(e);
}
} }

View File

@ -0,0 +1,24 @@
package eu.dnetlib.dhp.schema.oaf;
public class Provenance {
private KeyValue collectedfrom;
private DataInfo dataInfo;
public KeyValue getCollectedfrom() {
return collectedfrom;
}
public void setCollectedfrom(KeyValue collectedfrom) {
this.collectedfrom = collectedfrom;
}
public DataInfo getDataInfo() {
return dataInfo;
}
public void setDataInfo(DataInfo dataInfo) {
this.dataInfo = dataInfo;
}
}

View File

@ -7,33 +7,8 @@ import eu.dnetlib.dhp.schema.common.ModelConstants;
public class Publication extends Result implements Serializable { public class Publication extends Result implements Serializable {
// publication specific
private Journal journal;
public Publication() { public Publication() {
setResulttype(ModelConstants.PUBLICATION_DEFAULT_RESULTTYPE); setResulttype(ModelConstants.PUBLICATION_RESULTTYPE_CLASSID);
} }
public Journal getJournal() {
return journal;
}
public void setJournal(Journal journal) {
this.journal = journal;
}
@Override
public void mergeFrom(OafEntity e) {
super.mergeFrom(e);
if (!Publication.class.isAssignableFrom(e.getClass())) {
return;
}
Publication p = (Publication) e;
if (p.getJournal() != null && compareTrust(this, e) < 0)
journal = p.getJournal();
mergeOAFDataInfo(e);
}
} }

View File

@ -0,0 +1,16 @@
package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable;
public class Publisher implements Serializable {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

View File

@ -2,17 +2,18 @@
package eu.dnetlib.dhp.schema.oaf; package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable; import java.io.Serializable;
import java.util.stream.Stream;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.google.common.base.Joiner;
public class Qualifier implements Serializable { public class Qualifier implements Serializable {
private String classid; private String classid;
private String classname; private String classname;
private String schemeid; private String schemeid;
private String schemename;
public String getClassid() { public String getClassid() {
return classid; return classid;
@ -38,32 +39,12 @@ public class Qualifier implements Serializable {
this.schemeid = schemeid; this.schemeid = schemeid;
} }
public String getSchemename() {
return schemename;
}
public void setSchemename(String schemename) {
this.schemename = schemename;
}
public String toComparableString() { public String toComparableString() {
return isBlank() return Joiner
? "" .on("::")
: String .join(
.format( Stream.of(getClassid(), getClassname(), getSchemeid())
"%s::%s::%s::%s", .filter(StringUtils::isNotBlank).iterator());
classid != null ? classid : "",
classname != null ? classname : "",
schemeid != null ? schemeid : "",
schemename != null ? schemename : "");
}
@JsonIgnore
public boolean isBlank() {
return StringUtils.isBlank(classid)
&& StringUtils.isBlank(classname)
&& StringUtils.isBlank(schemeid)
&& StringUtils.isBlank(schemename);
} }
@Override @Override

View File

@ -3,6 +3,7 @@ package eu.dnetlib.dhp.schema.oaf;
import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkArgument;
import java.io.Serializable;
import java.text.ParseException; import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -16,7 +17,7 @@ import eu.dnetlib.dhp.schema.common.ModelSupport;
* subRelType and relClass. Provenance information is modeled according to the dataInfo element and collectedFrom, while * subRelType and relClass. Provenance information is modeled according to the dataInfo element and collectedFrom, while
* individual relationship types can provide extra information via the properties field. * individual relationship types can provide extra information via the properties field.
*/ */
public class Relation extends Oaf { public class Relation extends Oaf implements Serializable {
/** /**
* Main relationship classifier, values include 'resultResult', 'resultProject', 'resultOrganization', etc. * Main relationship classifier, values include 'resultResult', 'resultProject', 'resultOrganization', etc.
@ -54,6 +55,18 @@ public class Relation extends Oaf {
*/ */
private String validationDate; private String validationDate;
private List<Provenance> provenance;
private DataInfo dataInfo;
public DataInfo getDataInfo() {
return dataInfo;
}
public void setDataInfo(DataInfo dataInfo) {
this.dataInfo = dataInfo;
}
/** /**
* List of relation specific properties. Values include 'similarityLevel', indicating the similarity score between a * List of relation specific properties. Values include 'similarityLevel', indicating the similarity score between a
* pair of publications. * pair of publications.
@ -124,6 +137,14 @@ public class Relation extends Oaf {
this.validationDate = validationDate; this.validationDate = validationDate;
} }
public List<Provenance> getProvenance() {
return provenance;
}
public void setProvenance(List<Provenance> provenance) {
this.provenance = provenance;
}
public void mergeFrom(final Relation r) { public void mergeFrom(final Relation r) {
checkArgument(Objects.equals(getSource(), r.getSource()), "source ids must be equal"); checkArgument(Objects.equals(getSource(), r.getSource()), "source ids must be equal");
@ -142,8 +163,6 @@ public class Relation extends Oaf {
"invalid validation date format in relation [s:%s, t:%s]: %s", getSource(), getTarget(), "invalid validation date format in relation [s:%s, t:%s]: %s", getSource(), getTarget(),
getValidationDate())); getValidationDate()));
} }
super.mergeFrom(r);
} }
@Override @Override
@ -162,7 +181,7 @@ public class Relation extends Oaf {
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(relType, subRelType, relClass, source, target, collectedfrom); return Objects.hash(relType, subRelType, relClass, source, target, provenance);
} }
} }

View File

@ -2,38 +2,22 @@
package eu.dnetlib.dhp.schema.oaf; package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable; import java.io.Serializable;
import java.util.*; import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import eu.dnetlib.dhp.schema.common.AccessRightComparator;
import eu.dnetlib.dhp.schema.common.ModelConstants;
import eu.dnetlib.dhp.schema.oaf.utils.CleaningFunctions;
/** /**
* The type Result. * The type Result.
*/ */
public class Result extends OafEntity implements Serializable { public class Result extends Entity implements Serializable {
/** /**
* ( article | book ) processing charges. * ( article | book ) processing charges.
*/ */
private String processingchargeamount;
private Field<String> processingchargeamount;
/** /**
* currency - alphabetic code describe in ISO-4217. * currency - alphabetic code describe in ISO-4217.
*/ */
private Field<String> processingchargecurrency; private String processingchargecurrency;
/**
* The Measures.
*/
private List<Measure> measures;
/** /**
* The Author. * The Author.
@ -41,15 +25,13 @@ public class Result extends OafEntity implements Serializable {
private List<Author> author; private List<Author> author;
/** /**
* The Resulttype. * The Resulttype. It allows subclassing results into publications | datasets | software | orp
*/ */
// resulttype allows subclassing results into publications | datasets | software private String resulttype;
private Qualifier resulttype;
/** /**
* The Language. * The Language.
*/ */
// common fields
private Qualifier language; private Qualifier language;
/** /**
@ -75,42 +57,42 @@ public class Result extends OafEntity implements Serializable {
/** /**
* The Description. * The Description.
*/ */
private List<Field<String>> description; private List<String> description;
/** /**
* The Dateofacceptance. * The Dateofacceptance.
*/ */
private Field<String> dateofacceptance; private String dateofacceptance;
/** /**
* The Publisher. * The Publisher.
*/ */
private Field<String> publisher; private Publisher publisher;
/** /**
* The Embargoenddate. * The Embargoenddate.
*/ */
private Field<String> embargoenddate; private String embargoenddate;
/** /**
* The Source. * The Source.
*/ */
private List<Field<String>> source; private List<String> source;
/** /**
* The Fulltext. * The Fulltext.
*/ */
private List<Field<String>> fulltext; // remove candidate private List<String> fulltext;
/** /**
* The Format. * The Format.
*/ */
private List<Field<String>> format; private List<String> format;
/** /**
* The Contributor. * The Contributor.
*/ */
private List<Field<String>> contributor; private List<String> contributor;
/** /**
* The Resourcetype. * The Resourcetype.
@ -120,13 +102,15 @@ public class Result extends OafEntity implements Serializable {
/** /**
* The Coverage. * The Coverage.
*/ */
private List<Field<String>> coverage; private List<String> coverage;
/** /**
* The Bestaccessright. * The Bestaccessright.
*/ */
private Qualifier bestaccessright; private Qualifier bestaccessright;
private Journal journal;
/** /**
* The Context. * The Context.
*/ */
@ -147,37 +131,21 @@ public class Result extends OafEntity implements Serializable {
*/ */
private List<EoscIfGuidelines> eoscifguidelines; private List<EoscIfGuidelines> eoscifguidelines;
/** private OAIProvenance oaiprovenance;
* Gets measures.
*
* @return the measures
*/
public List<Measure> getMeasures() {
return measures;
}
/** public String getProcessingchargeamount() {
* Sets measures.
*
* @param measures the measures
*/
public void setMeasures(List<Measure> measures) {
this.measures = measures;
}
public Field<String> getProcessingchargeamount() {
return processingchargeamount; return processingchargeamount;
} }
public void setProcessingchargeamount(Field<String> processingchargeamount) { public void setProcessingchargeamount(String processingchargeamount) {
this.processingchargeamount = processingchargeamount; this.processingchargeamount = processingchargeamount;
} }
public Field<String> getProcessingchargecurrency() { public String getProcessingchargecurrency() {
return processingchargecurrency; return processingchargecurrency;
} }
public void setProcessingchargecurrency(Field<String> processingchargecurrency) { public void setProcessingchargecurrency(String processingchargecurrency) {
this.processingchargecurrency = processingchargecurrency; this.processingchargecurrency = processingchargecurrency;
} }
@ -204,7 +172,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @return the resulttype * @return the resulttype
*/ */
public Qualifier getResulttype() { public String getResulttype() {
return resulttype; return resulttype;
} }
@ -213,7 +181,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @param resulttype the resulttype * @param resulttype the resulttype
*/ */
public void setResulttype(Qualifier resulttype) { public void setResulttype(String resulttype) {
this.resulttype = resulttype; this.resulttype = resulttype;
} }
@ -312,7 +280,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @return the description * @return the description
*/ */
public List<Field<String>> getDescription() { public List<String> getDescription() {
return description; return description;
} }
@ -321,7 +289,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @param description the description * @param description the description
*/ */
public void setDescription(List<Field<String>> description) { public void setDescription(List<String> description) {
this.description = description; this.description = description;
} }
@ -330,7 +298,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @return the dateofacceptance * @return the dateofacceptance
*/ */
public Field<String> getDateofacceptance() { public String getDateofacceptance() {
return dateofacceptance; return dateofacceptance;
} }
@ -339,7 +307,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @param dateofacceptance the dateofacceptance * @param dateofacceptance the dateofacceptance
*/ */
public void setDateofacceptance(Field<String> dateofacceptance) { public void setDateofacceptance(String dateofacceptance) {
this.dateofacceptance = dateofacceptance; this.dateofacceptance = dateofacceptance;
} }
@ -348,7 +316,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @return the publisher * @return the publisher
*/ */
public Field<String> getPublisher() { public Publisher getPublisher() {
return publisher; return publisher;
} }
@ -357,7 +325,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @param publisher the publisher * @param publisher the publisher
*/ */
public void setPublisher(Field<String> publisher) { public void setPublisher(Publisher publisher) {
this.publisher = publisher; this.publisher = publisher;
} }
@ -366,7 +334,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @return the embargoenddate * @return the embargoenddate
*/ */
public Field<String> getEmbargoenddate() { public String getEmbargoenddate() {
return embargoenddate; return embargoenddate;
} }
@ -375,7 +343,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @param embargoenddate the embargoenddate * @param embargoenddate the embargoenddate
*/ */
public void setEmbargoenddate(Field<String> embargoenddate) { public void setEmbargoenddate(String embargoenddate) {
this.embargoenddate = embargoenddate; this.embargoenddate = embargoenddate;
} }
@ -384,7 +352,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @return the source * @return the source
*/ */
public List<Field<String>> getSource() { public List<String> getSource() {
return source; return source;
} }
@ -393,7 +361,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @param source the source * @param source the source
*/ */
public void setSource(List<Field<String>> source) { public void setSource(List<String> source) {
this.source = source; this.source = source;
} }
@ -402,7 +370,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @return the fulltext * @return the fulltext
*/ */
public List<Field<String>> getFulltext() { public List<String> getFulltext() {
return fulltext; return fulltext;
} }
@ -411,7 +379,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @param fulltext the fulltext * @param fulltext the fulltext
*/ */
public void setFulltext(List<Field<String>> fulltext) { public void setFulltext(List<String> fulltext) {
this.fulltext = fulltext; this.fulltext = fulltext;
} }
@ -420,7 +388,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @return the format * @return the format
*/ */
public List<Field<String>> getFormat() { public List<String> getFormat() {
return format; return format;
} }
@ -429,7 +397,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @param format the format * @param format the format
*/ */
public void setFormat(List<Field<String>> format) { public void setFormat(List<String> format) {
this.format = format; this.format = format;
} }
@ -438,7 +406,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @return the contributor * @return the contributor
*/ */
public List<Field<String>> getContributor() { public List<String> getContributor() {
return contributor; return contributor;
} }
@ -447,7 +415,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @param contributor the contributor * @param contributor the contributor
*/ */
public void setContributor(List<Field<String>> contributor) { public void setContributor(List<String> contributor) {
this.contributor = contributor; this.contributor = contributor;
} }
@ -474,7 +442,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @return the coverage * @return the coverage
*/ */
public List<Field<String>> getCoverage() { public List<String> getCoverage() {
return coverage; return coverage;
} }
@ -483,7 +451,7 @@ public class Result extends OafEntity implements Serializable {
* *
* @param coverage the coverage * @param coverage the coverage
*/ */
public void setCoverage(List<Field<String>> coverage) { public void setCoverage(List<String> coverage) {
this.coverage = coverage; this.coverage = coverage;
} }
@ -505,6 +473,14 @@ public class Result extends OafEntity implements Serializable {
this.bestaccessright = bestaccessright; this.bestaccessright = bestaccessright;
} }
public Journal getJournal() {
return journal;
}
public void setJournal(Journal journal) {
this.journal = journal;
}
/** /**
* Gets context. * Gets context.
* *
@ -567,332 +543,11 @@ public class Result extends OafEntity implements Serializable {
this.eoscifguidelines = eoscifguidelines; this.eoscifguidelines = eoscifguidelines;
} }
/** public OAIProvenance getOaiprovenance() {
* Is an enrichment boolean. return oaiprovenance;
*
* @param e the e
* @return the boolean
*/
public static boolean isAnEnrichment(OafEntity e) {
return e.getDataInfo()!= null &&
e.getDataInfo().getProvenanceaction()!= null
&& ModelConstants.PROVENANCE_ENRICH.equalsIgnoreCase(e.getDataInfo().getProvenanceaction().getClassid());
} }
public void setOaiprovenance(OAIProvenance oaiprovenance) {
/** this.oaiprovenance = oaiprovenance;
* Normalize pid string.
*
* @param pid the pid
* @return the string
*/
private static String extractKeyFromPid(final StructuredProperty pid) {
if (pid == null)
return null;
final StructuredProperty normalizedPid = CleaningFunctions.normalizePidValue(pid);
return String.format("%s::%s", normalizedPid.getQualifier().getClassid(), normalizedPid.getValue());
}
/**
* Valid pid boolean.
*
* @param p the p
* @return the boolean
*/
private static boolean validPid(final StructuredProperty p) {
return p.getValue()!= null && p.getQualifier()!= null && p.getQualifier().getClassid()!=null;
}
/**
* This method converts the list of instance enrichments
* into a Map where the key is the normalized identifier
* and the value is the instance itself
*
* @param ri the list of enrichment instances
* @return the result map
*/
public static Map<String, Instance> toInstanceMap(final List<Instance> ri) {
return ri
.stream()
.filter(i -> i.getPid() != null || i.getAlternateIdentifier() != null)
.flatMap(i -> {
final List<Pair<String, Instance>> result = new ArrayList<>();
if (i.getPid() != null)
i.getPid().stream().filter(Result::validPid).forEach(p -> result.add(new ImmutablePair<>(extractKeyFromPid(p), i)));
if (i.getAlternateIdentifier() != null)
i.getAlternateIdentifier().stream().filter(Result::validPid).forEach(p -> result.add(new ImmutablePair<>(extractKeyFromPid(p), i)));
return result.stream();
}).collect(Collectors.toMap(
Pair::getLeft,
Pair::getRight,
(a, b) -> a
));
}
/**
* This utility method finds the list of enrichment instances
* that match one or more PIDs in the input list
*
* @param pids the list of PIDs
* @param enrichments the List of enrichment instances having the same pid
* @return the list
*/
private static List<Instance> findEnrichmentsByPID(final List<StructuredProperty> pids, final Map<String,Instance> enrichments) {
if (pids == null || enrichments == null)
return null;
return pids
.stream()
.map(Result::extractKeyFromPid)
.map(enrichments::get)
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
/**
* This method apply enrichment on a single instance
* The enrichment consists of replacing values on
* single attribute only if in the current instance is missing
* The only repeatable field enriched is measures
*
* @param currentInstance the current instance
* @param enrichment the enrichment instance
*/
private static void applyEnrichment(final Instance currentInstance, final Instance enrichment) {
if (currentInstance == null || enrichment == null)
return;
//ENRICH accessright
if (enrichment.getAccessright()!=null && currentInstance.getAccessright() == null)
currentInstance.setAccessright(enrichment.getAccessright());
//ENRICH license
if (enrichment.getLicense()!=null && currentInstance.getLicense() == null)
currentInstance.setLicense(enrichment.getLicense());
//ENRICH instanceType
if (enrichment.getInstancetype()!=null && currentInstance.getInstancetype() == null)
currentInstance.setInstancetype(enrichment.getInstancetype());
//ENRICH hostedby
if (enrichment.getHostedby()!=null && currentInstance.getHostedby() == null)
currentInstance.setHostedby(enrichment.getHostedby());
//ENRICH distributionlocation
if (enrichment.getDistributionlocation()!=null && currentInstance.getDistributionlocation() == null)
currentInstance.setDistributionlocation(enrichment.getDistributionlocation());
//ENRICH collectedfrom
if (enrichment.getCollectedfrom()!=null && currentInstance.getCollectedfrom() == null)
currentInstance.setCollectedfrom(enrichment.getCollectedfrom());
//ENRICH dateofacceptance
if (enrichment.getDateofacceptance()!=null && currentInstance.getDateofacceptance() == null)
currentInstance.setDateofacceptance(enrichment.getDateofacceptance());
//ENRICH processingchargeamount
if (enrichment.getProcessingchargeamount()!=null && currentInstance.getProcessingchargeamount() == null)
currentInstance.setProcessingchargeamount(enrichment.getProcessingchargeamount());
//ENRICH refereed
if (enrichment.getRefereed()!=null && currentInstance.getRefereed() == null)
currentInstance.setRefereed(enrichment.getRefereed());
//ENRICH measures
if (enrichment.getMeasures()!=null)
if (currentInstance.getMeasures() == null)
currentInstance.setMeasures(enrichment.getMeasures());
else
enrichment.getMeasures().forEach(currentInstance.getMeasures()::add);
}
/**
* This main method apply the enrichment of the instances
*
* @param toEnrichInstances the instances that could be enriched
* @param enrichmentInstances the enrichment instances
* @return list of instances possibly enriched
*/
private static List<Instance> enrichInstances(final List<Instance> toEnrichInstances,final List<Instance> enrichmentInstances) {
final List<Instance> enrichmentResult = new ArrayList<>();
if (toEnrichInstances == null) {
return enrichmentResult;
}
if (enrichmentInstances == null) {
return enrichmentResult;
}
Map<String, Instance> ri = toInstanceMap(enrichmentInstances);
toEnrichInstances.forEach(i -> {
final List<Instance> e = findEnrichmentsByPID(i.getPid(), ri);
if (e!= null && e.size()> 0) {
e.forEach(enr -> applyEnrichment(i, enr));
} else {
final List<Instance> a = findEnrichmentsByPID(i.getAlternateIdentifier(), ri);
if (a!= null && a.size()> 0) {
a.forEach(enr -> applyEnrichment(i, enr));
}
}
enrichmentResult.add(i);
});
return enrichmentResult;
}
@Override
public void mergeFrom(OafEntity e) {
super.mergeFrom(e);
if (!Result.class.isAssignableFrom(e.getClass())) {
return;
}
Result r = (Result) e;
if(processingchargeamount == null || StringUtils.isBlank(processingchargeamount.getValue() )){
processingchargeamount = r.getProcessingchargeamount();
processingchargecurrency = r.getProcessingchargecurrency();
}
measures = mergeLists(measures, r.getMeasures());
eoscifguidelines = mergeLists(eoscifguidelines, r.getEoscifguidelines());
if( !isAnEnrichment(this) && !isAnEnrichment(e))
instance = mergeLists(instance, r.getInstance());
else {
final List<Instance> enrichmentInstances = isAnEnrichment(this) ? instance : r.getInstance();
final List<Instance> enrichedInstances= isAnEnrichment(this) ? r.getInstance(): instance;
if (isAnEnrichment(this))
setDataInfo(e.getDataInfo());
instance = enrichInstances(enrichedInstances,enrichmentInstances);
}
if (r.getBestaccessright() != null
&& new AccessRightComparator().compare(r.getBestaccessright(), bestaccessright) < 0)
bestaccessright = r.getBestaccessright();
if (r.getResulttype() != null && compareTrust(this, r) < 0)
resulttype = r.getResulttype();
if (r.getLanguage() != null && compareTrust(this, r) < 0)
language = r.getLanguage();
if (Objects.nonNull(r.getDateofacceptance())) {
if (Objects.isNull(getDateofacceptance())) {
dateofacceptance = r.getDateofacceptance();
} else if (compareTrust(this, r) < 0) {
dateofacceptance = r.getDateofacceptance();
}
}
country = mergeLists(country, r.getCountry());
subject = mergeLists(subject, r.getSubject());
// merge title lists: main title with higher trust and distinct between the others
StructuredProperty baseMainTitle = null;
if (title != null) {
baseMainTitle = getMainTitle(title);
if (baseMainTitle != null) {
final StructuredProperty p = baseMainTitle;
title = title.stream().filter(t -> t != p).collect(Collectors.toList());
}
}
StructuredProperty newMainTitle = null;
if (r.getTitle() != null) {
newMainTitle = getMainTitle(r.getTitle());
if (newMainTitle != null) {
final StructuredProperty p = newMainTitle;
r.setTitle(r.getTitle().stream().filter(t -> t != p).collect(Collectors.toList()));
}
}
if (newMainTitle != null && compareTrust(this, r) < 0) {
baseMainTitle = newMainTitle;
}
title = mergeLists(title, r.getTitle());
if (title != null && baseMainTitle != null) {
title.add(baseMainTitle);
}
relevantdate = mergeLists(relevantdate, r.getRelevantdate());
description = longestLists(description, r.getDescription());
if (r.getPublisher() != null && compareTrust(this, r) < 0)
publisher = r.getPublisher();
if (r.getEmbargoenddate() != null && compareTrust(this, r) < 0)
embargoenddate = r.getEmbargoenddate();
source = mergeLists(source, r.getSource());
fulltext = mergeLists(fulltext, r.getFulltext());
format = mergeLists(format, r.getFormat());
contributor = mergeLists(contributor, r.getContributor());
if (r.getResourcetype() != null)
resourcetype = r.getResourcetype();
coverage = mergeLists(coverage, r.getCoverage());
context = mergeLists(context, r.getContext());
externalReference = mergeLists(externalReference, r.getExternalReference());
}
/**
* Longest lists list.
*
* @param a the a
* @param b the b
* @return the list
*/
private List<Field<String>> longestLists(List<Field<String>> a, List<Field<String>> b) {
if (a == null || b == null)
return a == null ? b : a;
if (a.size() == b.size()) {
int msa = a
.stream()
.filter(i -> i != null && i.getValue() != null)
.map(i -> i.getValue().length())
.max(Comparator.naturalOrder())
.orElse(0);
int msb = b
.stream()
.filter(i -> i != null && i.getValue() != null)
.map(i -> i.getValue().length())
.max(Comparator.naturalOrder())
.orElse(0);
return msa > msb ? a : b;
}
return a.size() > b.size() ? a : b;
}
/**
* Gets main title.
*
* @param titles the titles
* @return the main title
*/
private StructuredProperty getMainTitle(List<StructuredProperty> titles) {
// need to check if the list of titles contains more than 1 main title? (in that case, we should chose which
// main title select in the list)
for (StructuredProperty t : titles) {
if (t.getQualifier() != null && t.getQualifier().getClassid() != null)
if (t.getQualifier().getClassid().equals("main title"))
return t;
}
return null;
} }
} }

View File

@ -8,41 +8,30 @@ import eu.dnetlib.dhp.schema.common.ModelConstants;
public class Software extends Result implements Serializable { public class Software extends Result implements Serializable {
private List<Field<String>> documentationUrl; private List<String> documentationUrl;
// candidate for removal // candidate for removal
private List<StructuredProperty> license; private String codeRepositoryUrl;
// candidate for removal
private Field<String> codeRepositoryUrl;
private Qualifier programmingLanguage; private Qualifier programmingLanguage;
public Software() { public Software() {
setResulttype(ModelConstants.SOFTWARE_DEFAULT_RESULTTYPE); setResulttype(ModelConstants.SOFTWARE_RESULTTYPE_CLASSID);
} }
public List<Field<String>> getDocumentationUrl() { public List<String> getDocumentationUrl() {
return documentationUrl; return documentationUrl;
} }
public void setDocumentationUrl(List<Field<String>> documentationUrl) { public void setDocumentationUrl(List<String> documentationUrl) {
this.documentationUrl = documentationUrl; this.documentationUrl = documentationUrl;
} }
public List<StructuredProperty> getLicense() { public String getCodeRepositoryUrl() {
return license;
}
public void setLicense(List<StructuredProperty> license) {
this.license = license;
}
public Field<String> getCodeRepositoryUrl() {
return codeRepositoryUrl; return codeRepositoryUrl;
} }
public void setCodeRepositoryUrl(Field<String> codeRepositoryUrl) { public void setCodeRepositoryUrl(String codeRepositoryUrl) {
this.codeRepositoryUrl = codeRepositoryUrl; this.codeRepositoryUrl = codeRepositoryUrl;
} }
@ -53,28 +42,4 @@ public class Software extends Result implements Serializable {
public void setProgrammingLanguage(Qualifier programmingLanguage) { public void setProgrammingLanguage(Qualifier programmingLanguage) {
this.programmingLanguage = programmingLanguage; this.programmingLanguage = programmingLanguage;
} }
@Override
public void mergeFrom(OafEntity e) {
super.mergeFrom(e);
if (!Software.class.isAssignableFrom(e.getClass())) {
return;
}
final Software s = (Software) e;
documentationUrl = mergeLists(documentationUrl, s.getDocumentationUrl());
license = mergeLists(license, s.getLicense());
codeRepositoryUrl = s.getCodeRepositoryUrl() != null && compareTrust(this, s) < 0
? s.getCodeRepositoryUrl()
: codeRepositoryUrl;
programmingLanguage = s.getProgrammingLanguage() != null && compareTrust(this, s) < 0
? s.getProgrammingLanguage()
: programmingLanguage;
mergeOAFDataInfo(e);
}
} }

View File

@ -14,8 +14,6 @@ public class StructuredProperty implements Serializable {
private Qualifier qualifier; private Qualifier qualifier;
private DataInfo dataInfo;
public String getValue() { public String getValue() {
return value; return value;
} }
@ -32,14 +30,6 @@ public class StructuredProperty implements Serializable {
this.qualifier = qualifier; this.qualifier = qualifier;
} }
public DataInfo getDataInfo() {
return dataInfo;
}
public void setDataInfo(DataInfo dataInfo) {
this.dataInfo = dataInfo;
}
public String toComparableString() { public String toComparableString() {
return Stream return Stream
.of( .of(

View File

@ -3,4 +3,14 @@ package eu.dnetlib.dhp.schema.oaf;
import java.io.Serializable; import java.io.Serializable;
public class Subject extends StructuredProperty implements Serializable { public class Subject extends StructuredProperty implements Serializable {
private DataInfo dataInfo;
public DataInfo getDataInfo() {
return dataInfo;
}
public void setDataInfo(DataInfo dataInfo) {
this.dataInfo = dataInfo;
}
} }

View File

@ -139,7 +139,7 @@ public class IdentifierFactory implements Serializable {
* @param md5 indicates whether should hash the PID value or not. * @param md5 indicates whether should hash the PID value or not.
* @return an identifier from the most relevant PID, entity.id otherwise * @return an identifier from the most relevant PID, entity.id otherwise
*/ */
public static <T extends OafEntity> String createIdentifier(T entity, boolean md5) { public static <T extends Entity> String createIdentifier(T entity, boolean md5) {
checkArgument(StringUtils.isNoneBlank(entity.getId()), "missing entity identifier"); checkArgument(StringUtils.isNoneBlank(entity.getId()), "missing entity identifier");
@ -164,7 +164,7 @@ public class IdentifierFactory implements Serializable {
.orElseGet(entity::getId); .orElseGet(entity::getId);
} }
private static <T extends OafEntity> Map<String, Set<StructuredProperty>> extractPids(T entity) { private static <T extends Entity> Map<String, Set<StructuredProperty>> extractPids(T entity) {
if (entity instanceof Result) { if (entity instanceof Result) {
return Optional return Optional
.ofNullable(((Result) entity).getInstance()) .ofNullable(((Result) entity).getInstance())
@ -249,14 +249,14 @@ public class IdentifierFactory implements Serializable {
} }
/** /**
* @see {@link IdentifierFactory#createIdentifier(OafEntity, boolean)} * @see {@link IdentifierFactory#createIdentifier(Entity, boolean)}
*/ */
public static <T extends OafEntity> String createIdentifier(T entity) { public static <T extends Entity> String createIdentifier(T entity) {
return createIdentifier(entity, true); return createIdentifier(entity, true);
} }
private static <T extends OafEntity> String idFromPid(T entity, StructuredProperty s, boolean md5) { private static <T extends Entity> String idFromPid(T entity, StructuredProperty s, boolean md5) {
return idFromPid(ModelSupport.getIdPrefix(entity.getClass()), s.getQualifier().getClassid(), s.getValue(), md5); return idFromPid(ModelSupport.getIdPrefix(entity.getClass()), s.getQualifier().getClassid(), s.getValue(), md5);
} }

View File

@ -4,12 +4,12 @@ package eu.dnetlib.dhp.schema.oaf.utils;
import java.util.Comparator; import java.util.Comparator;
import eu.dnetlib.dhp.schema.common.ModelSupport; import eu.dnetlib.dhp.schema.common.ModelSupport;
import eu.dnetlib.dhp.schema.oaf.OafEntity; import eu.dnetlib.dhp.schema.oaf.Entity;
import eu.dnetlib.dhp.schema.oaf.Organization; import eu.dnetlib.dhp.schema.oaf.Organization;
import eu.dnetlib.dhp.schema.oaf.Result; import eu.dnetlib.dhp.schema.oaf.Result;
import eu.dnetlib.dhp.schema.oaf.StructuredProperty; import eu.dnetlib.dhp.schema.oaf.StructuredProperty;
public class PidComparator<T extends OafEntity> implements Comparator<StructuredProperty> { public class PidComparator<T extends Entity> implements Comparator<StructuredProperty> {
private final T entity; private final T entity;

View File

@ -34,8 +34,8 @@ public class ResultTypeComparator implements Comparator<Result> {
return 1; return 1;
} }
String lClass = left.getResulttype().getClassid(); String lClass = left.getResulttype();
String rClass = right.getResulttype().getClassid(); String rClass = right.getResulttype();
if (lClass.equals(rClass)) if (lClass.equals(rClass))
return 0; return 0;

View File

@ -1,82 +1,53 @@
package eu.dnetlib.dhp.schema.sx package eu.dnetlib.dhp.schema.sx
import eu.dnetlib.dhp.schema.common.ModelConstants import eu.dnetlib.dhp.schema.common.ModelConstants
import eu.dnetlib.dhp.schema.oaf.{AccessRight, DataInfo, Field, KeyValue, Qualifier, StructuredProperty} import eu.dnetlib.dhp.schema.oaf.{AccessRight, DataInfo, KeyValue, Qualifier, StructuredProperty}
object OafUtils { object OafUtils {
def generateKeyValue(key: String, value: String): KeyValue = { def generateKeyValue(key: String, value: String): KeyValue = {
val kv: KeyValue = new KeyValue() val kv: KeyValue = new KeyValue()
kv.setKey(key) kv.setKey(key)
kv.setValue(value) kv.setValue(value)
kv.setDataInfo(generateDataInfo("0.9"))
kv kv
} }
def generateDataInfo(trust: Float = 0.9f, invisible: Boolean = false): DataInfo = {
def generateDataInfo(trust: String = "0.9", invisible: Boolean = false): DataInfo = {
val di = new DataInfo val di = new DataInfo
di.setDeletedbyinference(false)
di.setInferred(false) di.setInferred(false)
di.setInvisible(invisible)
di.setTrust(trust) di.setTrust(trust)
di.setProvenanceaction(createQualifier(ModelConstants.SYSIMPORT_ACTIONSET, ModelConstants.DNET_PROVENANCE_ACTIONS)) di.setProvenanceaction(createQualifier(ModelConstants.SYSIMPORT_ACTIONSET, ModelConstants.DNET_PROVENANCE_ACTIONS))
di di
} }
def createQualifier(cls: String, sch: String): Qualifier = { def createQualifier(cls: String, sch: String): Qualifier = {
createQualifier(cls, cls, sch, sch) createQualifier(cls, cls, sch)
} }
def createQualifier(classId: String, className: String, schemeId: String): Qualifier = {
def createQualifier(classId: String, className: String, schemeId: String, schemeName: String): Qualifier = {
val q: Qualifier = new Qualifier val q: Qualifier = new Qualifier
q.setClassid(classId) q.setClassid(classId)
q.setClassname(className) q.setClassname(className)
q.setSchemeid(schemeId) q.setSchemeid(schemeId)
q.setSchemename(schemeName)
q q
} }
def createAccessRight(classId: String, className: String, schemeId: String, schemeName: String): AccessRight = { def createAccessRight(classId: String, className: String, schemeId: String): AccessRight = {
val accessRight: AccessRight = new AccessRight val accessRight: AccessRight = new AccessRight
accessRight.setClassid(classId) accessRight.setClassid(classId)
accessRight.setClassname(className) accessRight.setClassname(className)
accessRight.setSchemeid(schemeId) accessRight.setSchemeid(schemeId)
accessRight.setSchemename(schemeName)
accessRight accessRight
} }
def createSP(value: String, classId: String,className:String, schemeId: String): StructuredProperty = {
def asField[T](value: T): Field[T] = {
val tmp = new Field[T]
tmp.setValue(value)
tmp
}
def createSP(value: String, classId: String,className:String, schemeId: String, schemeName:String): StructuredProperty = {
val sp = new StructuredProperty val sp = new StructuredProperty
sp.setQualifier(createQualifier(classId,className, schemeId, schemeName)) sp.setQualifier(createQualifier(classId,className, schemeId))
sp.setValue(value) sp.setValue(value)
sp sp
} }
def createSP(value: String, classId: String,className:String, schemeId: String, schemeName:String, dataInfo: DataInfo): StructuredProperty = {
val sp = new StructuredProperty
sp.setQualifier(createQualifier(classId,className, schemeId, schemeName))
sp.setValue(value)
sp.setDataInfo(dataInfo)
sp
}
def createSP(value: String, classId: String, schemeId: String): StructuredProperty = { def createSP(value: String, classId: String, schemeId: String): StructuredProperty = {
val sp = new StructuredProperty val sp = new StructuredProperty
sp.setQualifier(createQualifier(classId, schemeId)) sp.setQualifier(createQualifier(classId, schemeId))
@ -85,16 +56,4 @@ object OafUtils {
} }
def createSP(value: String, classId: String, schemeId: String, dataInfo: DataInfo): StructuredProperty = {
val sp = new StructuredProperty
sp.setQualifier(createQualifier(classId, schemeId))
sp.setValue(value)
sp.setDataInfo(dataInfo)
sp
}
} }

View File

@ -8,7 +8,7 @@ import java.io.IOException;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import eu.dnetlib.dhp.schema.oaf.OafEntity; import eu.dnetlib.dhp.schema.oaf.Entity;
import eu.dnetlib.dhp.schema.oaf.Relation; import eu.dnetlib.dhp.schema.oaf.Relation;
import eu.dnetlib.dhp.schema.oaf.Result; import eu.dnetlib.dhp.schema.oaf.Result;
@ -20,7 +20,7 @@ public class ModelSupportTest {
@Test @Test
void shouldReturnFalseWhenSubClassDoesNotExtendSuperClass() { void shouldReturnFalseWhenSubClassDoesNotExtendSuperClass() {
// when // when
Boolean result = ModelSupport.isSubClass(Relation.class, OafEntity.class); Boolean result = ModelSupport.isSubClass(Relation.class, Entity.class);
// then // then
assertFalse(result); assertFalse(result);
@ -29,7 +29,7 @@ public class ModelSupportTest {
@Test @Test
void shouldReturnTrueWhenSubClassExtendsSuperClass() { void shouldReturnTrueWhenSubClassExtendsSuperClass() {
// when // when
Boolean result = ModelSupport.isSubClass(Result.class, OafEntity.class); Boolean result = ModelSupport.isSubClass(Result.class, Entity.class);
// then // then
assertTrue(result); assertTrue(result);

View File

@ -1,682 +0,0 @@
package eu.dnetlib.dhp.schema.oaf;
import static org.junit.jupiter.api.Assertions.*;
import java.io.IOException;
import java.io.InputStream;
import java.time.format.DateTimeParseException;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Lists;
/**
* The type Merge test.
*/
class MergeTest {
/**
* The Oaf.
*/
OafEntity oaf;
/**
* Sets up.
*/
@BeforeEach
public void setUp() {
oaf = new Publication();
}
/**
* Merge lists test.
*/
@Test
@SuppressWarnings("unchecked")
void mergeListsTest() {
// string list merge test
List<String> a = Arrays.asList("a", "b", "c", "e");
List<String> b = Arrays.asList("a", "b", "c", "d");
List<String> c = null;
System.out.println("merge result 1 = " + oaf.mergeLists(a, b));
System.out.println("merge result 2 = " + oaf.mergeLists(a, c));
System.out.println("merge result 3 = " + oaf.mergeLists(c, c));
}
/**
* Merge publication collected from test.
*/
@Test
void mergePublicationCollectedFromTest() {
Publication a = publication();
Publication b = publication();
a.setCollectedfrom(Arrays.asList(setKV("a", "open"), setKV("b", "closed")));
b.setCollectedfrom(Arrays.asList(setKV("A", "open"), setKV("b", "Open")));
a.mergeFrom(b);
assertNotNull(a.getCollectedfrom());
assertEquals(3, a.getCollectedfrom().size());
}
/**
* Load resource result list.
*
* @param <T> the type parameter
* @param path the path
* @param clazz the clazz
* @return the list
* @throws Exception the exception
*/
private <T extends Result> List<Result> loadResourceResult(final String path, final Class<T> clazz ) throws Exception {
final ObjectMapper mapper = new ObjectMapper();
final InputStream str = Objects.requireNonNull(getClass().getResourceAsStream(path));
// LOAD test publications
return IOUtils.readLines(str).stream().map(s -> {
try {
return mapper.readValue(s, clazz);
} catch (IOException e) {
return null;
}
}).filter(Objects::nonNull).collect(Collectors.toList());
}
/**
* Apply to any test list result the same pid of the enrichment instance
*
* @param source the source
* @param enrichment the enrichment
* @param overrideAlternateIdentifier the override alternate identifier
*/
private void updatePidIntoPublicationInstance(final List<Result> source, final List<Result>enrichment, final boolean overrideAlternateIdentifier) {
for(int i = 0 ; i< source.size(); i++) {
final Result currentPub = source.get(i);
final Result currentEnrichment = enrichment.get(i);
final Instance currentInstance = Objects.requireNonNull(currentPub.getInstance()).get(0);
if (overrideAlternateIdentifier)
currentInstance.setAlternateIdentifier(Objects.requireNonNull(currentEnrichment.getInstance()).get(0).getPid());
else
currentInstance.setPid(Objects.requireNonNull(currentEnrichment.getInstance()).get(0).getPid());
}
}
private void applyAndVerifyEnrichment(final List<Result> l1, final List<Result> l2) {
// Apply Merge and verify that enrichments works
for(int i = 0 ; i< l1.size(); i++) {
final Result currentPub = l2.get(i);
final Result currentEnrichment = l1.get(i);
currentPub.mergeFrom(currentEnrichment);
assertEquals(1, currentPub.getInstance().size());
final Instance currentInstance = Objects.requireNonNull(currentPub.getInstance()).get(0);
assertNotNull(currentInstance.getMeasures());
assertNotNull(currentPub.getTitle());
assertFalse(Result.isAnEnrichment(currentPub));
}
}
/**
* Test the merge of the APC at the level of the result and the instance.
*
* @throws Exception the exception
*/
@Test
void testAPCMerge() throws Exception {
List<Result> publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publication_apc.json", Publication.class);
System.out.println(publications.size());
publications.forEach(p -> assertEquals(1, p.getInstance().size()));
publications.forEach(p -> assertTrue(p.getProcessingchargeamount() != null ));
publications.forEach(p -> assertTrue(p.getProcessingchargecurrency() != null ));
publications.forEach(p -> assertTrue(StringUtils.isNotBlank(p.getProcessingchargeamount().getValue() )));
publications.forEach(p -> assertTrue(StringUtils.isNotBlank(p.getProcessingchargecurrency().getValue() )));
publications.forEach(p -> p.getInstance().stream()
.forEach(i -> assertTrue(i.getProcessingchargeamount() != null)));
publications.forEach(p -> p.getInstance().stream()
.forEach(i -> assertTrue(i.getProcessingchargecurrency() != null)));
publications.forEach(p -> p.getInstance().stream()
.forEach(i -> assertTrue(StringUtils.isNotBlank(i.getProcessingchargeamount().getValue()))));
publications.forEach(p -> p.getInstance().stream()
.forEach(i -> assertTrue(StringUtils.isNotBlank(i.getProcessingchargecurrency().getValue()))));
Result p1 = publications.get(0);
Result p2 = publications.get(1);
p1.mergeFrom(p2);
assertEquals("1721.47", p1.getProcessingchargeamount().getValue());
assertEquals("EUR", p1.getProcessingchargecurrency().getValue());
assertEquals(2 , p1.getInstance().size());
p1.getInstance().stream().forEach(i -> assertTrue(i.getProcessingchargeamount() != null));
p1.getInstance().stream().forEach(i -> assertTrue(i.getProcessingchargecurrency() != null));
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount().getValue().equals("2000.47"));
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount().getValue().equals("1721.47"));
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency().getValue().equals("EUR"));
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency().getValue().equals("USD"));
System.out.println(new ObjectMapper().writeValueAsString(p1));
}
@Test
void testAPCMerge2() throws Exception {
List<Result> publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publication_apc2.json", Publication.class);
System.out.println(publications.size());
publications.forEach(p -> assertEquals(1, p.getInstance().size()));
assertTrue(publications.get(0).getProcessingchargeamount() != null );
assertTrue(publications.get(0).getProcessingchargecurrency() != null );
assertTrue(publications.get(1).getProcessingchargeamount() == null );
Result p1 = publications.get(1);
Result p2 = publications.get(0);
//merge visible record with OpenAPC
p1.mergeFrom(p2);
assertFalse(p1.getDataInfo().getInvisible());
assertEquals("1721.47", p1.getProcessingchargeamount().getValue());
assertEquals("EUR", p1.getProcessingchargecurrency().getValue());
assertEquals(2 , p1.getInstance().size());
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount() != null);
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency() != null);
assertEquals("1721.47", p1.getInstance().stream().filter(i -> i.getProcessingchargeamount() != null)
.collect(Collectors.toList()).get(0).getProcessingchargeamount().getValue());
assertEquals("EUR", p1.getInstance().stream().filter(i -> i.getProcessingchargeamount() != null)
.collect(Collectors.toList()).get(0).getProcessingchargecurrency().getValue());
assertFalse(p1.getDataInfo().getInvisible());
System.out.println(new ObjectMapper().writeValueAsString(p1));
//merge OpenAPC with visible record
p2.mergeFrom(p1);
assertFalse(p2.getDataInfo().getInvisible());
assertEquals("1721.47", p2.getProcessingchargeamount().getValue());
assertEquals("EUR", p2.getProcessingchargecurrency().getValue());
assertEquals(2 , p2.getInstance().size());
p2.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount() != null);
p2.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency() != null);
assertEquals("1721.47", p2.getInstance().stream().filter(i -> i.getProcessingchargeamount() != null)
.collect(Collectors.toList()).get(0).getProcessingchargeamount().getValue());
assertEquals("EUR", p2.getInstance().stream().filter(i -> i.getProcessingchargeamount() != null)
.collect(Collectors.toList()).get(0).getProcessingchargecurrency().getValue());
}
/**
* Test enrichment function.
*
* @throws Exception the exception
*/
@Test
void testEnrichment() throws Exception {
// 1 TEST UPDATING PID INSTANCE AND MERGE CURRENT PUBLICATION WITH ENRICHMENT
// LOAD test publications
List<Result> publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publications.json", Publication.class);
// Assert that each publication has only one instance and inside that all the measure field is empty
publications.forEach(p -> {
assertEquals(1, p.getInstance().size());
final Instance currentInstance = Objects.requireNonNull(p.getInstance()).get(0);
assertNull(currentInstance.getMeasures());
});
// LOAD test enrichments
List<Result> enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Result.class);
updatePidIntoPublicationInstance(publications, enrichment, false);
applyAndVerifyEnrichment(publications, enrichment);
// 2 TEST UPDATING ALTERNATE ID INSTANCE AND MERGE CURRENT PUBLICATION WITH ENRICHMENT
publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publications.json", Publication.class);
enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Result.class);
updatePidIntoPublicationInstance(publications, enrichment, true);
applyAndVerifyEnrichment(publications, enrichment);
// 3 TEST UPDATING PID INSTANCE AND MERGE ENRICHMENT WITH CURRENT PUBLICATION
publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publications.json", Publication.class);
enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Result.class);
updatePidIntoPublicationInstance(publications, enrichment, false);
applyAndVerifyEnrichment( enrichment, publications);
// 4 TEST UPDATING ALTERNATE ID INSTANCE AND MERGE ENRICHMENT WITH CURRENT PUBLICATION
publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publications.json", Publication.class);
enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Result.class);
updatePidIntoPublicationInstance(publications, enrichment, true);
applyAndVerifyEnrichment( enrichment, publications);
}
/**
* Merge publication date of acceptance test both present.
*/
@Test
void mergePublicationDateOfAcceptanceTest_bothPresent() {
Publication a = publication();
Publication b = publication();
a.setDateofacceptance(field("2021-06-18"));
b.setDateofacceptance(field("2021-06-19"));
a.mergeFrom(b);
assertNotNull(a.getDateofacceptance());
assertEquals("2021-06-18", a.getDateofacceptance().getValue());
}
/**
* Merge publication date of acceptance test both present 1.
*/
@Test
void mergePublicationDateOfAcceptanceTest_bothPresent_1() {
Publication a = publication("0.8");
Publication b = publication("0.9");
a.setDateofacceptance(field("2021-06-18"));
b.setDateofacceptance(field("2021-06-19"));
a.mergeFrom(b);
assertNotNull(a.getDateofacceptance());
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
}
/**
* Merge publication date of acceptance test both present 2.
*/
@Test
void mergePublicationDateOfAcceptanceTest_bothPresent_2() {
Publication a = publication("0.9");
Publication b = publication("0.8");
a.setDateofacceptance(field("2021-06-18"));
b.setDateofacceptance(field("2021-06-19"));
a.mergeFrom(b);
assertNotNull(a.getDateofacceptance());
assertEquals("2021-06-18", a.getDateofacceptance().getValue());
}
/**
* Merge publication date of acceptance test left missing.
*/
@Test
void mergePublicationDateOfAcceptanceTest_leftMissing() {
Publication a = publication();
Publication b = publication();
b.setDateofacceptance(field("2021-06-19"));
a.mergeFrom(b);
assertNotNull(a.getDateofacceptance());
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
}
/**
* Merge publication date of acceptance test left missing 1.
*/
@Test
void mergePublicationDateOfAcceptanceTest_leftMissing_1() {
Publication a = publication("0.9");
Publication b = publication("0.8");
b.setDateofacceptance(field("2021-06-19"));
a.mergeFrom(b);
assertNotNull(a.getDateofacceptance());
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
}
/**
* Merge publication date of acceptance test left missing 2.
*/
@Test
void mergePublicationDateOfAcceptanceTest_leftMissing_2() {
Publication a = publication("0.8");
Publication b = publication("0.9");
b.setDateofacceptance(field("2021-06-19"));
a.mergeFrom(b);
assertNotNull(a.getDateofacceptance());
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
}
/**
* Merge publication date of acceptance test right missing.
*/
@Test
void mergePublicationDateOfAcceptanceTest_rightMissing() {
Publication a = publication();
Publication b = publication();
a.setDateofacceptance(field("2021-06-19"));
a.mergeFrom(b);
assertNotNull(a.getDateofacceptance());
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
}
/**
* Merge publication date of acceptance test right missing 1.
*/
@Test
void mergePublicationDateOfAcceptanceTest_rightMissing_1() {
Publication a = publication("0.8");
Publication b = publication("0.9");
a.setDateofacceptance(field("2021-06-19"));
a.mergeFrom(b);
assertNotNull(a.getDateofacceptance());
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
}
/**
* Merge publication date of acceptance test right missing 2.
*/
@Test
void mergePublicationDateOfAcceptanceTest_rightMissing_2() {
Publication a = publication("0.9");
Publication b = publication("0.8");
a.setDateofacceptance(field("2021-06-19"));
a.mergeFrom(b);
assertNotNull(a.getDateofacceptance());
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
}
/**
* Merge publication subject test.
*/
@Test
void mergePublicationSubjectTest() {
Publication a = publication();
Publication b = publication();
a.setSubject(Arrays.asList(setSub("a", "open", "classe"), setSub("b", "open", "classe")));
b.setSubject(Arrays.asList(setSub("A", "open", "classe"), setSub("c", "open", "classe")));
a.mergeFrom(b);
assertNotNull(a.getSubject());
assertEquals(3, a.getSubject().size());
}
/**
* Merge publication EoscIfGuidelines test.
*/
@Test
void mergePublicationEoscIfGuidelinesTest() {
Publication a = publication();
Publication b = publication();
a.setEoscifguidelines(Lists.newArrayList(eoscifg("a", "label a", "https://aaa.aa", "semRelA")));
b.setEoscifguidelines(Lists.newArrayList(eoscifg("a", "label a", "https://aaa.aa", "semRelA")));
a.mergeFrom(b);
assertNotNull(a.getEoscifguidelines());
assertEquals(1, a.getEoscifguidelines().size());
a.getEoscifguidelines().clear();
b.getEoscifguidelines().clear();
a.setEoscifguidelines(Lists.newArrayList(eoscifg("a", "label a", "https://aaa.aa", "semRelA")));
b.setEoscifguidelines(Lists.newArrayList(eoscifg("a", "label a", "https://aaa.aa", "semRelA")));
b.mergeFrom(a);
assertNotNull(a.getEoscifguidelines());
assertEquals(1, a.getEoscifguidelines().size());
EoscIfGuidelines e = b.getEoscifguidelines().get(0);
assertEquals("a", e.getCode());
assertEquals("label a", e.getLabel());
assertEquals("https://aaa.aa", e.getUrl());
assertEquals("semRelA", e.getSemanticRelation());
a.getEoscifguidelines().clear();
b.getEoscifguidelines().clear();
a.setEoscifguidelines(Lists.newArrayList(eoscifg("a", "label a", "https://aaa.aa", "semRelA")));
b.setEoscifguidelines(Lists.newArrayList(eoscifg("b", "label b", "https://bbb.bb", "semRelB")));
a.mergeFrom(b);
assertNotNull(a.getEoscifguidelines());
assertEquals(2, a.getEoscifguidelines().size());
}
private EoscIfGuidelines eoscifg(String code, String label, String url, String semrel) {
EoscIfGuidelines e = new EoscIfGuidelines();
e.setCode(code);
e.setLabel(label);
e.setUrl(url);
e.setSemanticRelation(semrel);
return e;
}
/**
* Merge relation test.
*/
@Test
void mergeRelationTest() {
Relation a = createRel(null, null);
Relation b = createRel(null, null);
a.mergeFrom(b);
assertEquals(a, b);
a = createRel(true, null);
b = createRel(null, null);
a.mergeFrom(b);
assertEquals(true, a.getValidated());
a = createRel(true, null);
b = createRel(false, null);
a.mergeFrom(b);
assertEquals(true, a.getValidated());
a = createRel(true, null);
b = createRel(true, "2016-04-05T12:41:19.202Z");
a.mergeFrom(b);
assertEquals("2016-04-05T12:41:19.202Z", a.getValidationDate());
a = createRel(true, "2016-05-07T12:41:19.202Z");
b = createRel(true, "2016-04-05T12:41:19.202Z");
a.mergeFrom(b);
assertEquals("2016-04-05T12:41:19.202Z", a.getValidationDate());
a = createRel(true, "2020-09-10 11:08:52");
b = createRel(true, "2021-09-10 11:08:52");
a.mergeFrom(b);
assertEquals("2020-09-10 11:08:52", a.getValidationDate());
a = createRel(true, "2021-03-16T10:32:42Z");
b = createRel(true, "2020-03-16T10:32:42Z");
a.mergeFrom(b);
assertEquals("2020-03-16T10:32:42Z", a.getValidationDate());
}
/**
* Merge relation test parse exception.
*/
@Test
void mergeRelationTestParseException() {
assertThrows(DateTimeParseException.class, () -> {
Relation a = createRel(true, "Once upon a time ...");
Relation b = createRel(true, "... in a far away land");
a.mergeFrom(b);
});
}
/**
* Create rel relation.
*
* @param validated the validated
* @param validationDate the validation date
* @return the relation
*/
private Relation createRel(Boolean validated, String validationDate) {
Relation rel = new Relation();
rel.setSource("1");
rel.setTarget("2");
rel.setRelType("reltype");
rel.setSubRelType("subreltype");
rel.setRelClass("relclass");
rel.setValidated(validated);
rel.setValidationDate(validationDate);
return rel;
}
/**
* Sets kv.
*
* @param key the key
* @param value the value
* @return the kv
*/
private KeyValue setKV(final String key, final String value) {
KeyValue k = new KeyValue();
k.setKey(key);
k.setValue(value);
return k;
}
private Subject setSub(final String value, final String schema, final String classname) {
Subject s = new Subject();
s.setValue(value);
Qualifier q = new Qualifier();
q.setClassname(classname);
q.setClassid(classname);
q.setSchemename(schema);
q.setSchemeid(schema);
s.setQualifier(q);
return s;
}
/**
* Sets sp.
*
* @param value the value
* @param schema the schema
* @param classname the classname
* @return the sp
*/
private StructuredProperty setSP(
final String value, final String schema, final String classname) {
StructuredProperty s = new StructuredProperty();
s.setValue(value);
Qualifier q = new Qualifier();
q.setClassname(classname);
q.setClassid(classname);
q.setSchemename(schema);
q.setSchemeid(schema);
s.setQualifier(q);
return s;
}
/**
* Field field.
*
* @param <T> the type parameter
* @param value the value
* @return the field
*/
private <T> Field<T> field(T value) {
Field<T> f = new Field();
f.setValue(value);
return f;
}
/**
* Publication publication.
*
* @return the publication
*/
private Publication publication() {
Publication p = new Publication();
p.setDataInfo(df("0.9"));
return p;
}
/**
* Publication publication.
*
* @param trust the trust
* @return the publication
*/
private Publication publication(String trust) {
Publication p = new Publication();
p.setDataInfo(df(trust));
return p;
}
/**
* Df data info.
*
* @param trust the trust
* @return the data info
*/
private DataInfo df(String trust) {
DataInfo d = new DataInfo();
d.setTrust(trust);
return d;
}
}

View File

@ -1 +0,0 @@
{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1g", "resuttype" : { "classid" : "dataset" }, "pid":[{"qualifier":{"classid":"doi"},"value":"10.1016/j.cmet.2011.03.013"},{"qualifier":{"classid":"urn"},"value":"urn:nbn:nl:ui:29-f3ed5f9e-edf6-457e-8848-61b58a4075e2"},{"qualifier":{"classid":"scp-number"},"value":"79953761260"},{"qualifier":{"classid":"pmc"},"value":"21459329"}], "collectedfrom" : [ { "key" : "10|openaire____::081b82f96300b6a6e3d282bad31cb6e2", "value" : "Crossref"} ]}

View File

@ -1 +0,0 @@
{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1g", "resuttype" : { "classid" : "dataset" }, "pid":[{"qualifier":{"classid":"doi"},"value":"10.1016/j.cmet.2011.03.013"},{"qualifier":{"classid":"urn"},"value":"urn:nbn:nl:ui:29-f3ed5f9e-edf6-457e-8848-61b58a4075e2"},{"qualifier":{"classid":"scp-number"},"value":"79953761260"},{"qualifier":{"classid":"pmc"},"value":"21459329"}], "collectedfrom" : [ { "key" : "10|openaire____::081b82f96300b6a6e3d282bad31cb6e3", "value" : "Repository B"} ]}

View File

@ -1,12 +0,0 @@
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0000/ra.v2i3.114::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.91019644836e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"4.65008652949e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0000/ra.v2i3.114"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0001/(aj).v3i6.458::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.91019644836e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"4.01810569717e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0001/(aj).v3i6.458"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0001/1587::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.91019644836e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.39172290649e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0001/1587"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0001/462::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"6.33235333753e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.36"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.00285265116e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0001/462"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0001/731::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.91019644836e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"4.01810569717e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0001/731"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0001/ijllis.v9i4.2066.g2482::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.91019644836e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"8.48190886761e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0001/ijllis.v9i4.2066.g2482"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0118/alfahim.v3i1.140::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.91019644836e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"9.88840807598e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0118/alfahim.v3i1.140"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0166/fk2.stagefigshare.6442896.v3::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.91019644836e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"7.28336930301e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0166/fk2.stagefigshare.6442896.v3"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0301/jttb.v2i1.64::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.91019644836e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"7.28336930301e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0301/jttb.v2i1.64"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0809/seruni.v1i1.567::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.91019644836e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"2.62959564033e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0809/seruni.v1i1.567"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0809/seruni.v2i1.765::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"9.40178571921e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0559872"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"3.67659957614e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0809/seruni.v2i1.765"}]}]}
{"dataInfo":{"deletedbyinference":false,"inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:enrich","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"id":"unresolved::10.0901/jkip.v7i3.485::doi","instance":[{"measures":[{"id":"influence","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"5.91019644836e-09"}]},{"id":"popularity_alt","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"0.0"}]},{"id":"popularity","unit":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"update","inferred":true,"invisible":false,"provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":""},"key":"score","value":"6.26204125721e-09"}]}],"pid":[{"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.0901/jkip.v7i3.485"}]}]}

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", "resuttype" : { "classid" : "publication" }, "pid":[{"qualifier":{"classid":"doi"},"value":"10.1016/j.cmet.2011.03.013"},{"qualifier":{"classid":"urn"},"value":"urn:nbn:nl:ui:29-f3ed5f9e-edf6-457e-8848-61b58a4075e2"},{"qualifier":{"classid":"scp-number"},"value":"79953761260"},{"qualifier":{"classid":"pmc"},"value":"21459329"}], "collectedfrom" : [ { "key" : "10|openaire____::081b82f96300b6a6e3d282bad31cb6e2", "value" : "Crossref"} ]}

View File

@ -1 +0,0 @@
{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", "resuttype" : { "classid" : "publication" }, "pid":[{"qualifier":{"classid":"doi"},"value":"10.1016/j.cmet.2011.03.013"},{"qualifier":{"classid":"urn"},"value":"urn:nbn:nl:ui:29-f3ed5f9e-edf6-457e-8848-61b58a4075e2"},{"qualifier":{"classid":"scp-number"},"value":"79953761260"},{"qualifier":{"classid":"pmc"},"value":"21459329"}], "collectedfrom" : [ { "key" : "10|openaire____::081b82f96300b6a6e3d282bad31cb6e3", "value" : "Repository A"} ]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long