From f6745a9d30d57cb4c96ee5e86dd689686bc298c7 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 1 Mar 2024 12:26:58 +0100 Subject: [PATCH 01/13] WIP: defining model classes used to store the json payload in the Solr documents --- README.md | 8 +- pom.xml | 2 +- .../java/eu/dnetlib/dhp/schema/solr/APC.java | 28 + .../dnetlib/dhp/schema/solr/AccessRight.java | 32 ++ .../eu/dnetlib/dhp/schema/solr/Author.java | 69 +++ .../dhp/schema/solr/BestAccessRight.java | 42 ++ .../eu/dnetlib/dhp/schema/solr/Category.java | 42 ++ .../eu/dnetlib/dhp/schema/solr/CodeLabel.java | 33 ++ .../eu/dnetlib/dhp/schema/solr/Concept.java | 32 ++ .../eu/dnetlib/dhp/schema/solr/Context.java | 53 ++ .../eu/dnetlib/dhp/schema/solr/Country.java | 47 ++ .../dnetlib/dhp/schema/solr/Datasource.java | 537 ++++++++++++++++++ .../dhp/schema/solr/EoscIfGuidelines.java | 68 +++ .../eu/dnetlib/dhp/schema/solr/ExtraInfo.java | 6 + .../eu/dnetlib/dhp/schema/solr/Funder.java | 64 +++ .../eu/dnetlib/dhp/schema/solr/Funding.java | 60 ++ .../dnetlib/dhp/schema/solr/FundingLevel.java | 44 ++ .../eu/dnetlib/dhp/schema/solr/Instance.java | 41 ++ .../eu/dnetlib/dhp/schema/solr/Journal.java | 143 +++++ .../eu/dnetlib/dhp/schema/solr/Language.java | 39 ++ .../eu/dnetlib/dhp/schema/solr/Measure.java | 8 + .../dhp/schema/solr/OpenAccessColor.java | 13 + .../dhp/schema/solr/OpenAccessRoute.java | 15 + .../dnetlib/dhp/schema/solr/Organization.java | 167 ++++++ .../java/eu/dnetlib/dhp/schema/solr/Pid.java | 26 + .../eu/dnetlib/dhp/schema/solr/Project.java | 171 ++++++ .../dnetlib/dhp/schema/solr/Provenance.java | 26 + .../dhp/schema/solr/RelatedRecord.java | 216 +++++++ .../dhp/schema/solr/RelatedRecordHeader.java | 55 ++ .../eu/dnetlib/dhp/schema/solr/Result.java | 161 ++++++ .../dnetlib/dhp/schema/solr/SolrRecord.java | 41 ++ .../dhp/schema/solr/SolrRecordHeader.java | 40 ++ .../eu/dnetlib/dhp/schema/solr/Subject.java | 26 + 33 files changed, 2351 insertions(+), 4 deletions(-) create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/APC.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Author.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/BestAccessRight.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Category.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/CodeLabel.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Context.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Country.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Datasource.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Funder.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/FundingLevel.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Journal.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Language.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Measure.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/OpenAccessColor.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/OpenAccessRoute.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Organization.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Project.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecord.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecordHeader.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Result.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java diff --git a/README.md b/README.md index 94499a4..b18603b 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,11 @@ This project defines **object schemas** of the OpenAIRE main entities and the re Namely it defines the model for - 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 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 Solr common schemas used to represent the information returned to the Explore portal and the APIs, defined under +the package `eu.dnetlib.dhp.schema.solr` -Te serialization of such objects (data store files) are used to pass data between workflow nodes in the processing pipeline. +The serialization of such objects (data store files) are used to pass data between workflow nodes in the processing pipeline +and / or intended to be shared across components. diff --git a/pom.xml b/pom.xml index 4cdfb6d..02d05d5 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ eu.dnetlib.dhp dhp-schemas jar - 5.17.4-SNAPSHOT + 6.0.0-SNAPSHOT diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java b/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java new file mode 100644 index 0000000..75f5101 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java @@ -0,0 +1,28 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +/** + * Used to refer to the Article Processing Charge information. It contains two parameters: - + * currency of type String to store the currency of the APC - amount of type String to stores the charged amount + */ +public class APC implements Serializable { + private String currency; + private String amount; + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } +} \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java b/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java new file mode 100644 index 0000000..db22675 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java @@ -0,0 +1,32 @@ + +package eu.dnetlib.dhp.schema.solr; + +import java.util.Optional; + +/** + * This class models the access rights of research products. + */ +public class AccessRight { + + private String value; + + private OpenAccessRoute openAccessRoute; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public OpenAccessRoute getOpenAccessRoute() { + return openAccessRoute; + } + + public void setOpenAccessRoute(OpenAccessRoute openAccessRoute) { + this.openAccessRoute = openAccessRoute; + } + + +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java new file mode 100644 index 0000000..9e79724 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java @@ -0,0 +1,69 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class Author implements Serializable { + + private String fullname; + + private String name; + + private String surname; + + private Integer rank; + + /** + * The author's persistent identifiers + */ + private Pid pid; + + public static Author newInstance(String fullname, String name, String surname, int rank, Pid pid) { + Author a = new Author(); + a.setFullname(fullname); + a.setName(name); + a.setSurname(surname); + a.setRank(rank); + a.setPid(pid); + return a; + } + + public String getFullname() { + return fullname; + } + + public void setFullname(String fullname) { + this.fullname = fullname; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public Integer getRank() { + return rank; + } + + public void setRank(Integer rank) { + this.rank = rank; + } + + public Pid getPid() { + return pid; + } + + public void setPid(Pid pid) { + this.pid = pid; + } +} \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/BestAccessRight.java b/src/main/java/eu/dnetlib/dhp/schema/solr/BestAccessRight.java new file mode 100644 index 0000000..5e4905d --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/BestAccessRight.java @@ -0,0 +1,42 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +/** + * BestAccessRight. Used to represent the result best access rights. + */ +public class BestAccessRight implements Serializable { + + /** + * AccessRight code + */ + private String code; // the classid in the Qualifier + + /** + * Label for the access mode + */ + private String label; // the classname in the Qualifier + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public static BestAccessRight newInstance(String code, String label) { + BestAccessRight ar = new BestAccessRight(); + ar.code = code; + ar.label = label; + return ar; + } +} \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java new file mode 100644 index 0000000..5b92a67 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java @@ -0,0 +1,42 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +public class Category implements Serializable { + + private String id; + private String label; + private List concept; + + private Category newInstance(String id, String label) { + Category category = new Category(); + category.setId(id); + category.setLabel(label); + return category; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public List getConcept() { + return concept; + } + + public void setConcept(List concept) { + this.concept = concept; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/CodeLabel.java b/src/main/java/eu/dnetlib/dhp/schema/solr/CodeLabel.java new file mode 100644 index 0000000..29be542 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/CodeLabel.java @@ -0,0 +1,33 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class CodeLabel implements Serializable { + + private String code; + + private String label; + + public static CodeLabel newInstance(String code, String label) { + CodeLabel cl = new CodeLabel(); + cl.setCode(code); + cl.setLabel(label); + return cl; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java new file mode 100644 index 0000000..b15d3db --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java @@ -0,0 +1,32 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class Concept implements Serializable { + + private String id; + private String label; + + private Concept newInstance(String id, String label) { + Concept concept = new Concept(); + concept.setId(id); + concept.setLabel(label); + return concept; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java new file mode 100644 index 0000000..07a90e3 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java @@ -0,0 +1,53 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +public class Context implements Serializable { + + private String id; + private String label; + private String type; + private List category; + + private Context newInstance(String id, String label, String type, List category) { + Context context = new Context(); + context.setId(id); + context.setLabel(label); + context.setType(type); + context.setCategory(category); + return context; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public List getCategory() { + return category; + } + + public void setCategory(List category) { + this.category = category; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java new file mode 100644 index 0000000..630e85f --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java @@ -0,0 +1,47 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +/** + * Represents the country associated to the generic entity. The value for this element correspond to: - code corresponds + * to the classid of eu.dnetlib.dhp.schema.oaf.Country - label corresponds to the classname of + * eu.dnetlib.dhp.schema.oaf.Country - provenance set only if the dataInfo associated to the Country of the result to be + * dumped is not null. In this case : - provenance corresponds to dataInfo.provenanceaction.classid (to be modified with + * datainfo.provenanceaction.classname) - trust corresponds to dataInfo.trust + */ +public class Country implements Serializable { + + /** + * ISO 3166-1 alpha-2 country code (i.e. IT) + */ + private String code; // the classid in the Qualifier + + /** + * The label for that code (i.e. Italy) + */ + private String label; // the classname in the Qualifier + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public static Country newInstance(String code, String label) { + Country c = new Country(); + c.setCode(code); + c.setLabel(label); + return c; + } + +} \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Datasource.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Datasource.java new file mode 100644 index 0000000..e0d3579 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Datasource.java @@ -0,0 +1,537 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +public class Datasource implements Serializable { + + private CodeLabel datasourcetype; + + private CodeLabel datasourcetypeui; + + private CodeLabel eosctype; // Data Source | Service + + private CodeLabel eoscdatasourcetype; + + private CodeLabel openairecompatibility; + + private String officialname; + + private String englishname; + + private String websiteurl; + + private String logourl; + + private String contactemail; + + private String namespaceprefix; + + private String latitude; + + private String longitude; + + private String dateofvalidation; + + private String description; + + private List subjects; + + private String odnumberofitems; + + private String odnumberofitemsdate; + + private String odpolicies; + + private List odlanguages; + + private List languages; + + private List odcontenttypes; + + private List accessinfopackage; + + // re3data fields + private String releasestartdate; + + private String releaseenddate; + + private String missionstatementurl; + + private Boolean dataprovider; + + private Boolean serviceprovider; + + // {open, restricted or closed} + private String databaseaccesstype; + + // {open, restricted or closed} + private String datauploadtype; + + // {feeRequired, registration, other} + private String databaseaccessrestriction; + + // {feeRequired, registration, other} + private String datauploadrestriction; + + private Boolean versioning; + + private Boolean versioncontrol; + + private String citationguidelineurl; + + private String pidsystems; + + private String certificates; + + private List policies; + + private Journal journal; + + // New field for EOSC + private List researchentitytypes; + + // New field for EOSC + private List providedproducttypes; + + // New field for EOSC + private CodeLabel jurisdiction; + + // New field for EOSC + private Boolean thematic; + + // New field for EOSC + private List contentpolicies; + + private String submissionpolicyurl; + + private String preservationpolicyurl; + + private List researchproductaccesspolicies; + + private List researchproductmetadataaccesspolicies; + + private Boolean consenttermsofuse; + + private Boolean fulltextdownload; + + private String consenttermsofusedate; + + private String lastconsenttermsofusedate; + + public CodeLabel getDatasourcetype() { + return datasourcetype; + } + + public void setDatasourcetype(CodeLabel datasourcetype) { + this.datasourcetype = datasourcetype; + } + + public CodeLabel getDatasourcetypeui() { + return datasourcetypeui; + } + + public void setDatasourcetypeui(CodeLabel datasourcetypeui) { + this.datasourcetypeui = datasourcetypeui; + } + + public CodeLabel getEosctype() { + return eosctype; + } + + public void setEosctype(CodeLabel eosctype) { + this.eosctype = eosctype; + } + + public CodeLabel getEoscdatasourcetype() { + return eoscdatasourcetype; + } + + public void setEoscdatasourcetype(CodeLabel eoscdatasourcetype) { + this.eoscdatasourcetype = eoscdatasourcetype; + } + + public CodeLabel getOpenairecompatibility() { + return openairecompatibility; + } + + public void setOpenairecompatibility(CodeLabel openairecompatibility) { + this.openairecompatibility = openairecompatibility; + } + + public String getOfficialname() { + return officialname; + } + + public void setOfficialname(String officialname) { + this.officialname = officialname; + } + + public String getEnglishname() { + return englishname; + } + + public void setEnglishname(String englishname) { + this.englishname = englishname; + } + + public String getWebsiteurl() { + return websiteurl; + } + + public void setWebsiteurl(String websiteurl) { + this.websiteurl = websiteurl; + } + + public String getLogourl() { + return logourl; + } + + public void setLogourl(String logourl) { + this.logourl = logourl; + } + + public String getContactemail() { + return contactemail; + } + + public void setContactemail(String contactemail) { + this.contactemail = contactemail; + } + + public String getNamespaceprefix() { + return namespaceprefix; + } + + public void setNamespaceprefix(String namespaceprefix) { + this.namespaceprefix = namespaceprefix; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getDateofvalidation() { + return dateofvalidation; + } + + public void setDateofvalidation(String dateofvalidation) { + this.dateofvalidation = dateofvalidation; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public List getSubjects() { + return subjects; + } + + public void setSubjects(List subjects) { + this.subjects = subjects; + } + + public String getOdnumberofitems() { + return odnumberofitems; + } + + public void setOdnumberofitems(String odnumberofitems) { + this.odnumberofitems = odnumberofitems; + } + + public String getOdnumberofitemsdate() { + return odnumberofitemsdate; + } + + public void setOdnumberofitemsdate(String odnumberofitemsdate) { + this.odnumberofitemsdate = odnumberofitemsdate; + } + + public String getOdpolicies() { + return odpolicies; + } + + public void setOdpolicies(String odpolicies) { + this.odpolicies = odpolicies; + } + + public List getOdlanguages() { + return odlanguages; + } + + public void setOdlanguages(List odlanguages) { + this.odlanguages = odlanguages; + } + + public List getLanguages() { + return languages; + } + + public void setLanguages(List languages) { + this.languages = languages; + } + + public List getOdcontenttypes() { + return odcontenttypes; + } + + public void setOdcontenttypes(List odcontenttypes) { + this.odcontenttypes = odcontenttypes; + } + + public List getAccessinfopackage() { + return accessinfopackage; + } + + public void setAccessinfopackage(List accessinfopackage) { + this.accessinfopackage = accessinfopackage; + } + + public String getReleasestartdate() { + return releasestartdate; + } + + public void setReleasestartdate(String releasestartdate) { + this.releasestartdate = releasestartdate; + } + + public String getReleaseenddate() { + return releaseenddate; + } + + public void setReleaseenddate(String releaseenddate) { + this.releaseenddate = releaseenddate; + } + + public String getMissionstatementurl() { + return missionstatementurl; + } + + public void setMissionstatementurl(String missionstatementurl) { + this.missionstatementurl = missionstatementurl; + } + + public Boolean getDataprovider() { + return dataprovider; + } + + public void setDataprovider(Boolean dataprovider) { + this.dataprovider = dataprovider; + } + + public Boolean getServiceprovider() { + return serviceprovider; + } + + public void setServiceprovider(Boolean serviceprovider) { + this.serviceprovider = serviceprovider; + } + + public String getDatabaseaccesstype() { + return databaseaccesstype; + } + + public void setDatabaseaccesstype(String databaseaccesstype) { + this.databaseaccesstype = databaseaccesstype; + } + + public String getDatauploadtype() { + return datauploadtype; + } + + public void setDatauploadtype(String datauploadtype) { + this.datauploadtype = datauploadtype; + } + + public String getDatabaseaccessrestriction() { + return databaseaccessrestriction; + } + + public void setDatabaseaccessrestriction(String databaseaccessrestriction) { + this.databaseaccessrestriction = databaseaccessrestriction; + } + + public String getDatauploadrestriction() { + return datauploadrestriction; + } + + public void setDatauploadrestriction(String datauploadrestriction) { + this.datauploadrestriction = datauploadrestriction; + } + + public Boolean getVersioning() { + return versioning; + } + + public void setVersioning(Boolean versioning) { + this.versioning = versioning; + } + + public Boolean getVersioncontrol() { + return versioncontrol; + } + + public void setVersioncontrol(Boolean versioncontrol) { + this.versioncontrol = versioncontrol; + } + + public String getCitationguidelineurl() { + return citationguidelineurl; + } + + public void setCitationguidelineurl(String citationguidelineurl) { + this.citationguidelineurl = citationguidelineurl; + } + + public String getPidsystems() { + return pidsystems; + } + + public void setPidsystems(String pidsystems) { + this.pidsystems = pidsystems; + } + + public String getCertificates() { + return certificates; + } + + public void setCertificates(String certificates) { + this.certificates = certificates; + } + + public List getPolicies() { + return policies; + } + + public void setPolicies(List policies) { + this.policies = policies; + } + + public Journal getJournal() { + return journal; + } + + public void setJournal(Journal journal) { + this.journal = journal; + } + + public List getResearchentitytypes() { + return researchentitytypes; + } + + public void setResearchentitytypes(List researchentitytypes) { + this.researchentitytypes = researchentitytypes; + } + + public List getProvidedproducttypes() { + return providedproducttypes; + } + + public void setProvidedproducttypes(List providedproducttypes) { + this.providedproducttypes = providedproducttypes; + } + + public CodeLabel getJurisdiction() { + return jurisdiction; + } + + public void setJurisdiction(CodeLabel jurisdiction) { + this.jurisdiction = jurisdiction; + } + + public Boolean getThematic() { + return thematic; + } + + public void setThematic(Boolean thematic) { + this.thematic = thematic; + } + + public List getContentpolicies() { + return contentpolicies; + } + + public void setContentpolicies(List contentpolicies) { + this.contentpolicies = contentpolicies; + } + + public String getSubmissionpolicyurl() { + return submissionpolicyurl; + } + + public void setSubmissionpolicyurl(String submissionpolicyurl) { + this.submissionpolicyurl = submissionpolicyurl; + } + + public String getPreservationpolicyurl() { + return preservationpolicyurl; + } + + public void setPreservationpolicyurl(String preservationpolicyurl) { + this.preservationpolicyurl = preservationpolicyurl; + } + + public List getResearchproductaccesspolicies() { + return researchproductaccesspolicies; + } + + public void setResearchproductaccesspolicies(List researchproductaccesspolicies) { + this.researchproductaccesspolicies = researchproductaccesspolicies; + } + + public List getResearchproductmetadataaccesspolicies() { + return researchproductmetadataaccesspolicies; + } + + public void setResearchproductmetadataaccesspolicies(List researchproductmetadataaccesspolicies) { + this.researchproductmetadataaccesspolicies = researchproductmetadataaccesspolicies; + } + + public Boolean getConsenttermsofuse() { + return consenttermsofuse; + } + + public void setConsenttermsofuse(Boolean 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() { + return lastconsenttermsofusedate; + } + + public void setLastconsenttermsofusedate(String lastconsenttermsofusedate) { + this.lastconsenttermsofusedate = lastconsenttermsofusedate; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java b/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java new file mode 100644 index 0000000..ee250b8 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java @@ -0,0 +1,68 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.apache.commons.lang3.StringUtils; + +/** + * Describes a reference to the EOSC Interoperability Framework (IF) Guidelines + */ +public class EoscIfGuidelines implements Serializable { + + /** + * EOSC-IF local code. Later on it could be populated with a PID (e.g. DOI), but for the time being we stick to + * a more loose definition. + */ + private String code; + + /** + * EOSC-IF label + */ + private String label; + + /** + * EOSC-IF url + */ + private String url; + + /** + * EOSC-IF semantic relation (e.g. compliesWith). Values shall be controlled by a dedicated vocabulary. + */ + private String semanticRelation; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getSemanticRelation() { + return semanticRelation; + } + + public void setSemanticRelation(String semanticRelation) { + this.semanticRelation = semanticRelation; + } + +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java b/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java new file mode 100644 index 0000000..a3ce98d --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java @@ -0,0 +1,6 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class ExtraInfo implements Serializable { +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Funder.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Funder.java new file mode 100644 index 0000000..60320a2 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Funder.java @@ -0,0 +1,64 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +public class Funder implements Serializable { + + private String id; + private String shortname; + private String name; + private Country jurisdiction; + private List pid; + + public static Funder newInstance(String id, String shortname, String name, Country jurisdiction, List pid) { + Funder funder = new Funder(); + funder.setId(id); + funder.setShortname(shortname); + funder.setName(name); + funder.setJurisdiction(jurisdiction); + funder.setPid(pid); + return funder; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShortname() { + return shortname; + } + + public void setShortname(String shortname) { + this.shortname = shortname; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + public Country getJurisdiction() { + return jurisdiction; + } + + public void setJurisdiction(Country jurisdiction) { + this.jurisdiction = jurisdiction; + } + + public List getPid() { + return pid; + } + + public void setPid(List pid) { + this.pid = pid; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java new file mode 100644 index 0000000..60c3178 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java @@ -0,0 +1,60 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class Funding implements Serializable { + + private Funder funder; + private FundingLevel level0; + private FundingLevel level1; + private FundingLevel level2; + + public Funding newInstance(Funder funder, FundingLevel level0) { + return newInstance(funder, level0, null, null); + } + + public Funding newInstance(Funder funder, FundingLevel level0, FundingLevel level1) { + return newInstance(funder, level0, level1, null); + } + + public Funding newInstance(Funder funder, FundingLevel level0, FundingLevel level1, FundingLevel level2) { + Funding funding = new Funding(); + funding.setFunder(funder); + funding.setLevel0(level0); + funding.setLevel1(level1); + funding.setLevel2(level2); + return funding; + } + + public Funder getFunder() { + return funder; + } + + public void setFunder(Funder funder) { + this.funder = funder; + } + + public FundingLevel getLevel0() { + return level0; + } + + public void setLevel0(FundingLevel level0) { + this.level0 = level0; + } + + public FundingLevel getLevel1() { + return level1; + } + + public void setLevel1(FundingLevel level1) { + this.level1 = level1; + } + + public FundingLevel getLevel2() { + return level2; + } + + public void setLevel2(FundingLevel level2) { + this.level2 = level2; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/FundingLevel.java b/src/main/java/eu/dnetlib/dhp/schema/solr/FundingLevel.java new file mode 100644 index 0000000..d559ab5 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/FundingLevel.java @@ -0,0 +1,44 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class FundingLevel implements Serializable { + + private String id; + + private String description; + + private String name; + + public static FundingLevel newInstance(String id, String description, String name) { + FundingLevel level = new FundingLevel(); + level.setId(id); + level.setDescription(description); + level.setName(name); + return level; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java new file mode 100644 index 0000000..b4cff90 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java @@ -0,0 +1,41 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +public class Instance implements Serializable { + + private String license; + + private AccessRight accessright; + + private String instancetype; + + private Provenance hostedby; + + private List url; + + // other research products specifc + private String distributionlocation; + + private Provenance collectedfrom; + + private List pid; + + private List alternateIdentifier; + + private String dateofacceptance; + + // ( article | book ) processing charges. Defined here to cope with possible wrongly typed + // results + private APC processingcharges; + + private String refereed; // peer-review status + + private List measures; + + /** + * Direct fulltext URL. + */ + private String fulltext; +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Journal.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Journal.java new file mode 100644 index 0000000..da4a8f1 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Journal.java @@ -0,0 +1,143 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class Journal implements Serializable { + + /** + * Name of the journal or conference + */ + private String name; + + /** + * The issn + */ + private String issnPrinted; + + /** + * The e-issn + */ + private String issnOnline; + + /** + * The kinking issn + */ + private String issnLinking; + + /** + * Start page + */ + private String sp; + + /** + * End page + */ + private String ep; + + /** + * Journal issue number + */ + private String iss; + + /** + * Volume + */ + private String vol; + + /** + * Edition of the journal or conference proceeding + */ + private String edition; + + private String conferenceplace; + + private String conferencedate; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIssnPrinted() { + return issnPrinted; + } + + public void setIssnPrinted(String issnPrinted) { + this.issnPrinted = issnPrinted; + } + + public String getIssnOnline() { + return issnOnline; + } + + public void setIssnOnline(String issnOnline) { + this.issnOnline = issnOnline; + } + + public String getIssnLinking() { + return issnLinking; + } + + public void setIssnLinking(String issnLinking) { + this.issnLinking = issnLinking; + } + + public String getSp() { + return sp; + } + + public void setSp(String sp) { + this.sp = sp; + } + + public String getEp() { + return ep; + } + + public void setEp(String ep) { + this.ep = ep; + } + + public String getIss() { + return iss; + } + + public void setIss(String iss) { + this.iss = iss; + } + + public String getVol() { + return vol; + } + + public void setVol(String vol) { + this.vol = vol; + } + + public String getEdition() { + return edition; + } + + public void setEdition(String edition) { + this.edition = edition; + } + + public String getConferenceplace() { + return conferenceplace; + } + + public void setConferenceplace(String conferenceplace) { + this.conferenceplace = conferenceplace; + } + + public String getConferencedate() { + return conferencedate; + } + + public void setConferencedate(String conferencedate) { + this.conferencedate = conferencedate; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java new file mode 100644 index 0000000..5f672a7 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java @@ -0,0 +1,39 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class Language implements Serializable { + + /** + * alpha-3/ISO 639-2 code of the language + */ + private String code; // the classid in the Qualifier + + /** + * Language label in English + */ + private String label; // the classname in the Qualifier + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public static Language newInstance(String code, String value) { + Language qualifier = new Language(); + qualifier.setCode(code); + qualifier.setLabel(value); + return qualifier; + } +} \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Measure.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Measure.java new file mode 100644 index 0000000..063f694 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Measure.java @@ -0,0 +1,8 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class Measure implements Serializable { + + //TODO define me! +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/OpenAccessColor.java b/src/main/java/eu/dnetlib/dhp/schema/solr/OpenAccessColor.java new file mode 100644 index 0000000..48407d8 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/OpenAccessColor.java @@ -0,0 +1,13 @@ + +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +/** + * The OpenAccess color meant to be used on the result level + */ +public enum OpenAccessColor implements Serializable { + + gold, hybrid, bronze + +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/OpenAccessRoute.java b/src/main/java/eu/dnetlib/dhp/schema/solr/OpenAccessRoute.java new file mode 100644 index 0000000..6d473ed --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/OpenAccessRoute.java @@ -0,0 +1,15 @@ + +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +/** + * This Enum models the OpenAccess status, currently including only the values from Unpaywall + * + * https://support.unpaywall.org/support/solutions/articles/44001777288-what-do-the-types-of-oa-status-green-gold-hybrid-and-bronze-mean- + */ +public enum OpenAccessRoute implements Serializable { + + gold, green, hybrid, bronze + +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Organization.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Organization.java new file mode 100644 index 0000000..8832e83 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Organization.java @@ -0,0 +1,167 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +public class Organization implements Serializable { + + private String legalshortname; + + private String legalname; + + private List alternativeNames; + + private String websiteurl; + + private String logourl; + + private String eclegalbody; + + private String eclegalperson; + + private String ecnonprofit; + + private String ecresearchorganization; + + private String echighereducation; + + private String ecinternationalorganizationeurinterests; + + private String ecinternationalorganization; + + private String ecenterprise; + + private String ecsmevalidated; + + private String ecnutscode; + + private CodeLabel country; + + public String getLegalshortname() { + return legalshortname; + } + + public void setLegalshortname(String legalshortname) { + this.legalshortname = legalshortname; + } + + public String getLegalname() { + return legalname; + } + + public void setLegalname(String legalname) { + this.legalname = legalname; + } + + public List getAlternativeNames() { + return alternativeNames; + } + + public void setAlternativeNames(List alternativeNames) { + this.alternativeNames = alternativeNames; + } + + public String getWebsiteurl() { + return websiteurl; + } + + public void setWebsiteurl(String websiteurl) { + this.websiteurl = websiteurl; + } + + public String getLogourl() { + return logourl; + } + + public void setLogourl(String logourl) { + this.logourl = logourl; + } + + public String getEclegalbody() { + return eclegalbody; + } + + public void setEclegalbody(String eclegalbody) { + this.eclegalbody = eclegalbody; + } + + public String getEclegalperson() { + return eclegalperson; + } + + public void setEclegalperson(String eclegalperson) { + this.eclegalperson = eclegalperson; + } + + public String getEcnonprofit() { + return ecnonprofit; + } + + public void setEcnonprofit(String ecnonprofit) { + this.ecnonprofit = ecnonprofit; + } + + public String getEcresearchorganization() { + return ecresearchorganization; + } + + public void setEcresearchorganization(String ecresearchorganization) { + this.ecresearchorganization = ecresearchorganization; + } + + public String getEchighereducation() { + return echighereducation; + } + + public void setEchighereducation(String echighereducation) { + this.echighereducation = echighereducation; + } + + public String getEcinternationalorganizationeurinterests() { + return ecinternationalorganizationeurinterests; + } + + public void setEcinternationalorganizationeurinterests(String ecinternationalorganizationeurinterests) { + this.ecinternationalorganizationeurinterests = ecinternationalorganizationeurinterests; + } + + public String getEcinternationalorganization() { + return ecinternationalorganization; + } + + public void setEcinternationalorganization(String ecinternationalorganization) { + this.ecinternationalorganization = ecinternationalorganization; + } + + public String getEcenterprise() { + return ecenterprise; + } + + public void setEcenterprise(String ecenterprise) { + this.ecenterprise = ecenterprise; + } + + public String getEcsmevalidated() { + return ecsmevalidated; + } + + public void setEcsmevalidated(String ecsmevalidated) { + this.ecsmevalidated = ecsmevalidated; + } + + public String getEcnutscode() { + return ecnutscode; + } + + public void setEcnutscode(String ecnutscode) { + this.ecnutscode = ecnutscode; + } + + public CodeLabel getCountry() { + return country; + } + + public void setCountry(CodeLabel country) { + this.country = country; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java new file mode 100644 index 0000000..0541f6c --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java @@ -0,0 +1,26 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class Pid implements Serializable { + + private String type; + + private String value; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Project.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Project.java new file mode 100644 index 0000000..d38cc42 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Project.java @@ -0,0 +1,171 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +public class Project implements Serializable { + + private String websiteurl; + + private String code; + private String acronym; + private String title; + private String startdate; + private String enddate; + private String callidentifier; + private String keywords; + private String duration; + + private String ecarticle29_3; + + private List subjects; + + private CodeLabel contracttype; + + private String summary; + + private String currency; + + private Float totalcost; + + private Float fundedamount; + + private Funding funding; + + + public String getWebsiteurl() { + return websiteurl; + } + + public void setWebsiteurl(String websiteurl) { + this.websiteurl = websiteurl; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getAcronym() { + return acronym; + } + + public void setAcronym(String acronym) { + this.acronym = acronym; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getStartdate() { + return startdate; + } + + public void setStartdate(String startdate) { + this.startdate = startdate; + } + + public String getEnddate() { + return enddate; + } + + public void setEnddate(String enddate) { + this.enddate = enddate; + } + + public String getCallidentifier() { + return callidentifier; + } + + public void setCallidentifier(String callidentifier) { + this.callidentifier = callidentifier; + } + + public String getKeywords() { + return keywords; + } + + public void setKeywords(String keywords) { + this.keywords = keywords; + } + + public String getDuration() { + return duration; + } + + public void setDuration(String duration) { + this.duration = duration; + } + + public String getEcarticle29_3() { + return ecarticle29_3; + } + + public void setEcarticle29_3(String ecarticle29_3) { + this.ecarticle29_3 = ecarticle29_3; + } + + public List getSubjects() { + return subjects; + } + + public void setSubjects(List subjects) { + this.subjects = subjects; + } + + public CodeLabel getContracttype() { + return contracttype; + } + + public void setContracttype(CodeLabel contracttype) { + this.contracttype = contracttype; + } + + public String getSummary() { + return summary; + } + + public void setSummary(String summary) { + this.summary = summary; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public Float getTotalcost() { + return totalcost; + } + + public void setTotalcost(Float totalcost) { + this.totalcost = totalcost; + } + + public Float getFundedamount() { + return fundedamount; + } + + public void setFundedamount(Float fundedamount) { + this.fundedamount = fundedamount; + } + + public Funding getFunding() { + return funding; + } + + public void setFunding(Funding funding) { + this.funding = funding; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java new file mode 100644 index 0000000..970174a --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java @@ -0,0 +1,26 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class Provenance implements Serializable { + + private String dsId; + + private String dsName; + + public String getDsId() { + return dsId; + } + + public void setDsId(String dsId) { + this.dsId = dsId; + } + + public String getDsName() { + return dsName; + } + + public void setDsName(String dsName) { + this.dsName = dsName; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecord.java b/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecord.java new file mode 100644 index 0000000..61f87db --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecord.java @@ -0,0 +1,216 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +public class RelatedRecord implements Serializable { + + private RelatedRecordHeader header; + + // common fields + private String title; + private String websiteurl; // datasource, organizations, projects + + // results + private String dateofacceptance; + private String publisher; + private List pid; + private String codeRepositoryUrl; + private String resulttype; + private List collectedfrom; + private List instances; + + // datasource + private String officialname; + private CodeLabel datasourcetype; + private CodeLabel datasourcetypeui; + private CodeLabel openairecompatibility; + + // organization + private String legalname; + private String legalshortname; + private Country country; + + // project + private String projectTitle; + private String code; + private String acronym; + private CodeLabel contracttype; + private Funding funding; + + public RelatedRecordHeader getHeader() { + return header; + } + + public void setHeader(RelatedRecordHeader header) { + this.header = header; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getWebsiteurl() { + return websiteurl; + } + + public void setWebsiteurl(String websiteurl) { + this.websiteurl = websiteurl; + } + + public String getDateofacceptance() { + return dateofacceptance; + } + + public void setDateofacceptance(String dateofacceptance) { + this.dateofacceptance = dateofacceptance; + } + + public String getPublisher() { + return publisher; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } + + public List getPid() { + return pid; + } + + public void setPid(List pid) { + this.pid = pid; + } + + public String getCodeRepositoryUrl() { + return codeRepositoryUrl; + } + + public void setCodeRepositoryUrl(String codeRepositoryUrl) { + this.codeRepositoryUrl = codeRepositoryUrl; + } + + public String getResulttype() { + return resulttype; + } + + public void setResulttype(String resulttype) { + this.resulttype = resulttype; + } + + public List getCollectedfrom() { + return collectedfrom; + } + + public void setCollectedfrom(List collectedfrom) { + this.collectedfrom = collectedfrom; + } + + public List getInstances() { + return instances; + } + + public void setInstances(List instances) { + this.instances = instances; + } + + public String getOfficialname() { + return officialname; + } + + public void setOfficialname(String officialname) { + this.officialname = officialname; + } + + public CodeLabel getDatasourcetype() { + return datasourcetype; + } + + public void setDatasourcetype(CodeLabel datasourcetype) { + this.datasourcetype = datasourcetype; + } + + public CodeLabel getDatasourcetypeui() { + return datasourcetypeui; + } + + public void setDatasourcetypeui(CodeLabel datasourcetypeui) { + this.datasourcetypeui = datasourcetypeui; + } + + public CodeLabel getOpenairecompatibility() { + return openairecompatibility; + } + + public void setOpenairecompatibility(CodeLabel openairecompatibility) { + this.openairecompatibility = openairecompatibility; + } + + public String getLegalname() { + return legalname; + } + + public void setLegalname(String legalname) { + this.legalname = legalname; + } + + public String getLegalshortname() { + return legalshortname; + } + + public void setLegalshortname(String legalshortname) { + this.legalshortname = legalshortname; + } + + public Country getCountry() { + return country; + } + + public void setCountry(Country country) { + this.country = country; + } + + public String getProjectTitle() { + return projectTitle; + } + + public void setProjectTitle(String projectTitle) { + this.projectTitle = projectTitle; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getAcronym() { + return acronym; + } + + public void setAcronym(String acronym) { + this.acronym = acronym; + } + + public CodeLabel getContracttype() { + return contracttype; + } + + public void setContracttype(CodeLabel contracttype) { + this.contracttype = contracttype; + } + + public Funding getFunding() { + return funding; + } + + public void setFunding(Funding funding) { + this.funding = funding; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecordHeader.java b/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecordHeader.java new file mode 100644 index 0000000..3de4dbd --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecordHeader.java @@ -0,0 +1,55 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class RelatedRecordHeader implements Serializable { + + private String relationType; + + private String relationClass; + + private String relatedIdentifier; + + private String relatedRecordType; + + public static RelatedRecordHeader newInstance(String relationType, String relationClass, String relatedIdentifier, String relatedRecordType) { + RelatedRecordHeader header = new RelatedRecordHeader(); + header.setRelationType(relationType); + header.setRelationClass(relationClass); + header.setRelatedIdentifier(relatedIdentifier); + header.setRelatedRecordType(relatedRecordType); + return header; + } + + public String getRelationType() { + return relationType; + } + + public void setRelationType(String relationType) { + this.relationType = relationType; + } + + public String getRelationClass() { + return relationClass; + } + + public void setRelationClass(String relationClass) { + this.relationClass = relationClass; + } + + public String getRelatedIdentifier() { + return relatedIdentifier; + } + + public void setRelatedIdentifier(String relatedIdentifier) { + this.relatedIdentifier = relatedIdentifier; + } + + public String getRelatedRecordType() { + return relatedRecordType; + } + + public void setRelatedRecordType(String relatedRecordType) { + this.relatedRecordType = relatedRecordType; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java new file mode 100644 index 0000000..7b7c87d --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java @@ -0,0 +1,161 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Result implements Serializable { + + /** + * Type of the result: one of 'publication', 'dataset', 'software', 'other' (see also https://api.openaire.eu/vocabularies/dnet:result_typologies) + */ + private String resulttype; + + /** + * Authors of the result + */ + private List author; + + /** + * The Subject. + */ + private List subject; + + /** + * The result language + */ + private Language language; + + /** + * The list of countries associated to this result + */ + private List country; + + /** + * A name or title by which a scientific result is known. May be the title of a publication, of a dataset or the name of a piece of software. + */ + private String maintitle; + + /** + * Explanatory or alternative name by which a scientific result is known. + */ + private String subtitle; + + private List description; + + /** + * Main date of the research product: typically the publication or issued date. In case of a research result with + * different versions with different dates, the date of the result is selected as the most frequent well-formatted date. + * If not available, then the most recent and complete date among those that are well-formatted. + * For statistics, the year is extracted and the result is counted only among the result of that year. + * Example: + * Pre-print date: 2019-02-03, + * Article date provided by repository: 2020-02, + * Article date provided by Crossref: 2020, + * OpenAIRE will set as date 2019-02-03, because it’s the most recent among the complete and well-formed dates. + * If then the repository updates the metadata and set a complete date (e.g. 2020-02-12), then this will be the new + * date for the result because it becomes the most recent most complete date. + * However, if OpenAIRE then collects the pre-print from another repository with date 2019-02-03, then this will be + * the “winning date” because it becomes the most frequent well-formatted date. + */ + private String publicationdate; // dateofacceptance + + /** + * The name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource. + */ + private String publisher; + + /** + * Date when the embargo ends and this result turns Open Access + */ + private String embargoenddate; + + /** + * See definition of Dublin Core field dc:source + */ + private List source; + + private List format; + + /** + * Contributors for the result + */ + private List contributor; + + private List coverage; + + /** + * The openest of the access rights of this result. + */ + private BestAccessRight bestaccessright; + + /** + * The direct link to the full-text as collected from the data source + */ + private List fulltext; + + /** + * Journal has information about the conference or journal where the result has been presented or published + */ + private Journal journal; + + /** + * Only for results with type 'software': URL to the software documentation + */ + private List documentationUrl; // software + + /** + * Only for results with type 'software': the URL to the repository with the source code + */ + private String codeRepositoryUrl; // software + + /** + * Only for results with type 'software': the programming language + */ + private String programmingLanguage; // software + + /** + * Only for results with type 'software': Information on the person responsible for providing further information regarding the resource + */ + private List contactperson; // orp + + /** + * Only for results with type 'software': Information on the group responsible for providing further information regarding the resource + */ + private List contactgroup; // orp + + /** + * Only for results with type 'other': tool useful for the interpretation and/or re-used of the research product + */ + private List tool; // orp + + /** + * Only for results with type 'dataset': the declared size of the dataset + */ + private String size; // dataset + + /** + * Version of the result + */ + private String version; // dataset + + @JsonProperty("isGreen") + private Boolean isGreen; + + private OpenAccessColor openAccessColor; + + @JsonProperty("isInDiamondJournal") + private Boolean isInDiamondJournal; + + private Boolean publiclyFunded; + + private String transformativeAgreement; + + /** + * Each instance is one specific materialisation or version of the result. For example, you can have one result with + * three instance: one is the pre-print, one is the post-print, one is te published version + */ + private List instance; + +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java new file mode 100644 index 0000000..167b7e5 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java @@ -0,0 +1,41 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +public class SolrRecord implements Serializable { + + private SolrRecordHeader header; + + private List collectedfrom; + + /** + * List of persistent identifiers + */ + private List pid; + + private List context; + + /** + * EOSC Interoperability Framework Guidelines + */ + private List eoscifguidelines; + + private List measures; + + + private List extraInfo; + + + private Result result; + + private Datasource datasource; + + private Project project; + + private Organization organization; + + private List links; + + +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java new file mode 100644 index 0000000..9d1a65e --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java @@ -0,0 +1,40 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; +import java.util.List; + +public class SolrRecordHeader implements Serializable { + + /** + * The OpenAIRE identifiers for this record + */ + private String id; + + /** + * Identifiers of the record at the original sources + */ + private List originalId; + + public static SolrRecordHeader newInstance(String id, List originalId) { + SolrRecordHeader header = new SolrRecordHeader(); + header.setId(id); + header.setOriginalId(originalId); + return header; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public List getOriginalId() { + return originalId; + } + + public void setOriginalId(List originalId) { + this.originalId = originalId; + } +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java new file mode 100644 index 0000000..2f380ad --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java @@ -0,0 +1,26 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public class Subject implements Serializable { + + private String value; + + private String type; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} From db99c7f113845f7f0b2b723d531f73ada1436a32 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 1 Mar 2024 15:25:28 +0100 Subject: [PATCH 02/13] WIP: defining model classes used to store the json payload in the Solr documents --- .../java/eu/dnetlib/dhp/schema/solr/APC.java | 8 + .../eu/dnetlib/dhp/schema/solr/Author.java | 9 +- .../eu/dnetlib/dhp/schema/solr/Category.java | 2 +- .../eu/dnetlib/dhp/schema/solr/Concept.java | 2 +- .../eu/dnetlib/dhp/schema/solr/Context.java | 2 +- .../eu/dnetlib/dhp/schema/solr/Country.java | 14 +- .../dhp/schema/solr/EoscIfGuidelines.java | 9 + .../eu/dnetlib/dhp/schema/solr/ExtraInfo.java | 2 + .../eu/dnetlib/dhp/schema/solr/Instance.java | 112 ++++++++ .../eu/dnetlib/dhp/schema/solr/Language.java | 13 +- .../java/eu/dnetlib/dhp/schema/solr/Pid.java | 7 + .../dnetlib/dhp/schema/solr/Provenance.java | 7 + .../eu/dnetlib/dhp/schema/solr/Result.java | 268 ++++++++++++++++++ .../dnetlib/dhp/schema/solr/SolrRecord.java | 93 +++++- .../eu/dnetlib/dhp/schema/solr/Subject.java | 7 + 15 files changed, 528 insertions(+), 27 deletions(-) diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java b/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java index 75f5101..045bfbc 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java @@ -10,6 +10,14 @@ public class APC implements Serializable { private String currency; private String amount; + + public static APC newInstance(String currency, String amount) { + APC apc = new APC(); + apc.setCurrency(currency); + apc.setAmount(amount); + return apc; + } + public String getCurrency() { return currency; } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java index 9e79724..a78bd42 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java @@ -1,6 +1,7 @@ package eu.dnetlib.dhp.schema.solr; import java.io.Serializable; +import java.util.List; public class Author implements Serializable { @@ -15,9 +16,9 @@ public class Author implements Serializable { /** * The author's persistent identifiers */ - private Pid pid; + private List pid; - public static Author newInstance(String fullname, String name, String surname, int rank, Pid pid) { + public static Author newInstance(String fullname, String name, String surname, int rank, List pid) { Author a = new Author(); a.setFullname(fullname); a.setName(name); @@ -59,11 +60,11 @@ public class Author implements Serializable { this.rank = rank; } - public Pid getPid() { + public List getPid() { return pid; } - public void setPid(Pid pid) { + public void setPid(List pid) { this.pid = pid; } } \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java index 5b92a67..6015e05 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java @@ -9,7 +9,7 @@ public class Category implements Serializable { private String label; private List concept; - private Category newInstance(String id, String label) { + public Category newInstance(String id, String label) { Category category = new Category(); category.setId(id); category.setLabel(label); diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java index b15d3db..686219b 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java @@ -7,7 +7,7 @@ public class Concept implements Serializable { private String id; private String label; - private Concept newInstance(String id, String label) { + public Concept newInstance(String id, String label) { Concept concept = new Concept(); concept.setId(id); concept.setLabel(label); diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java index 07a90e3..599e1b3 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java @@ -10,7 +10,7 @@ public class Context implements Serializable { private String type; private List category; - private Context newInstance(String id, String label, String type, List category) { + public Context newInstance(String id, String label, String type, List category) { Context context = new Context(); context.setId(id); context.setLabel(label); diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java index 630e85f..b1b6437 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java @@ -21,6 +21,13 @@ public class Country implements Serializable { */ private String label; // the classname in the Qualifier + public static Country newInstance(String code, String label) { + Country c = new Country(); + c.setCode(code); + c.setLabel(label); + return c; + } + public String getCode() { return code; } @@ -37,11 +44,4 @@ public class Country implements Serializable { this.label = label; } - public static Country newInstance(String code, String label) { - Country c = new Country(); - c.setCode(code); - c.setLabel(label); - return c; - } - } \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java b/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java index ee250b8..3ee5583 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java @@ -33,6 +33,15 @@ public class EoscIfGuidelines implements Serializable { */ private String semanticRelation; + public static EoscIfGuidelines newInstance(String code, String label, String url, String semanticRelation) { + EoscIfGuidelines e = new EoscIfGuidelines(); + e.setCode(code); + e.setLabel(label); + e.setUrl(url); + e.setSemanticRelation(semanticRelation); + return e; + } + public String getCode() { return code; } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java b/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java index a3ce98d..cdbdfce 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java @@ -3,4 +3,6 @@ package eu.dnetlib.dhp.schema.solr; import java.io.Serializable; public class ExtraInfo implements Serializable { + + //TODO define me! } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java index b4cff90..21ddd7f 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java @@ -38,4 +38,116 @@ public class Instance implements Serializable { * Direct fulltext URL. */ private String fulltext; + + public String getLicense() { + return license; + } + + public void setLicense(String license) { + this.license = license; + } + + public AccessRight getAccessright() { + return accessright; + } + + public void setAccessright(AccessRight accessright) { + this.accessright = accessright; + } + + public String getInstancetype() { + return instancetype; + } + + public void setInstancetype(String instancetype) { + this.instancetype = instancetype; + } + + public Provenance getHostedby() { + return hostedby; + } + + public void setHostedby(Provenance hostedby) { + this.hostedby = hostedby; + } + + public List getUrl() { + return url; + } + + public void setUrl(List url) { + this.url = url; + } + + public String getDistributionlocation() { + return distributionlocation; + } + + public void setDistributionlocation(String distributionlocation) { + this.distributionlocation = distributionlocation; + } + + public Provenance getCollectedfrom() { + return collectedfrom; + } + + public void setCollectedfrom(Provenance collectedfrom) { + this.collectedfrom = collectedfrom; + } + + public List getPid() { + return pid; + } + + public void setPid(List pid) { + this.pid = pid; + } + + public List getAlternateIdentifier() { + return alternateIdentifier; + } + + public void setAlternateIdentifier(List alternateIdentifier) { + this.alternateIdentifier = alternateIdentifier; + } + + public String getDateofacceptance() { + return dateofacceptance; + } + + public void setDateofacceptance(String dateofacceptance) { + this.dateofacceptance = dateofacceptance; + } + + public APC getProcessingcharges() { + return processingcharges; + } + + public void setProcessingcharges(APC processingcharges) { + this.processingcharges = processingcharges; + } + + public String getRefereed() { + return refereed; + } + + public void setRefereed(String refereed) { + this.refereed = refereed; + } + + public List getMeasures() { + return measures; + } + + public void setMeasures(List measures) { + this.measures = measures; + } + + public String getFulltext() { + return fulltext; + } + + public void setFulltext(String fulltext) { + this.fulltext = fulltext; + } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java index 5f672a7..de8cd9a 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java @@ -14,6 +14,13 @@ public class Language implements Serializable { */ private String label; // the classname in the Qualifier + public static Language newInstance(String code, String label) { + Language lang = new Language(); + lang.setCode(code); + lang.setLabel(label); + return lang; + } + public String getCode() { return code; } @@ -30,10 +37,4 @@ public class Language implements Serializable { this.label = label; } - public static Language newInstance(String code, String value) { - Language qualifier = new Language(); - qualifier.setCode(code); - qualifier.setLabel(value); - return qualifier; - } } \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java index 0541f6c..fec9ac6 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java @@ -8,6 +8,13 @@ public class Pid implements Serializable { private String value; + public static Pid newInstance(String type, String value) { + Pid p = new Pid(); + p.setType(type); + p.setValue(value); + return p; + } + public String getType() { return type; } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java index 970174a..b79245b 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java @@ -8,6 +8,13 @@ public class Provenance implements Serializable { private String dsName; + public static Provenance newInstance(String dsId, String dsName) { + Provenance p = new Provenance(); + p.setDsId(dsId); + p.setDsName(dsName); + return p; + } + public String getDsId() { return dsId; } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java index 7b7c87d..f7ffc75 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java @@ -140,6 +140,11 @@ public class Result implements Serializable { */ private String version; // dataset + /** + * EOSC Interoperability Framework Guidelines + */ + private List eoscifguidelines; + @JsonProperty("isGreen") private Boolean isGreen; @@ -158,4 +163,267 @@ public class Result implements Serializable { */ private List instance; + public String getResulttype() { + return resulttype; + } + + public void setResulttype(String resulttype) { + this.resulttype = resulttype; + } + + public List getAuthor() { + return author; + } + + public void setAuthor(List author) { + this.author = author; + } + + public List getSubject() { + return subject; + } + + public void setSubject(List subject) { + this.subject = subject; + } + + public Language getLanguage() { + return language; + } + + public void setLanguage(Language language) { + this.language = language; + } + + public List getCountry() { + return country; + } + + public void setCountry(List country) { + this.country = country; + } + + public String getMaintitle() { + return maintitle; + } + + public void setMaintitle(String maintitle) { + this.maintitle = maintitle; + } + + public String getSubtitle() { + return subtitle; + } + + public void setSubtitle(String subtitle) { + this.subtitle = subtitle; + } + + public List getDescription() { + return description; + } + + public void setDescription(List description) { + this.description = description; + } + + public String getPublicationdate() { + return publicationdate; + } + + public void setPublicationdate(String publicationdate) { + this.publicationdate = publicationdate; + } + + public String getPublisher() { + return publisher; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } + + public String getEmbargoenddate() { + return embargoenddate; + } + + public void setEmbargoenddate(String embargoenddate) { + this.embargoenddate = embargoenddate; + } + + public List getSource() { + return source; + } + + public void setSource(List source) { + this.source = source; + } + + public List getFormat() { + return format; + } + + public void setFormat(List format) { + this.format = format; + } + + public List getContributor() { + return contributor; + } + + public void setContributor(List contributor) { + this.contributor = contributor; + } + + public List getCoverage() { + return coverage; + } + + public void setCoverage(List coverage) { + this.coverage = coverage; + } + + public BestAccessRight getBestaccessright() { + return bestaccessright; + } + + public void setBestaccessright(BestAccessRight bestaccessright) { + this.bestaccessright = bestaccessright; + } + + public List getFulltext() { + return fulltext; + } + + public void setFulltext(List fulltext) { + this.fulltext = fulltext; + } + + public Journal getJournal() { + return journal; + } + + public void setJournal(Journal journal) { + this.journal = journal; + } + + public List getDocumentationUrl() { + return documentationUrl; + } + + public void setDocumentationUrl(List documentationUrl) { + this.documentationUrl = documentationUrl; + } + + public String getCodeRepositoryUrl() { + return codeRepositoryUrl; + } + + public void setCodeRepositoryUrl(String codeRepositoryUrl) { + this.codeRepositoryUrl = codeRepositoryUrl; + } + + public String getProgrammingLanguage() { + return programmingLanguage; + } + + public void setProgrammingLanguage(String programmingLanguage) { + this.programmingLanguage = programmingLanguage; + } + + public List getContactperson() { + return contactperson; + } + + public void setContactperson(List contactperson) { + this.contactperson = contactperson; + } + + public List getContactgroup() { + return contactgroup; + } + + public void setContactgroup(List contactgroup) { + this.contactgroup = contactgroup; + } + + public List getTool() { + return tool; + } + + public void setTool(List tool) { + this.tool = tool; + } + + public String getSize() { + return size; + } + + public void setSize(String size) { + this.size = size; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public List getEoscifguidelines() { + return eoscifguidelines; + } + + public void setEoscifguidelines(List eoscifguidelines) { + this.eoscifguidelines = eoscifguidelines; + } + + public Boolean getGreen() { + return isGreen; + } + + public void setGreen(Boolean green) { + isGreen = green; + } + + public OpenAccessColor getOpenAccessColor() { + return openAccessColor; + } + + public void setOpenAccessColor(OpenAccessColor openAccessColor) { + this.openAccessColor = openAccessColor; + } + + public Boolean getInDiamondJournal() { + return isInDiamondJournal; + } + + public void setInDiamondJournal(Boolean inDiamondJournal) { + isInDiamondJournal = inDiamondJournal; + } + + public Boolean getPubliclyFunded() { + return publiclyFunded; + } + + public void setPubliclyFunded(Boolean publiclyFunded) { + this.publiclyFunded = publiclyFunded; + } + + public String getTransformativeAgreement() { + return transformativeAgreement; + } + + public void setTransformativeAgreement(String transformativeAgreement) { + this.transformativeAgreement = transformativeAgreement; + } + + public List getInstance() { + return instance; + } + + public void setInstance(List instance) { + this.instance = instance; + } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java index 167b7e5..48e4940 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java @@ -16,17 +16,10 @@ public class SolrRecord implements Serializable { private List context; - /** - * EOSC Interoperability Framework Guidelines - */ - private List eoscifguidelines; - private List measures; - private List extraInfo; - private Result result; private Datasource datasource; @@ -37,5 +30,91 @@ public class SolrRecord implements Serializable { private List links; + public SolrRecordHeader getHeader() { + return header; + } + public void setHeader(SolrRecordHeader header) { + this.header = header; + } + + public List getCollectedfrom() { + return collectedfrom; + } + + public void setCollectedfrom(List collectedfrom) { + this.collectedfrom = collectedfrom; + } + + public List getPid() { + return pid; + } + + public void setPid(List pid) { + this.pid = pid; + } + + public List getContext() { + return context; + } + + public void setContext(List context) { + this.context = context; + } + + public List getMeasures() { + return measures; + } + + public void setMeasures(List measures) { + this.measures = measures; + } + + public List getExtraInfo() { + return extraInfo; + } + + public void setExtraInfo(List extraInfo) { + this.extraInfo = extraInfo; + } + + public Result getResult() { + return result; + } + + public void setResult(Result result) { + this.result = result; + } + + public Datasource getDatasource() { + return datasource; + } + + public void setDatasource(Datasource datasource) { + this.datasource = datasource; + } + + public Project getProject() { + return project; + } + + public void setProject(Project project) { + this.project = project; + } + + public Organization getOrganization() { + return organization; + } + + public void setOrganization(Organization organization) { + this.organization = organization; + } + + public List getLinks() { + return links; + } + + public void setLinks(List links) { + this.links = links; + } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java index 2f380ad..3c4e78b 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java @@ -8,6 +8,13 @@ public class Subject implements Serializable { private String type; + public static Subject newInstance(String value, String type) { + Subject s = new Subject(); + s.setValue(value); + s.setType(type); + return s; + } + public String getValue() { return value; } From da06e17041b1974a1fe7c8b52323813037ef32b7 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 4 Mar 2024 10:58:35 +0100 Subject: [PATCH 03/13] WIP: updated alternative titles definition --- src/main/java/eu/dnetlib/dhp/schema/solr/Result.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java index f7ffc75..de93501 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java @@ -38,9 +38,9 @@ public class Result implements Serializable { private String maintitle; /** - * Explanatory or alternative name by which a scientific result is known. + * Explanatory or alternative names by which a scientific result is known. */ - private String subtitle; + private List otherTitles; private List description; @@ -211,12 +211,12 @@ public class Result implements Serializable { this.maintitle = maintitle; } - public String getSubtitle() { - return subtitle; + public List getOtherTitles() { + return otherTitles; } - public void setSubtitle(String subtitle) { - this.subtitle = subtitle; + public void setOtherTitles(List otherTitles) { + this.otherTitles = otherTitles; } public List getDescription() { From 890c039a919634ad72a836792f131171eb1082b9 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 4 Mar 2024 16:28:37 +0100 Subject: [PATCH 04/13] WIP: updated static builders --- src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java | 7 +++++++ src/main/java/eu/dnetlib/dhp/schema/solr/Category.java | 2 +- src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java | 2 +- src/main/java/eu/dnetlib/dhp/schema/solr/Context.java | 2 +- src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java | 6 +++--- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java b/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java index db22675..b6e853d 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java @@ -12,6 +12,13 @@ public class AccessRight { private OpenAccessRoute openAccessRoute; + public static AccessRight newInstance(String value, OpenAccessRoute openAccessRoute) { + AccessRight accessRight = new AccessRight(); + accessRight.setValue(value); + accessRight.setOpenAccessRoute(openAccessRoute); + return accessRight; + } + public String getValue() { return value; } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java index 6015e05..8adfd72 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java @@ -9,7 +9,7 @@ public class Category implements Serializable { private String label; private List concept; - public Category newInstance(String id, String label) { + public static Category newInstance(String id, String label) { Category category = new Category(); category.setId(id); category.setLabel(label); diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java index 686219b..71b5b19 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java @@ -7,7 +7,7 @@ public class Concept implements Serializable { private String id; private String label; - public Concept newInstance(String id, String label) { + public static Concept newInstance(String id, String label) { Concept concept = new Concept(); concept.setId(id); concept.setLabel(label); diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java index 599e1b3..e3c76b7 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java @@ -10,7 +10,7 @@ public class Context implements Serializable { private String type; private List category; - public Context newInstance(String id, String label, String type, List category) { + public static Context newInstance(String id, String label, String type, List category) { Context context = new Context(); context.setId(id); context.setLabel(label); diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java index 60c3178..04612be 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java @@ -9,15 +9,15 @@ public class Funding implements Serializable { private FundingLevel level1; private FundingLevel level2; - public Funding newInstance(Funder funder, FundingLevel level0) { + public static Funding newInstance(Funder funder, FundingLevel level0) { return newInstance(funder, level0, null, null); } - public Funding newInstance(Funder funder, FundingLevel level0, FundingLevel level1) { + public static Funding newInstance(Funder funder, FundingLevel level0, FundingLevel level1) { return newInstance(funder, level0, level1, null); } - public Funding newInstance(Funder funder, FundingLevel level0, FundingLevel level1, FundingLevel level2) { + public static Funding newInstance(Funder funder, FundingLevel level0, FundingLevel level1, FundingLevel level2) { Funding funding = new Funding(); funding.setFunder(funder); funding.setLevel0(level0); From b0eec2e5bb067ea45561cd08b26e6f7ad9ccaf49 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Wed, 6 Mar 2024 20:49:27 +0100 Subject: [PATCH 05/13] added serialVersionUID --- .../eu/dnetlib/dhp/schema/oaf/AccessRight.java | 1 + .../java/eu/dnetlib/dhp/schema/oaf/Author.java | 1 + .../java/eu/dnetlib/dhp/schema/oaf/Context.java | 2 ++ .../java/eu/dnetlib/dhp/schema/oaf/Country.java | 1 + .../java/eu/dnetlib/dhp/schema/oaf/DataInfo.java | 2 ++ .../java/eu/dnetlib/dhp/schema/oaf/Dataset.java | 1 + .../eu/dnetlib/dhp/schema/oaf/Datasource.java | 3 --- .../dnetlib/dhp/schema/oaf/EoscIfGuidelines.java | 1 + .../dnetlib/dhp/schema/oaf/ExternalReference.java | 2 ++ .../java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java | 2 ++ .../java/eu/dnetlib/dhp/schema/oaf/Field.java | 1 + .../eu/dnetlib/dhp/schema/oaf/GeoLocation.java | 1 + .../dhp/schema/oaf/H2020Classification.java | 3 ++- .../eu/dnetlib/dhp/schema/oaf/H2020Programme.java | 3 ++- .../java/eu/dnetlib/dhp/schema/oaf/Instance.java | 1 + .../dhp/schema/oaf/InstanceTypeMapping.java | 1 + .../java/eu/dnetlib/dhp/schema/oaf/Journal.java | 2 ++ .../java/eu/dnetlib/dhp/schema/oaf/KeyValue.java | 1 + .../java/eu/dnetlib/dhp/schema/oaf/Measure.java | 1 + .../eu/dnetlib/dhp/schema/oaf/OAIProvenance.java | 2 ++ src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java | 1 + .../java/eu/dnetlib/dhp/schema/oaf/OafEntity.java | 2 ++ .../dnetlib/dhp/schema/oaf/OpenAccessColor.java | 5 +++-- .../eu/dnetlib/dhp/schema/oaf/Organization.java | 2 ++ .../dnetlib/dhp/schema/oaf/OriginDescription.java | 2 ++ .../dhp/schema/oaf/OtherResearchProduct.java | 2 ++ .../java/eu/dnetlib/dhp/schema/oaf/Project.java | 2 ++ .../eu/dnetlib/dhp/schema/oaf/Publication.java | 2 ++ .../java/eu/dnetlib/dhp/schema/oaf/Qualifier.java | 2 +- .../java/eu/dnetlib/dhp/schema/oaf/Relation.java | 2 ++ .../java/eu/dnetlib/dhp/schema/oaf/Result.java | 2 ++ .../java/eu/dnetlib/dhp/schema/oaf/Software.java | 2 ++ .../dhp/schema/oaf/StructuredProperty.java | 2 ++ .../java/eu/dnetlib/dhp/schema/oaf/Subject.java | 3 +++ src/main/java/eu/dnetlib/dhp/schema/solr/APC.java | 7 +++++-- .../eu/dnetlib/dhp/schema/solr/AccessRight.java | 6 ++++-- .../java/eu/dnetlib/dhp/schema/solr/Author.java | 2 ++ .../dnetlib/dhp/schema/solr/BestAccessRight.java | 2 ++ .../java/eu/dnetlib/dhp/schema/solr/Category.java | 4 +++- .../eu/dnetlib/dhp/schema/solr/CodeLabel.java | 2 ++ .../java/eu/dnetlib/dhp/schema/solr/Concept.java | 2 ++ .../java/eu/dnetlib/dhp/schema/solr/Context.java | 4 +++- .../java/eu/dnetlib/dhp/schema/solr/Country.java | 2 ++ .../eu/dnetlib/dhp/schema/solr/Datasource.java | 1 + .../dnetlib/dhp/schema/solr/EoscIfGuidelines.java | 2 ++ .../eu/dnetlib/dhp/schema/solr/ExtraInfo.java | 2 ++ .../java/eu/dnetlib/dhp/schema/solr/Funder.java | 2 ++ .../java/eu/dnetlib/dhp/schema/solr/Funding.java | 2 ++ .../eu/dnetlib/dhp/schema/solr/FundingLevel.java | 2 ++ .../java/eu/dnetlib/dhp/schema/solr/Instance.java | 2 ++ .../java/eu/dnetlib/dhp/schema/solr/Journal.java | 2 ++ .../java/eu/dnetlib/dhp/schema/solr/Language.java | 2 ++ .../java/eu/dnetlib/dhp/schema/solr/Measure.java | 2 ++ .../eu/dnetlib/dhp/schema/solr/Organization.java | 2 ++ src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java | 2 ++ .../java/eu/dnetlib/dhp/schema/solr/Project.java | 2 ++ .../eu/dnetlib/dhp/schema/solr/Provenance.java | 2 ++ .../eu/dnetlib/dhp/schema/solr/RecordType.java | 14 ++++++++++++++ .../eu/dnetlib/dhp/schema/solr/RelatedRecord.java | 2 ++ .../dhp/schema/solr/RelatedRecordHeader.java | 10 ++++++---- .../java/eu/dnetlib/dhp/schema/solr/Result.java | 2 ++ .../eu/dnetlib/dhp/schema/solr/SolrRecord.java | 2 ++ .../dnetlib/dhp/schema/solr/SolrRecordHeader.java | 15 ++++++++++++++- .../java/eu/dnetlib/dhp/schema/solr/Subject.java | 2 ++ 64 files changed, 149 insertions(+), 19 deletions(-) create mode 100644 src/main/java/eu/dnetlib/dhp/schema/solr/RecordType.java diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java index c680555..d2b4706 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java @@ -8,6 +8,7 @@ import java.util.Optional; */ public class AccessRight extends Qualifier { + private static final long serialVersionUID = -8945177777173510134L; private OpenAccessRoute openAccessRoute; public OpenAccessRoute getOpenAccessRoute() { diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java index b2f757d..34e372f 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java @@ -6,6 +6,7 @@ import java.util.*; public class Author implements Serializable { + private static final long serialVersionUID = 1625492739044457437L; private String fullname; private String name; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java index 57912c4..d46c8d5 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java @@ -5,6 +5,8 @@ import java.io.Serializable; import java.util.List; public class Context implements Serializable { + + private static final long serialVersionUID = -778899398223144398L; private String id; private List dataInfo; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Country.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Country.java index e25fdca..75fb1da 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Country.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Country.java @@ -5,6 +5,7 @@ import java.util.Objects; public class Country extends Qualifier { + private static final long serialVersionUID = 1587334433446567175L; private DataInfo dataInfo; public DataInfo getDataInfo() { diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java index 9d572ee..6fe447f 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java @@ -6,6 +6,8 @@ import java.util.Objects; public class DataInfo implements Serializable { + private static final long serialVersionUID = -277099962930866451L; + private Boolean invisible = false; private Boolean inferred; private Boolean deletedbyinference = false; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java index b5587c6..9473b66 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java @@ -8,6 +8,7 @@ import eu.dnetlib.dhp.schema.common.ModelConstants; public class Dataset extends Result implements Serializable { + private static final long serialVersionUID = 916526716184645549L; private Field storagedate; // candidate for removal diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java index 5067ada..c392b6c 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java @@ -6,9 +6,6 @@ import java.util.List; public class Datasource extends OafEntity implements Serializable { - /** - * - */ private static final long serialVersionUID = 1019089598408414496L; @Deprecated diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java index 2e8a1b6..07aece3 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java @@ -12,6 +12,7 @@ import org.apache.commons.lang3.StringUtils; */ public class EoscIfGuidelines implements Serializable { + private static final long serialVersionUID = -2166497471601245048L; /** * EOSC-IF local code. Later on it could be populated with a PID (e.g. DOI), but for the time being we stick to * a more loose definition. diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java index 0689b44..c0f5dc6 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java @@ -6,6 +6,8 @@ import java.util.List; import java.util.Objects; public class ExternalReference implements Serializable { + + private static final long serialVersionUID = -3711445600549155961L; // source private String sitename; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java index 3682cc2..5c93447 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java @@ -5,6 +5,8 @@ import java.io.Serializable; import java.util.Objects; public class ExtraInfo implements Serializable { + + private static final long serialVersionUID = 8689244676887698486L; private String name; private String typology; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java index 8358bc4..6fea24e 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java @@ -6,6 +6,7 @@ import java.util.Objects; public class Field implements Serializable { + private static final long serialVersionUID = -4255501306375330131L; private T value; private DataInfo dataInfo; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java index 7ed313a..35981e8 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java @@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; public class GeoLocation implements Serializable { + private static final long serialVersionUID = 8096534610208458404L; private String point; private String box; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Classification.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Classification.java index 219bdc0..52f9b8e 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Classification.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Classification.java @@ -21,8 +21,9 @@ import java.util.Objects; * - private String level3 to store the information about the level3 of the classification * - private String classification to store the entire classification related to the programme */ - public class H2020Classification implements Serializable { + + private static final long serialVersionUID = 1062734689288369769L; private H2020Programme h2020Programme; private String level1; private String level2; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Programme.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Programme.java index 101d46d..0d9913c 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Programme.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Programme.java @@ -9,8 +9,9 @@ import java.util.Objects; * - private String code to store the code of the programme * - private String description to store the description of the programme */ - public class H2020Programme implements Serializable { + + private static final long serialVersionUID = -7851791644568592481L; private String code; private String description; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java index 095eae5..8c802f5 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java @@ -6,6 +6,7 @@ import java.util.List; public class Instance implements Serializable { + private static final long serialVersionUID = 3918544870298859300L; private Field license; private AccessRight accessright; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/InstanceTypeMapping.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/InstanceTypeMapping.java index ac8e6a2..f770e92 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/InstanceTypeMapping.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/InstanceTypeMapping.java @@ -7,6 +7,7 @@ import java.io.Serializable; */ public class InstanceTypeMapping implements Serializable { + private static final long serialVersionUID = -8209930054790495309L; /** * Original resource type, typically mapped from dc:type, datacite:resourceType. */ diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java index 7a375e2..8a086bf 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java @@ -6,6 +6,8 @@ import java.util.Objects; public class Journal implements Serializable { + private static final long serialVersionUID = -8476321782780781681L; + private String name; private String issnPrinted; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java index 4e2d601..a2fef7b 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java @@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; public class KeyValue implements Serializable { + private static final long serialVersionUID = 1905267445569591240L; private String key; private String value; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Measure.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Measure.java index 78a4c68..ca0073e 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Measure.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Measure.java @@ -11,6 +11,7 @@ import com.google.common.base.Objects; */ public class Measure implements Serializable { + private static final long serialVersionUID = 8383308453679722661L; /** * Unique measure identifier. */ diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java index 88d74af..52d4dcd 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java @@ -6,6 +6,8 @@ import java.util.Objects; public class OAIProvenance implements Serializable { + private static final long serialVersionUID = -767252660700352729L; + private OriginDescription originDescription; public OriginDescription getOriginDescription() { diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java index 0df5572..a845c33 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java @@ -11,6 +11,7 @@ import java.util.stream.Stream; public abstract class Oaf implements Serializable { + private static final long serialVersionUID = 94599232915572420L; /** * The list of datasource id/name pairs providing this relationship. */ diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java index 00c5729..050840d 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java @@ -7,6 +7,8 @@ import java.util.stream.Collectors; public abstract class OafEntity extends Oaf implements Serializable { + private static final long serialVersionUID = -7793594664115821897L; + private String id; private List originalId; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OpenAccessColor.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OpenAccessColor.java index 3e4b250..cafa237 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OpenAccessColor.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OpenAccessColor.java @@ -1,11 +1,12 @@ package eu.dnetlib.dhp.schema.oaf; +import java.io.Serializable; + /** * The OpenAccess color meant to be used on the result level */ -public enum OpenAccessColor { - +public enum OpenAccessColor implements Serializable { gold, hybrid, bronze } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java index a5f9bce..5db20ce 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java @@ -6,6 +6,8 @@ import java.util.List; public class Organization extends OafEntity implements Serializable { + private static final long serialVersionUID = -9048723860770504113L; + private Field legalshortname; private Field legalname; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java index a275fc1..6876353 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java @@ -6,6 +6,8 @@ import java.util.Objects; public class OriginDescription implements Serializable { + private static final long serialVersionUID = -7256156902727658863L; + private String harvestDate; private Boolean altered = true; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java index b04934c..4dc23ef 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java @@ -8,6 +8,8 @@ import eu.dnetlib.dhp.schema.common.ModelConstants; public class OtherResearchProduct extends Result implements Serializable { + private static final long serialVersionUID = -7611546868867175491L; + private List> contactperson; private List> contactgroup; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java index 0798212..68f1d70 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java @@ -8,6 +8,8 @@ import org.apache.commons.lang3.StringUtils; public class Project extends OafEntity implements Serializable { + private static final long serialVersionUID = 5783959097903529424L; + private Field websiteurl; private Field code; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Publication.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Publication.java index 3058c26..6126dad 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Publication.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Publication.java @@ -7,6 +7,8 @@ import eu.dnetlib.dhp.schema.common.ModelConstants; public class Publication extends Result implements Serializable { + private static final long serialVersionUID = 4155353046627214846L; + // publication specific private Journal journal; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java index 87ecb55..895c55b 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java @@ -8,7 +8,7 @@ import org.apache.commons.lang3.StringUtils; import com.fasterxml.jackson.annotation.JsonIgnore; public class Qualifier implements Serializable { - + private static final long serialVersionUID = 6632548656644563076L; private String classid; private String classname; private String schemeid; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java index fc6c5e0..46a9325 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java @@ -18,6 +18,8 @@ import eu.dnetlib.dhp.schema.common.ModelSupport; */ public class Relation extends Oaf { + private static final long serialVersionUID = -7061565324218172207L; + /** * Main relationship classifier, values include 'resultResult', 'resultProject', 'resultOrganization', etc. */ diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java index 02fac7b..7fc5af9 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java @@ -23,6 +23,8 @@ import eu.dnetlib.dhp.schema.oaf.utils.CleaningFunctions; */ public class Result extends OafEntity implements Serializable { + private static final long serialVersionUID = 5597290552671699408L; + /** * ( article | book ) processing charges. */ diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Software.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Software.java index d25b5c9..6435a1a 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Software.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Software.java @@ -8,6 +8,8 @@ import eu.dnetlib.dhp.schema.common.ModelConstants; public class Software extends Result implements Serializable { + private static final long serialVersionUID = -3096641763359312576L; + private List> documentationUrl; // candidate for removal diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java index 8750950..20cf8f3 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java @@ -10,6 +10,8 @@ import org.apache.commons.lang3.StringUtils; public class StructuredProperty implements Serializable { + private static final long serialVersionUID = -8490243153237377762L; + private String value; private Qualifier qualifier; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Subject.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Subject.java index b06ceb2..61e20b5 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Subject.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Subject.java @@ -3,4 +3,7 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; public class Subject extends StructuredProperty implements Serializable { + + private static final long serialVersionUID = 5072481219939207428L; + } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java b/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java index 045bfbc..a3c5cd0 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/APC.java @@ -7,9 +7,12 @@ import java.io.Serializable; * currency of type String to store the currency of the APC - amount of type String to stores the charged amount */ public class APC implements Serializable { - private String currency; - private String amount; + private static final long serialVersionUID = 8324447899738993669L; + + private String currency; + + private String amount; public static APC newInstance(String currency, String amount) { APC apc = new APC(); diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java b/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java index b6e853d..7981bc9 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/AccessRight.java @@ -1,12 +1,14 @@ package eu.dnetlib.dhp.schema.solr; -import java.util.Optional; +import java.io.Serializable; /** * This class models the access rights of research products. */ -public class AccessRight { +public class AccessRight implements Serializable { + + private static final long serialVersionUID = 7995566912611238604L; private String value; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java index a78bd42..7d2f5df 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Author.java @@ -5,6 +5,8 @@ import java.util.List; public class Author implements Serializable { + private static final long serialVersionUID = 5482727671039062564L; + private String fullname; private String name; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/BestAccessRight.java b/src/main/java/eu/dnetlib/dhp/schema/solr/BestAccessRight.java index 5e4905d..c1e466e 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/BestAccessRight.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/BestAccessRight.java @@ -7,6 +7,8 @@ import java.io.Serializable; */ public class BestAccessRight implements Serializable { + private static final long serialVersionUID = 689431927147731065L; + /** * AccessRight code */ diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java index 8adfd72..96a2178 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Category.java @@ -3,11 +3,13 @@ package eu.dnetlib.dhp.schema.solr; import java.io.Serializable; import java.util.List; +import com.google.common.collect.Lists; + public class Category implements Serializable { private String id; private String label; - private List concept; + private List concept = Lists.newArrayList(); public static Category newInstance(String id, String label) { Category category = new Category(); diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/CodeLabel.java b/src/main/java/eu/dnetlib/dhp/schema/solr/CodeLabel.java index 29be542..a49e914 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/CodeLabel.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/CodeLabel.java @@ -4,6 +4,8 @@ import java.io.Serializable; public class CodeLabel implements Serializable { + private static final long serialVersionUID = 8182033641583483845L; + private String code; private String label; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java index 71b5b19..32f7e08 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Concept.java @@ -4,6 +4,8 @@ import java.io.Serializable; public class Concept implements Serializable { + private static final long serialVersionUID = -2309379406128410374L; + private String id; private String label; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java index e3c76b7..dc60f3c 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Context.java @@ -3,12 +3,14 @@ package eu.dnetlib.dhp.schema.solr; import java.io.Serializable; import java.util.List; +import com.google.common.collect.Lists; + public class Context implements Serializable { private String id; private String label; private String type; - private List category; + private List category = Lists.newArrayList(); public static Context newInstance(String id, String label, String type, List category) { Context context = new Context(); diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java index b1b6437..fd3ba02 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Country.java @@ -11,6 +11,8 @@ import java.io.Serializable; */ public class Country implements Serializable { + private static final long serialVersionUID = 544249673120027949L; + /** * ISO 3166-1 alpha-2 country code (i.e. IT) */ diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Datasource.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Datasource.java index e0d3579..6671138 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Datasource.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Datasource.java @@ -5,6 +5,7 @@ import java.util.List; public class Datasource implements Serializable { + private static final long serialVersionUID = -5817484869244344681L; private CodeLabel datasourcetype; private CodeLabel datasourcetypeui; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java b/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java index 3ee5583..3f2ac0a 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/EoscIfGuidelines.java @@ -12,6 +12,8 @@ import org.apache.commons.lang3.StringUtils; */ public class EoscIfGuidelines implements Serializable { + private static final long serialVersionUID = -6460491699309783829L; + /** * EOSC-IF local code. Later on it could be populated with a PID (e.g. DOI), but for the time being we stick to * a more loose definition. diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java b/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java index cdbdfce..2e3ea83 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/ExtraInfo.java @@ -4,5 +4,7 @@ import java.io.Serializable; public class ExtraInfo implements Serializable { + private static final long serialVersionUID = -6627854860189757709L; + //TODO define me! } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Funder.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Funder.java index 60320a2..890da67 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Funder.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Funder.java @@ -5,6 +5,8 @@ import java.util.List; public class Funder implements Serializable { + private static final long serialVersionUID = -8008317145200052214L; + private String id; private String shortname; private String name; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java index 04612be..42df5c2 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Funding.java @@ -4,6 +4,8 @@ import java.io.Serializable; public class Funding implements Serializable { + private static final long serialVersionUID = 1811734787904369695L; + private Funder funder; private FundingLevel level0; private FundingLevel level1; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/FundingLevel.java b/src/main/java/eu/dnetlib/dhp/schema/solr/FundingLevel.java index d559ab5..93a56f3 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/FundingLevel.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/FundingLevel.java @@ -4,6 +4,8 @@ import java.io.Serializable; public class FundingLevel implements Serializable { + private static final long serialVersionUID = 8270506546250477574L; + private String id; private String description; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java index 21ddd7f..49c2263 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Instance.java @@ -5,6 +5,8 @@ import java.util.List; public class Instance implements Serializable { + private static final long serialVersionUID = 7440831757124257169L; + private String license; private AccessRight accessright; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Journal.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Journal.java index da4a8f1..23c4487 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Journal.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Journal.java @@ -4,6 +4,8 @@ import java.io.Serializable; public class Journal implements Serializable { + private static final long serialVersionUID = -103050431178898773L; + /** * Name of the journal or conference */ diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java index de8cd9a..c6b84be 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Language.java @@ -4,6 +4,8 @@ import java.io.Serializable; public class Language implements Serializable { + private static final long serialVersionUID = -8308628905005193974L; + /** * alpha-3/ISO 639-2 code of the language */ diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Measure.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Measure.java index 063f694..5495ab2 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Measure.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Measure.java @@ -4,5 +4,7 @@ import java.io.Serializable; public class Measure implements Serializable { + private static final long serialVersionUID = 57939927121851504L; + //TODO define me! } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Organization.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Organization.java index 8832e83..bf95575 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Organization.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Organization.java @@ -5,6 +5,8 @@ import java.util.List; public class Organization implements Serializable { + private static final long serialVersionUID = -4287924905285274034L; + private String legalshortname; private String legalname; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java index fec9ac6..7c42c29 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Pid.java @@ -4,6 +4,8 @@ import java.io.Serializable; public class Pid implements Serializable { + private static final long serialVersionUID = -943684282582228545L; + private String type; private String value; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Project.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Project.java index d38cc42..c41c4fa 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Project.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Project.java @@ -5,6 +5,8 @@ import java.util.List; public class Project implements Serializable { + private static final long serialVersionUID = -3712733565189222788L; + private String websiteurl; private String code; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java index b79245b..05c96c6 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Provenance.java @@ -4,6 +4,8 @@ import java.io.Serializable; public class Provenance implements Serializable { + private static final long serialVersionUID = -474833313621479191L; + private String dsId; private String dsName; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/RecordType.java b/src/main/java/eu/dnetlib/dhp/schema/solr/RecordType.java new file mode 100644 index 0000000..1f4b13e --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/RecordType.java @@ -0,0 +1,14 @@ +package eu.dnetlib.dhp.schema.solr; + +import java.io.Serializable; + +public enum RecordType implements Serializable { + publication, + dataset, + otherresearchproduct, + software, + datasource, + organization, + project; + +} diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecord.java b/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecord.java index 61f87db..1b20777 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecord.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecord.java @@ -5,6 +5,8 @@ import java.util.List; public class RelatedRecord implements Serializable { + private static final long serialVersionUID = -7251015928787319389L; + private RelatedRecordHeader header; // common fields diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecordHeader.java b/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecordHeader.java index 3de4dbd..db89b6c 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecordHeader.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/RelatedRecordHeader.java @@ -4,15 +4,17 @@ import java.io.Serializable; public class RelatedRecordHeader implements Serializable { + private static final long serialVersionUID = -1491635071695452382L; + private String relationType; private String relationClass; private String relatedIdentifier; - private String relatedRecordType; + private RecordType relatedRecordType; - public static RelatedRecordHeader newInstance(String relationType, String relationClass, String relatedIdentifier, String relatedRecordType) { + public static RelatedRecordHeader newInstance(String relationType, String relationClass, String relatedIdentifier, RecordType relatedRecordType) { RelatedRecordHeader header = new RelatedRecordHeader(); header.setRelationType(relationType); header.setRelationClass(relationClass); @@ -45,11 +47,11 @@ public class RelatedRecordHeader implements Serializable { this.relatedIdentifier = relatedIdentifier; } - public String getRelatedRecordType() { + public RecordType getRelatedRecordType() { return relatedRecordType; } - public void setRelatedRecordType(String relatedRecordType) { + public void setRelatedRecordType(RecordType relatedRecordType) { this.relatedRecordType = relatedRecordType; } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java index de93501..a8e481d 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Result.java @@ -7,6 +7,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class Result implements Serializable { + private static final long serialVersionUID = -9121038426985022737L; + /** * Type of the result: one of 'publication', 'dataset', 'software', 'other' (see also https://api.openaire.eu/vocabularies/dnet:result_typologies) */ diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java index 48e4940..5879af9 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecord.java @@ -5,6 +5,8 @@ import java.util.List; public class SolrRecord implements Serializable { + private static final long serialVersionUID = 2852901817696335899L; + private SolrRecordHeader header; private List collectedfrom; diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java index 9d1a65e..9d49237 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java @@ -5,6 +5,8 @@ import java.util.List; public class SolrRecordHeader implements Serializable { + private static final long serialVersionUID = -6052397109220149426L; + /** * The OpenAIRE identifiers for this record */ @@ -15,10 +17,13 @@ public class SolrRecordHeader implements Serializable { */ private List originalId; - public static SolrRecordHeader newInstance(String id, List originalId) { + private RecordType recordType; + + public static SolrRecordHeader newInstance(String id, List originalId, RecordType recordType) { SolrRecordHeader header = new SolrRecordHeader(); header.setId(id); header.setOriginalId(originalId); + header.setRecordType(recordType); return header; } @@ -37,4 +42,12 @@ public class SolrRecordHeader implements Serializable { public void setOriginalId(List originalId) { this.originalId = originalId; } + + public RecordType getRecordType() { + return recordType; + } + + public void setRecordType(RecordType recordType) { + this.recordType = recordType; + } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java b/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java index 3c4e78b..9f13c41 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/Subject.java @@ -4,6 +4,8 @@ import java.io.Serializable; public class Subject implements Serializable { + private static final long serialVersionUID = -7242293435544930481L; + private String value; private String type; From 04654b16f9eaed545bb2228fe7a6cf158a667be9 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Tue, 12 Mar 2024 09:55:21 +0100 Subject: [PATCH 06/13] WIP: included deletedbyinference flag --- .../dnetlib/dhp/schema/solr/SolrRecordHeader.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java index 9d49237..04bde53 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java +++ b/src/main/java/eu/dnetlib/dhp/schema/solr/SolrRecordHeader.java @@ -19,11 +19,14 @@ public class SolrRecordHeader implements Serializable { private RecordType recordType; - public static SolrRecordHeader newInstance(String id, List originalId, RecordType recordType) { + private Boolean deletedbyinference; + + public static SolrRecordHeader newInstance(String id, List originalId, RecordType recordType, Boolean deletedbyinference) { SolrRecordHeader header = new SolrRecordHeader(); header.setId(id); header.setOriginalId(originalId); header.setRecordType(recordType); + header.setDeletedbyinference(deletedbyinference); return header; } @@ -50,4 +53,12 @@ public class SolrRecordHeader implements Serializable { public void setRecordType(RecordType recordType) { this.recordType = recordType; } + + public Boolean getDeletedbyinference() { + return deletedbyinference; + } + + public void setDeletedbyinference(Boolean deletedbyinference) { + this.deletedbyinference = deletedbyinference; + } } From 4488c3eb60767ed5095f1914b9ec833e0b884623 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 22 Mar 2024 10:22:23 +0100 Subject: [PATCH 07/13] added more model hard limits --- .../java/eu/dnetlib/dhp/schema/oaf/utils/ModelHardLimits.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ModelHardLimits.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ModelHardLimits.java index ea40509..443a496 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ModelHardLimits.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ModelHardLimits.java @@ -14,7 +14,9 @@ public class ModelHardLimits { public static final int MAX_AUTHOR_FULLNAME_LENGTH = 1000; public static final int MAX_TITLE_LENGTH = 5000; public static final int MAX_TITLES = 10; + public static final int MAX_ABSTRACTS = 10; public static final int MAX_ABSTRACT_LENGTH = 150000; + public static final int MAX_RELATED_ABSTRACT_LENGTH = 500; public static final int MAX_INSTANCES = 10; public static String getCollectionName(String format) { From 17f69b4cb4fbadd5f95a7ee5cd902b21f459db68 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 22 Mar 2024 10:24:15 +0100 Subject: [PATCH 08/13] [maven-release-plugin] prepare release dhp-schemas-6.0.0 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 02d05d5..90e567c 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ eu.dnetlib.dhp dhp-schemas jar - 6.0.0-SNAPSHOT + 6.0.0 @@ -32,7 +32,7 @@ scm:git:gitea@code-repo.d4science.org:D-Net/dhp-schemas.git scm:git:gitea@code-repo.d4science.org:D-Net/dhp-schemas.git https://code-repo.d4science.org/D-Net/dhp-schemas/ - dhp-schemas-2.10.30 + dhp-schemas-6.0.0 This module contains common schema classes meant to be used across the dnet-hadoop submodules From 46eec69aed616a6251bb698ebf8eb88b074b6e3b Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 22 Mar 2024 10:24:19 +0100 Subject: [PATCH 09/13] [maven-release-plugin] prepare for next development iteration --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 90e567c..398132c 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ eu.dnetlib.dhp dhp-schemas jar - 6.0.0 + 6.0.1-SNAPSHOT @@ -32,7 +32,7 @@ scm:git:gitea@code-repo.d4science.org:D-Net/dhp-schemas.git scm:git:gitea@code-repo.d4science.org:D-Net/dhp-schemas.git https://code-repo.d4science.org/D-Net/dhp-schemas/ - dhp-schemas-6.0.0 + dhp-schemas-2.10.30 This module contains common schema classes meant to be used across the dnet-hadoop submodules From 7480ec0ab32c1df14e30d555d70a278d4003b147 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 22 Mar 2024 16:10:20 +0100 Subject: [PATCH 10/13] removed equals and hashcode methods from the Oaf model, utility classes moved in dhp-common --- pom.xml | 2 +- .../dnetlib/dhp/schema/oaf/AccessRight.java | 29 +- .../eu/dnetlib/dhp/schema/oaf/Author.java | 20 - .../eu/dnetlib/dhp/schema/oaf/Context.java | 19 +- .../eu/dnetlib/dhp/schema/oaf/Country.java | 18 - .../eu/dnetlib/dhp/schema/oaf/DataInfo.java | 21 - .../eu/dnetlib/dhp/schema/oaf/Dataset.java | 30 - .../eu/dnetlib/dhp/schema/oaf/Datasource.java | 5 - .../dhp/schema/oaf/EoscIfGuidelines.java | 30 +- .../dhp/schema/oaf/ExternalReference.java | 23 - .../eu/dnetlib/dhp/schema/oaf/ExtraInfo.java | 18 - .../dnetlib/dhp/schema/oaf/GeoLocation.java | 35 +- .../dhp/schema/oaf/H2020Classification.java | 15 - .../dhp/schema/oaf/H2020Programme.java | 11 - .../eu/dnetlib/dhp/schema/oaf/Instance.java | 32 +- .../eu/dnetlib/dhp/schema/oaf/Journal.java | 38 - .../eu/dnetlib/dhp/schema/oaf/KeyValue.java | 35 +- .../eu/dnetlib/dhp/schema/oaf/Measure.java | 19 - .../dnetlib/dhp/schema/oaf/OAIProvenance.java | 14 - .../java/eu/dnetlib/dhp/schema/oaf/Oaf.java | 61 -- .../eu/dnetlib/dhp/schema/oaf/OafEntity.java | 46 +- .../dnetlib/dhp/schema/oaf/Organization.java | 44 -- .../dhp/schema/oaf/OriginDescription.java | 19 - .../dhp/schema/oaf/OtherResearchProduct.java | 15 - .../eu/dnetlib/dhp/schema/oaf/Project.java | 60 -- .../dnetlib/dhp/schema/oaf/Publication.java | 14 - .../eu/dnetlib/dhp/schema/oaf/Qualifier.java | 44 +- .../eu/dnetlib/dhp/schema/oaf/Relation.java | 38 +- .../eu/dnetlib/dhp/schema/oaf/Result.java | 363 +-------- .../eu/dnetlib/dhp/schema/oaf/Software.java | 23 - .../dhp/schema/oaf/StructuredProperty.java | 28 +- .../schema/oaf/utils/CleaningFunctions.java | 74 -- .../schema/oaf/utils/IdentifierFactory.java | 292 -------- .../dhp/schema/oaf/utils/ModelHardLimits.java | 26 - .../oaf/utils/OrganizationPidComparator.java | 38 - .../dhp/schema/oaf/utils/PidBlacklist.java | 8 - .../oaf/utils/PidBlacklistProvider.java | 39 - .../dhp/schema/oaf/utils/PidComparator.java | 48 -- .../dnetlib/dhp/schema/oaf/utils/PidType.java | 79 -- .../schema/oaf/utils/PidValueComparator.java | 33 - .../schema/oaf/utils/ResultPidComparator.java | 53 -- .../oaf/utils/ResultTypeComparator.java | 77 -- .../eu/dnetlib/dhp/schema/oaf/MergeTest.java | 709 ------------------ .../oaf/utils/BlackListProviderTest.java | 21 - .../oaf/utils/IdentifierFactoryTest.java | 87 --- .../dhp/schema/oaf/utils/dataset_1.json | 1 - .../dhp/schema/oaf/utils/dataset_2.json | 1 - .../dhp/schema/oaf/utils/enrichment.json | 12 - .../dhp/schema/oaf/utils/orp-rohub.json | 1 - .../dhp/schema/oaf/utils/publication_1.json | 1 - .../dhp/schema/oaf/utils/publication_2.json | 1 - .../dhp/schema/oaf/utils/publication_3.json | 1 - .../dhp/schema/oaf/utils/publication_4.json | 1 - .../dhp/schema/oaf/utils/publication_5.json | 1 - .../dhp/schema/oaf/utils/publication_apc.json | 2 - .../schema/oaf/utils/publication_apc2.json | 2 - .../schema/oaf/utils/publication_doi1.json | 33 - .../schema/oaf/utils/publication_doi2.json | 37 - .../schema/oaf/utils/publication_doi3.json | 37 - .../schema/oaf/utils/publication_doi4.json | 37 - .../schema/oaf/utils/publication_doi5.json | 37 - .../oaf/utils/publication_irish_tender_1.json | 3 - .../oaf/utils/publication_irish_tender_2.json | 3 - .../schema/oaf/utils/publication_openapc.json | 31 - .../schema/oaf/utils/publication_pmc1.json | 17 - .../schema/oaf/utils/publication_pmc2.json | 21 - .../schema/oaf/utils/publication_urn1.json | 23 - .../dhp/schema/oaf/utils/publications.json | 12 - 68 files changed, 30 insertions(+), 3038 deletions(-) delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/CleaningFunctions.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ModelHardLimits.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OrganizationPidComparator.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidBlacklist.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidBlacklistProvider.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidComparator.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidType.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidValueComparator.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ResultPidComparator.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ResultTypeComparator.java delete mode 100644 src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java delete mode 100644 src/test/java/eu/dnetlib/dhp/schema/oaf/utils/BlackListProviderTest.java delete mode 100644 src/test/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactoryTest.java delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/dataset_1.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/dataset_2.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/orp-rohub.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_1.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_2.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_3.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_4.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_5.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_apc.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_apc2.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi1.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi2.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi3.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi4.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi5.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_irish_tender_1.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_irish_tender_2.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_openapc.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_pmc1.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_pmc2.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_urn1.json delete mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publications.json diff --git a/pom.xml b/pom.xml index 398132c..56324d9 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ eu.dnetlib.dhp dhp-schemas jar - 6.0.1-SNAPSHOT + 6.1.0-SNAPSHOT diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java index d2b4706..d8481a8 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java @@ -1,6 +1,7 @@ package eu.dnetlib.dhp.schema.oaf; +import java.util.Objects; import java.util.Optional; /** @@ -19,32 +20,4 @@ public class AccessRight extends Qualifier { this.openAccessRoute = openAccessRoute; } - @Override - public String toComparableString() { - String s = super.toComparableString(); - return Optional - .ofNullable(getOpenAccessRoute()) - .map(x -> s + "::" + x) - .orElse(s); - } - - @Override - public int hashCode() { - return toComparableString().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - - Qualifier other = (Qualifier) obj; - - return toComparableString().equals(other.toComparableString()); - } - } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java index 34e372f..f8c0f3c 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java @@ -68,24 +68,4 @@ public class Author implements Serializable { this.affiliation = affiliation; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - Author author = (Author) o; - return Objects.equals(fullname, author.fullname) - && Objects.equals(name, author.name) - && Objects.equals(surname, author.surname) - && Objects.equals(rank, author.rank) - && Objects.equals(pid, author.pid) - && Objects.equals(affiliation, author.affiliation); - } - - @Override - public int hashCode() { - return Objects.hash(fullname, name, surname, rank, pid, affiliation); - } - } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java index d46c8d5..0cfa391 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java @@ -3,6 +3,7 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.List; +import java.util.Objects; public class Context implements Serializable { @@ -27,22 +28,4 @@ public class Context implements Serializable { this.dataInfo = dataInfo; } - @Override - public int hashCode() { - return id == null ? 0 : id.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - - Context other = (Context) obj; - - return id.equals(other.getId()); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Country.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Country.java index 75fb1da..1d1af47 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Country.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Country.java @@ -1,8 +1,6 @@ package eu.dnetlib.dhp.schema.oaf; -import java.util.Objects; - public class Country extends Qualifier { private static final long serialVersionUID = 1587334433446567175L; @@ -16,20 +14,4 @@ public class Country extends Qualifier { this.dataInfo = dataInfo; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - if (!super.equals(o)) - return false; - Country country = (Country) o; - return Objects.equals(dataInfo, country.dataInfo); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), dataInfo); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java index 6fe447f..3180b41 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java @@ -63,25 +63,4 @@ public class DataInfo implements Serializable { this.provenanceaction = provenanceaction; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - DataInfo dataInfo = (DataInfo) o; - return Objects.equals(invisible, dataInfo.invisible) - && Objects.equals(inferred, dataInfo.inferred) - && Objects.equals(deletedbyinference, dataInfo.deletedbyinference) - && Objects.equals(trust, dataInfo.trust) - && Objects.equals(inferenceprovenance, dataInfo.inferenceprovenance) - && Objects.equals(provenanceaction, dataInfo.provenanceaction); - } - - @Override - public int hashCode() { - return Objects - .hash( - invisible, inferred, deletedbyinference, trust, inferenceprovenance, provenanceaction); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java index 9473b66..89ea3d9 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java @@ -84,34 +84,4 @@ public class Dataset extends Result implements Serializable { 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); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java index c392b6c..c99ecf6 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java @@ -563,9 +563,4 @@ public class Datasource extends OafEntity implements Serializable { this.eoscifguidelines = eoscifguidelines; } - @Override - public void mergeFrom(final OafEntity e) { - super.mergeFrom(e); - } - } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java index 07aece3..85b620d 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java @@ -1,6 +1,7 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -66,33 +67,4 @@ public class EoscIfGuidelines implements Serializable { this.semanticRelation = semanticRelation; } - private String toComparableString() { - return Stream - .of( - Optional.ofNullable(getCode()).orElse(""), - Optional.ofNullable(getLabel()).orElse(""), - Optional.ofNullable(getUrl()).orElse(""), - Optional.ofNullable(getSemanticRelation()).orElse("")) - .filter(StringUtils::isNotBlank) - .collect(Collectors.joining("||")); - } - - @Override - public int hashCode() { - return toComparableString().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - - EoscIfGuidelines other = (EoscIfGuidelines) obj; - - return toComparableString().equals(other.toComparableString()); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java index c0f5dc6..73ea48c 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java @@ -96,27 +96,4 @@ public class ExternalReference implements Serializable { this.dataInfo = dataInfo; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - ExternalReference that = (ExternalReference) o; - return Objects.equals(sitename, that.sitename) - && Objects.equals(label, that.label) - && Objects.equals(url, that.url) - && Objects.equals(qualifier, that.qualifier) - && Objects.equals(refidentifier, that.refidentifier) - && Objects.equals(query, that.query) - && Objects.equals(dataInfo, that.dataInfo); - } - - @Override - public int hashCode() { - return Objects - .hash( - sitename, label, url, qualifier, refidentifier, query, dataInfo); - } - } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java index 5c93447..8d83e6a 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/ExtraInfo.java @@ -58,22 +58,4 @@ public class ExtraInfo implements Serializable { this.value = value; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - ExtraInfo extraInfo = (ExtraInfo) o; - return Objects.equals(name, extraInfo.name) - && Objects.equals(typology, extraInfo.typology) - && Objects.equals(provenance, extraInfo.provenance) - && Objects.equals(trust, extraInfo.trust) - && Objects.equals(value, extraInfo.value); - } - - @Override - public int hashCode() { - return Objects.hash(name, typology, provenance, trust, value); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java index 35981e8..1bdf256 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/GeoLocation.java @@ -2,6 +2,7 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; +import java.util.Objects; import org.apache.commons.lang3.StringUtils; @@ -40,38 +41,4 @@ public class GeoLocation implements Serializable { this.place = place; } - @JsonIgnore - public boolean isBlank() { - return StringUtils.isBlank(point) && StringUtils.isBlank(box) && StringUtils.isBlank(place); - } - - public String toComparableString() { - return isBlank() - ? "" - : String - .format( - "%s::%s%s", - point != null ? point.toLowerCase() : "", - box != null ? box.toLowerCase() : "", - place != null ? place.toLowerCase() : ""); - } - - @Override - public int hashCode() { - return toComparableString().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - - GeoLocation other = (GeoLocation) obj; - - return toComparableString().equals(other.toComparableString()); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Classification.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Classification.java index 52f9b8e..9b3a3c7 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Classification.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Classification.java @@ -71,19 +71,4 @@ public class H2020Classification implements Serializable { this.classification = classification; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - - H2020Classification h2020classification = (H2020Classification) o; - - return Objects.equals(level1, h2020classification.level1) && - Objects.equals(level2, h2020classification.level2) && - Objects.equals(level3, h2020classification.level3) && - Objects.equals(classification, h2020classification.classification) && - h2020Programme.equals(h2020classification.h2020Programme); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Programme.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Programme.java index 0d9913c..f50006f 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Programme.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/H2020Programme.java @@ -31,15 +31,4 @@ public class H2020Programme implements Serializable { this.description = description; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - - H2020Programme h2020Programme = (H2020Programme) o; - return Objects.equals(code, h2020Programme.code); - } - } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java index 8c802f5..722e765 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java @@ -3,6 +3,9 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.List; +import java.util.Optional; + +import com.google.common.base.Joiner; public class Instance implements Serializable { @@ -175,33 +178,4 @@ public class Instance implements Serializable { this.fulltext = fulltext; } - public String toComparableString() { - return String - .format( - "%s::%s::%s::%s", - hostedby != null && hostedby.getKey() != null ? hostedby.getKey().toLowerCase() : "", - accessright != null && accessright.getClassid() != null ? accessright.getClassid() : "", - instancetype != null && instancetype.getClassid() != null ? instancetype.getClassid() : "", - url != null ? url : ""); - } - - @Override - public int hashCode() { - return toComparableString().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - - Instance other = (Instance) obj; - - return toComparableString().equals(other.toComparableString()); - } - } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java index 8a086bf..2776bdd 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Journal.java @@ -128,42 +128,4 @@ public class Journal implements Serializable { this.dataInfo = dataInfo; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - Journal journal = (Journal) o; - return Objects.equals(name, journal.name) - && Objects.equals(issnPrinted, journal.issnPrinted) - && Objects.equals(issnOnline, journal.issnOnline) - && Objects.equals(issnLinking, journal.issnLinking) - && Objects.equals(ep, journal.ep) - && Objects.equals(iss, journal.iss) - && Objects.equals(sp, journal.sp) - && Objects.equals(vol, journal.vol) - && Objects.equals(edition, journal.edition) - && Objects.equals(conferenceplace, journal.conferenceplace) - && Objects.equals(conferencedate, journal.conferencedate) - && Objects.equals(dataInfo, journal.dataInfo); - } - - @Override - public int hashCode() { - return Objects - .hash( - name, - issnPrinted, - issnOnline, - issnLinking, - ep, - iss, - sp, - vol, - edition, - conferenceplace, - conferencedate, - dataInfo); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java index a2fef7b..d762212 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java @@ -2,10 +2,13 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; +import java.util.Objects; +import java.util.Optional; import org.apache.commons.lang3.StringUtils; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.google.common.base.Joiner; public class KeyValue implements Serializable { @@ -40,36 +43,4 @@ public class KeyValue implements Serializable { this.dataInfo = dataInfo; } - public String toComparableString() { - return isBlank() - ? "" - : String - .format( - "%s::%s", - key != null ? key.toLowerCase() : "", value != null ? value.toLowerCase() : ""); - } - - @JsonIgnore - public boolean isBlank() { - return StringUtils.isBlank(key) && StringUtils.isBlank(value); - } - - @Override - public int hashCode() { - return toComparableString().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - - KeyValue other = (KeyValue) obj; - - return toComparableString().equals(other.toComparableString()); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Measure.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Measure.java index ca0073e..343aa20 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Measure.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Measure.java @@ -39,23 +39,4 @@ public class Measure implements Serializable { this.unit = unit; } - public void mergeFrom(Measure m) { - // TODO - } - - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - Measure measure = (Measure) o; - return Objects.equal(id, measure.id) && - Objects.equal(unit, measure.unit); - } - - @Override - public int hashCode() { - return Objects.hashCode(id, unit); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java index 52d4dcd..68f09cf 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OAIProvenance.java @@ -18,18 +18,4 @@ public class OAIProvenance implements Serializable { this.originDescription = originDescription; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - OAIProvenance that = (OAIProvenance) o; - return Objects.equals(originDescription, that.originDescription); - } - - @Override - public int hashCode() { - return Objects.hash(originDescription); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java index a845c33..ae39fc7 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java @@ -45,65 +45,4 @@ public abstract class Oaf implements Serializable { 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); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java index 050840d..afbfaeb 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java @@ -125,55 +125,19 @@ public abstract class OafEntity extends Oaf implements Serializable { this.oaiprovenance = oaiprovenance; } - 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(); - - measures = mergeLists(measures, e.getMeasures()); - - context = mergeLists(context, e.getContext()); - } - - @SafeVarargs - protected final List mergeLists(final List... lists) { - - return Arrays - .stream(lists) - .filter(Objects::nonNull) - .flatMap(List::stream) - .filter(Objects::nonNull) - .distinct() - .collect(Collectors.toList()); + @Override + public int hashCode() { + return Objects.hash(getId()); } @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) - return false; - if (!super.equals(o)) + if (!(o instanceof OafEntity)) return false; OafEntity oafEntity = (OafEntity) o; - return Objects.equals(id, oafEntity.id); + return Objects.equals(getId(), oafEntity.getId()); } - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), id); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java index 5db20ce..11562d8 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java @@ -169,48 +169,4 @@ public class Organization extends OafEntity implements Serializable { 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); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java index 6876353..1397897 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OriginDescription.java @@ -68,23 +68,4 @@ public class OriginDescription implements Serializable { this.metadataNamespace = metadataNamespace; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - OriginDescription that = (OriginDescription) o; - return Objects.equals(harvestDate, that.harvestDate) - && Objects.equals(altered, that.altered) - && Objects.equals(baseURL, that.baseURL) - && Objects.equals(identifier, that.identifier) - && Objects.equals(datestamp, that.datestamp) - && Objects.equals(metadataNamespace, that.metadataNamespace); - } - - @Override - public int hashCode() { - return Objects.hash(harvestDate, altered, baseURL, identifier, datestamp, metadataNamespace); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java index 4dc23ef..5ad7d7d 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java @@ -44,19 +44,4 @@ public class OtherResearchProduct extends Result implements Serializable { 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); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java index 68f1d70..3eefe8f 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java @@ -300,64 +300,4 @@ public class Project extends OafEntity implements Serializable { 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); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Publication.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Publication.java index 6126dad..3436ddc 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Publication.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Publication.java @@ -24,18 +24,4 @@ public class Publication extends Result implements Serializable { 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); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java index 895c55b..ed768fa 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java @@ -2,10 +2,12 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; +import java.util.Objects; +import java.util.Optional; -import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.builder.EqualsBuilder; -import com.fasterxml.jackson.annotation.JsonIgnore; +import com.google.common.base.Joiner; public class Qualifier implements Serializable { private static final long serialVersionUID = 6632548656644563076L; @@ -46,42 +48,4 @@ public class Qualifier implements Serializable { this.schemename = schemename; } - public String toComparableString() { - return isBlank() - ? "" - : String - .format( - "%s::%s::%s::%s", - 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 - public int hashCode() { - return toComparableString().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - - Qualifier other = (Qualifier) obj; - - return toComparableString().equals(other.toComparableString()); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java index 46a9325..a5004e5 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java @@ -126,26 +126,9 @@ public class Relation extends Oaf { this.validationDate = validationDate; } - public void mergeFrom(final Relation r) { - - checkArgument(Objects.equals(getSource(), r.getSource()), "source ids must be equal"); - checkArgument(Objects.equals(getTarget(), r.getTarget()), "target ids must be equal"); - checkArgument(Objects.equals(getRelType(), r.getRelType()), "relType(s) must be equal"); - checkArgument( - Objects.equals(getSubRelType(), r.getSubRelType()), "subRelType(s) must be equal"); - checkArgument(Objects.equals(getRelClass(), r.getRelClass()), "relClass(es) must be equal"); - - setValidated(getValidated() || r.getValidated()); - try { - setValidationDate(ModelSupport.oldest(getValidationDate(), r.getValidationDate())); - } catch (ParseException e) { - throw new IllegalArgumentException(String - .format( - "invalid validation date format in relation [s:%s, t:%s]: %s", getSource(), getTarget(), - getValidationDate())); - } - - super.mergeFrom(r); + @Override + public int hashCode() { + return Objects.hash(getRelType(), getSubRelType(), getRelClass(), getSource(), getTarget()); } @Override @@ -155,16 +138,11 @@ public class Relation extends Oaf { if (o == null || getClass() != o.getClass()) return false; Relation relation = (Relation) o; - return relType.equals(relation.relType) - && subRelType.equals(relation.subRelType) - && relClass.equals(relation.relClass) - && source.equals(relation.source) - && target.equals(relation.target); - } - - @Override - public int hashCode() { - return Objects.hash(relType, subRelType, relClass, source, target, collectedfrom); + return Objects.equals(getRelType(), relation.getRelType()) && + Objects.equals(getSubRelType(), relation.getSubRelType()) && + Objects.equals(getRelClass(), relation.getRelClass()) && + Objects.equals(getSource(), relation.getSource()) && + Objects.equals(getTarget(), relation.getTarget()); } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java index 7fc5af9..d6329fa 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java @@ -1,23 +1,11 @@ package eu.dnetlib.dhp.schema.oaf; -import static java.util.Objects.*; - import java.io.Serializable; -import java.util.*; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.Pair; +import java.util.List; import com.fasterxml.jackson.annotation.JsonProperty; -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. */ @@ -591,353 +579,4 @@ public class Result extends OafEntity implements Serializable { this.publiclyFunded = publiclyFunded; } - /** - * Is an enrichment boolean. - * - * @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()); - } - - /** - * 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 toInstanceMap(final List ri) { - - - return ri - .stream() - .filter(i -> i.getPid() != null || i.getAlternateIdentifier() != null) - .flatMap(i -> { - final List> 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 findEnrichmentsByPID(final List pids, final Map 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 enrichInstances(final List toEnrichInstances,final List enrichmentInstances) { - final List enrichmentResult = new ArrayList<>(); - - if (toEnrichInstances == null) { - return enrichmentResult; - } - if (enrichmentInstances == null) { - return toEnrichInstances; - } - Map ri = toInstanceMap(enrichmentInstances); - - toEnrichInstances.forEach(i -> { - final List e = findEnrichmentsByPID(i.getPid(), ri); - if (e!= null && !e.isEmpty()) { - e.forEach(enr -> applyEnrichment(i, enr)); - } else { - final List a = findEnrichmentsByPID(i.getAlternateIdentifier(), ri); - if (a!= null && !a.isEmpty()) { - 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(); - } - - if (Objects.isNull(getTransformativeAgreement()) && Objects.nonNull(r.getTransformativeAgreement())) { - setTransformativeAgreement(r.getTransformativeAgreement()); - } - - eoscifguidelines = mergeLists(eoscifguidelines, r.getEoscifguidelines()); - - setIsGreen(mergeBooleanOR(getIsGreen(), r.getIsGreen())); - - setIsInDiamondJournal(mergeBooleanOR(getIsInDiamondJournal(), r.getIsInDiamondJournal())); - - setPubliclyFunded(mergeBooleanOR(getPubliclyFunded(), r.getPubliclyFunded())); - - if (Boolean.logicalXor(nonNull(getOpenAccessColor()), nonNull(r.getOpenAccessColor()))) { - setOpenAccessColor(ObjectUtils.firstNonNull(getOpenAccessColor(), r.getOpenAccessColor())); - } else if (!Objects.equals(getOpenAccessColor(), r.getOpenAccessColor())) { - setOpenAccessColor(null); - } - - if( !isAnEnrichment(this) && !isAnEnrichment(e)) - instance = mergeLists(instance, r.getInstance()); - else { - final List enrichmentInstances = isAnEnrichment(this) ? instance : r.getInstance(); - final List 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 (nonNull(r.getDateofacceptance())) { - if (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()); - - externalReference = mergeLists(externalReference, r.getExternalReference()); - } - - private Boolean mergeBooleanOR(Boolean a, Boolean b) { - if (Boolean.logicalXor(isNull(a), isNull(b))) { - return ObjectUtils.firstNonNull(a, b); - } else if (nonNull(a) & nonNull(b)) { - return a || b; - } else { - return null; - } - } - - /** - * Longest lists list. - * - * @param a the a - * @param b the b - * @return the list - */ - private List> longestLists(List> a, List> 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 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; - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Software.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Software.java index 6435a1a..e8e6145 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Software.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Software.java @@ -56,27 +56,4 @@ public class Software extends Result implements Serializable { 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); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java index 20cf8f3..34f8bf2 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java @@ -2,6 +2,7 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -42,31 +43,4 @@ public class StructuredProperty implements Serializable { this.dataInfo = dataInfo; } - public String toComparableString() { - return Stream - .of( - getQualifier().toComparableString(), - Optional.ofNullable(getValue()).map(String::toLowerCase).orElse("")) - .filter(StringUtils::isNotBlank) - .collect(Collectors.joining("||")); - } - - @Override - public int hashCode() { - return toComparableString().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - - StructuredProperty other = (StructuredProperty) obj; - - return toComparableString().equals(other.toComparableString()); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/CleaningFunctions.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/CleaningFunctions.java deleted file mode 100644 index 1d12478..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/CleaningFunctions.java +++ /dev/null @@ -1,74 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import java.util.HashSet; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; - -import org.apache.commons.lang3.StringUtils; - -import eu.dnetlib.dhp.schema.oaf.StructuredProperty; - -public class CleaningFunctions { - - public static final String DOI_PREFIX_REGEX = "(^10\\.|\\/10\\.)"; - public static final String DOI_PREFIX = "10."; - - public static final Set PID_BLACKLIST = new HashSet<>(); - - static { - PID_BLACKLIST.add("none"); - PID_BLACKLIST.add("na"); - } - - public CleaningFunctions() {} - - /** - * Utility method that filter PID values on a per-type basis. - * @param s the PID whose value will be checked. - * @return false if the pid matches the filter criteria, true otherwise. - */ - public static boolean pidFilter(StructuredProperty s) { - final String pidValue = s.getValue(); - if (Objects.isNull(s.getQualifier()) || - StringUtils.isBlank(pidValue) || - StringUtils.isBlank(pidValue.replaceAll("(?:\\n|\\r|\\t|\\s)", ""))) { - return false; - } - if (CleaningFunctions.PID_BLACKLIST.contains(pidValue)) { - return false; - } - return !PidBlacklistProvider.getBlacklist(s.getQualifier().getClassid()).contains(pidValue); - } - - /** - * Utility method that normalises PID values on a per-type basis. - * @param pid the PID whose value will be normalised. - * @return the PID containing the normalised value. - */ - public static StructuredProperty normalizePidValue(StructuredProperty pid) { - pid.setValue( - normalizePidValue( - pid.getQualifier().getClassid(), - pid.getValue())); - - return pid; - } - - public static String normalizePidValue(String pidType, String pidValue) { - String value = Optional - .ofNullable(pidValue) - .map(String::trim) - .orElseThrow(() -> new IllegalArgumentException("PID value cannot be empty")); - - switch (pidType) { - - // TODO add cleaning for more PID types as needed - case "doi": - return value.toLowerCase().replaceFirst(DOI_PREFIX_REGEX, DOI_PREFIX); - } - return value; - } - -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java deleted file mode 100644 index 32e8e39..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java +++ /dev/null @@ -1,292 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import static com.google.common.base.Preconditions.checkArgument; -import static eu.dnetlib.dhp.schema.common.ModelConstants.*; - -import java.io.Serializable; -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.apache.commons.codec.binary.Hex; -import org.apache.commons.lang3.StringUtils; - -import com.google.common.collect.HashBiMap; -import com.google.common.collect.Maps; - -import eu.dnetlib.dhp.schema.common.ModelSupport; -import eu.dnetlib.dhp.schema.oaf.*; - -/** - * Factory class for OpenAIRE identifiers in the Graph - */ -public class IdentifierFactory implements Serializable { - - public static final String ID_SEPARATOR = "::"; - public static final String ID_PREFIX_SEPARATOR = "|"; - - public static final int ID_PREFIX_LEN = 12; - - /** - * Declares the associations PID_TYPE -> [DATASOURCE ID, NAME] considered authoritative for that PID_TYPE. - * The id of the record (source_::id) will be rewritten as pidType_::id) - */ - public static final Map> PID_AUTHORITY = Maps.newHashMap(); - - static { - PID_AUTHORITY.put(PidType.doi, HashBiMap.create()); - PID_AUTHORITY.get(PidType.doi).put(CROSSREF_ID, "Crossref"); - PID_AUTHORITY.get(PidType.doi).put(DATACITE_ID, "Datacite"); - PID_AUTHORITY.get(PidType.doi).put(ZENODO_OD_ID, "ZENODO"); - PID_AUTHORITY.get(PidType.doi).put(ZENODO_R3_ID, "Zenodo"); - - PID_AUTHORITY.put(PidType.pmc, HashBiMap.create()); - PID_AUTHORITY.get(PidType.pmc).put(EUROPE_PUBMED_CENTRAL_ID, "Europe PubMed Central"); - PID_AUTHORITY.get(PidType.pmc).put(PUBMED_CENTRAL_ID, "PubMed Central"); - - PID_AUTHORITY.put(PidType.pmid, HashBiMap.create()); - PID_AUTHORITY.get(PidType.pmid).put(EUROPE_PUBMED_CENTRAL_ID, "Europe PubMed Central"); - PID_AUTHORITY.get(PidType.pmid).put(PUBMED_CENTRAL_ID, "PubMed Central"); - - PID_AUTHORITY.put(PidType.arXiv, HashBiMap.create()); - PID_AUTHORITY.get(PidType.arXiv).put(ARXIV_ID, "arXiv.org e-Print Archive"); - - PID_AUTHORITY.put(PidType.w3id, HashBiMap.create()); - PID_AUTHORITY.get(PidType.w3id).put(ROHUB_ID, "ROHub"); - } - - /** - * Declares the associations PID_TYPE -> [DATASOURCE ID, PID SUBSTRING] considered as delegated authority for that - * PID_TYPE. Example, Zenodo is delegated to forge DOIs that contain the 'zenodo' word. - * - * If a record with the same id (same pid) comes from 2 data sources, the one coming from a delegated source wins. E.g. Zenodo records win over those from Datacite. - * See also https://code-repo.d4science.org/D-Net/dnet-hadoop/pulls/187 and the class dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java - */ - public static final Map> DELEGATED_PID_AUTHORITY = Maps.newHashMap(); - - static { - DELEGATED_PID_AUTHORITY.put(PidType.doi, new HashMap<>()); - DELEGATED_PID_AUTHORITY.get(PidType.doi).put(ZENODO_OD_ID, "zenodo"); - DELEGATED_PID_AUTHORITY.get(PidType.doi).put(ZENODO_R3_ID, "zenodo"); - DELEGATED_PID_AUTHORITY.put(PidType.w3id, new HashMap<>()); - DELEGATED_PID_AUTHORITY.get(PidType.w3id).put(ROHUB_ID, "ro-id"); - } - - /** - * Declares the associations PID_TYPE -> [DATASOURCE ID, NAME] whose records are considered enrichment for the graph. - * Their OpenAIRE ID is built from the declared PID type. Are merged with their corresponding record, identified by - * the same OpenAIRE id. - */ - public static final Map> ENRICHMENT_PROVIDER = Maps.newHashMap(); - - static { - ENRICHMENT_PROVIDER.put(PidType.doi, HashBiMap.create()); - ENRICHMENT_PROVIDER.get(PidType.doi).put(OPEN_APC_ID, OPEN_APC_NAME); - } - - public static Set delegatedAuthorityDatasourceIds() { - return DELEGATED_PID_AUTHORITY.values() - .stream() - .flatMap(m -> m.keySet().stream()) - .collect(Collectors.toCollection(HashSet::new)); - } - - public static List getPids(List pid, KeyValue collectedFrom) { - return pidFromInstance(pid, collectedFrom, true).distinct().collect(Collectors.toList()); - } - - public static String createDOIBoostIdentifier(T entity) { - if (entity == null) - return null; - - StructuredProperty pid = null; - if (entity.getPid() != null) { - pid = entity - .getPid() - .stream() - .filter(Objects::nonNull) - .filter(s -> s.getQualifier() != null && "doi".equalsIgnoreCase(s.getQualifier().getClassid())) - .filter(CleaningFunctions::pidFilter) - .findAny() - .orElse(null); - } else { - if (entity.getInstance() != null) { - pid = entity - .getInstance() - .stream() - .filter(i -> i.getPid() != null) - .flatMap(i -> i.getPid().stream()) - .filter(CleaningFunctions::pidFilter) - .findAny() - .orElse(null); - } - } - if (pid != null) - return idFromPid(entity, pid, true); - return null; - } - - /** - * Creates an identifier from the most relevant PID (if available) provided by a known PID authority in the given - * entity T. Returns entity.id when none of the PIDs meet the selection criteria is available. - * - * @param entity the entity providing PIDs and a default ID. - * @param the specific entity type. Currently Organization and Result subclasses are supported. - * @param md5 indicates whether should hash the PID value or not. - * @return an identifier from the most relevant PID, entity.id otherwise - */ - public static String createIdentifier(T entity, boolean md5) { - - checkArgument(StringUtils.isNoneBlank(entity.getId()), "missing entity identifier"); - - final Map> pids = extractPids(entity); - - return pids - .values() - .stream() - .flatMap(Set::stream) - .min(new PidComparator<>(entity)) - .map( - min -> Optional - .ofNullable(pids.get(min.getQualifier().getClassid())) - .map( - p -> p - .stream() - .sorted(new PidValueComparator()) - .findFirst() - .map(s -> idFromPid(entity, s, md5)) - .orElseGet(entity::getId)) - .orElseGet(entity::getId)) - .orElseGet(entity::getId); - } - - private static Map> extractPids(T entity) { - if (entity instanceof Result) { - return Optional - .ofNullable(((Result) entity).getInstance()) - .map(IdentifierFactory::mapPids) - .orElse(new HashMap<>()); - } else { - return entity - .getPid() - .stream() - .map(CleaningFunctions::normalizePidValue) - .filter(CleaningFunctions::pidFilter) - .collect( - Collectors - .groupingBy( - p -> p.getQualifier().getClassid(), - Collectors.mapping(p -> p, Collectors.toCollection(HashSet::new)))); - } - } - - private static Map> mapPids(List instance) { - return instance - .stream() - .map(i -> pidFromInstance(i.getPid(), i.getCollectedfrom(), false)) - .flatMap(Function.identity()) - .collect( - Collectors - .groupingBy( - p -> p.getQualifier().getClassid(), - Collectors.mapping(p -> p, Collectors.toCollection(HashSet::new)))); - } - - private static Stream pidFromInstance(List pid, KeyValue collectedFrom, - boolean mapHandles) { - return Optional - .ofNullable(pid) - .map( - pp -> pp - .stream() - // filter away PIDs provided by a DS that is not considered an authority for the - // given PID Type - .filter(p -> shouldFilterPidByCriteria(collectedFrom, p, mapHandles)) - .map(CleaningFunctions::normalizePidValue) - .filter(p -> isNotFromDelegatedAuthority(collectedFrom, p)) - .filter(CleaningFunctions::pidFilter)) - .orElse(Stream.empty()); - } - - - private static boolean shouldFilterPidByCriteria(KeyValue collectedFrom, StructuredProperty p, boolean mapHandles) { - final PidType pType = PidType.tryValueOf(p.getQualifier().getClassid()); - - if (Objects.isNull(collectedFrom)) { - return false; - } - - boolean isEnrich = Optional - .ofNullable(ENRICHMENT_PROVIDER.get(pType)) - .map(enrich -> enrich.containsKey(collectedFrom.getKey()) - || enrich.containsValue(collectedFrom.getValue())) - .orElse(false); - - boolean isAuthority = Optional - .ofNullable(PID_AUTHORITY.get(pType)) - .map(authorities -> authorities.containsKey(collectedFrom.getKey()) - || authorities.containsValue(collectedFrom.getValue())) - .orElse(false); - - return (mapHandles && pType.equals(PidType.handle)) || isEnrich || isAuthority; - } - - private static boolean isNotFromDelegatedAuthority(KeyValue collectedFrom, StructuredProperty p) { - final PidType pType = PidType.tryValueOf(p.getQualifier().getClassid()); - - final Map da = DELEGATED_PID_AUTHORITY.get(pType); - if (Objects.isNull(da)) { - return true; - } - if (!da.containsKey(collectedFrom.getKey())) { - return true; - } - return StringUtils.contains(p.getValue(), da.get(collectedFrom.getKey())); - } - - /** - * @see {@link IdentifierFactory#createIdentifier(OafEntity, boolean)} - */ - public static String createIdentifier(T entity) { - - return createIdentifier(entity, true); - } - - private static String idFromPid(T entity, StructuredProperty s, boolean md5) { - return idFromPid(ModelSupport.getIdPrefix(entity.getClass()), s.getQualifier().getClassid(), s.getValue(), md5); - } - - public static String idFromPid(String numericPrefix, String pidType, String pidValue, boolean md5) { - return new StringBuilder() - .append(numericPrefix) - .append(ID_PREFIX_SEPARATOR) - .append(createPrefix(pidType)) - .append(ID_SEPARATOR) - .append(md5 ? md5(pidValue) : pidValue) - .toString(); - } - - // create the prefix (length = 12) - private static String createPrefix(String pidType) { - StringBuilder prefix = new StringBuilder(StringUtils.left(pidType, ID_PREFIX_LEN)); - while (prefix.length() < ID_PREFIX_LEN) { - prefix.append("_"); - } - return prefix.substring(0, ID_PREFIX_LEN); - } - - public static String md5(final String s) { - try { - final MessageDigest md = MessageDigest.getInstance("MD5"); - md.update(s.getBytes(StandardCharsets.UTF_8)); - return new String(Hex.encodeHex(md.digest())); - } catch (final Exception e) { - return null; - } - } - -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ModelHardLimits.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ModelHardLimits.java deleted file mode 100644 index 443a496..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ModelHardLimits.java +++ /dev/null @@ -1,26 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -public class ModelHardLimits { - - private ModelHardLimits() {} - - public static final String LAYOUT = "index"; - public static final String INTERPRETATION = "openaire"; - public static final String SEPARATOR = "-"; - - public static final int MAX_EXTERNAL_ENTITIES = 50; - public static final int MAX_AUTHORS = 200; - public static final int MAX_AUTHOR_FULLNAME_LENGTH = 1000; - public static final int MAX_TITLE_LENGTH = 5000; - public static final int MAX_TITLES = 10; - public static final int MAX_ABSTRACTS = 10; - public static final int MAX_ABSTRACT_LENGTH = 150000; - public static final int MAX_RELATED_ABSTRACT_LENGTH = 500; - public static final int MAX_INSTANCES = 10; - - public static String getCollectionName(String format) { - return format + SEPARATOR + LAYOUT + SEPARATOR + INTERPRETATION; - } - -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OrganizationPidComparator.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OrganizationPidComparator.java deleted file mode 100644 index 3a6df29..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OrganizationPidComparator.java +++ /dev/null @@ -1,38 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import java.util.Comparator; - -import eu.dnetlib.dhp.schema.oaf.StructuredProperty; - -public class OrganizationPidComparator implements Comparator { - - @Override - public int compare(StructuredProperty left, StructuredProperty right) { - - PidType lClass = PidType.tryValueOf(left.getQualifier().getClassid()); - PidType rClass = PidType.tryValueOf(right.getQualifier().getClassid()); - - if (lClass.equals(PidType.openorgs)) - return -1; - if (rClass.equals(PidType.openorgs)) - return 1; - - if (lClass.equals(PidType.GRID)) - return -1; - if (rClass.equals(PidType.GRID)) - return 1; - - if (lClass.equals(PidType.mag_id)) - return -1; - if (rClass.equals(PidType.mag_id)) - return 1; - - if (lClass.equals(PidType.urn)) - return -1; - if (rClass.equals(PidType.urn)) - return 1; - - return 0; - } -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidBlacklist.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidBlacklist.java deleted file mode 100644 index 0b8e5e3..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidBlacklist.java +++ /dev/null @@ -1,8 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import java.util.HashMap; -import java.util.HashSet; - -public class PidBlacklist extends HashMap> { -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidBlacklistProvider.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidBlacklistProvider.java deleted file mode 100644 index 3bcd0ab..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidBlacklistProvider.java +++ /dev/null @@ -1,39 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import java.io.IOException; -import java.util.HashSet; -import java.util.Optional; -import java.util.Set; - -import org.apache.commons.io.IOUtils; - -import com.fasterxml.jackson.databind.ObjectMapper; - -public class PidBlacklistProvider { - - private static final PidBlacklist blacklist; - - static { - try { - String json = IOUtils.toString(IdentifierFactory.class.getResourceAsStream("pid_blacklist.json")); - blacklist = new ObjectMapper().readValue(json, PidBlacklist.class); - - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public static PidBlacklist getBlacklist() { - return blacklist; - } - - public static Set getBlacklist(String pidType) { - return Optional - .ofNullable(getBlacklist().get(pidType)) - .orElse(new HashSet<>()); - } - - private PidBlacklistProvider() {} - -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidComparator.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidComparator.java deleted file mode 100644 index a2bc65a..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidComparator.java +++ /dev/null @@ -1,48 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import java.util.Comparator; - -import eu.dnetlib.dhp.schema.common.ModelSupport; -import eu.dnetlib.dhp.schema.oaf.OafEntity; -import eu.dnetlib.dhp.schema.oaf.Organization; -import eu.dnetlib.dhp.schema.oaf.Result; -import eu.dnetlib.dhp.schema.oaf.StructuredProperty; - -public class PidComparator implements Comparator { - - private final T entity; - - public PidComparator(T entity) { - this.entity = entity; - } - - @Override - public int compare(StructuredProperty left, StructuredProperty right) { - - if (left == null && right == null) - return 0; - if (left == null) - return 1; - if (right == null) - return -1; - - if (ModelSupport.isSubClass(entity, Result.class)) { - return compareResultPids(left, right); - } - if (ModelSupport.isSubClass(entity, Organization.class)) { - return compareOrganizationtPids(left, right); - } - - // Else (but unlikely), lexicographical ordering will do. - return left.getQualifier().getClassid().compareTo(right.getQualifier().getClassid()); - } - - private int compareResultPids(StructuredProperty left, StructuredProperty right) { - return new ResultPidComparator().compare(left, right); - } - - private int compareOrganizationtPids(StructuredProperty left, StructuredProperty right) { - return new OrganizationPidComparator().compare(left, right); - } -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidType.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidType.java deleted file mode 100644 index 6f3cfe3..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidType.java +++ /dev/null @@ -1,79 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import org.apache.commons.lang3.EnumUtils; - -public enum PidType { - - /** - * The DOI syntax shall be made up of a DOI prefix and a DOI suffix separated by a forward slash. - * - * There is no defined limit on the length of the DOI name, or of the DOI prefix or DOI suffix. - * - * The DOI name is case-insensitive and can incorporate any printable characters from the legal graphic characters - * of Unicode. Further constraints on character use (e.g. use of language-specific alphanumeric characters) can be - * defined for an application by the ISO 26324 Registration Authority. - * - * - * DOI prefix: The DOI prefix shall be composed of a directory indicator followed by a registrant code. - * These two components shall be separated by a full stop (period). The directory indicator shall be "10" and - * distinguishes the entire set of character strings (prefix and suffix) as digital object identifiers within the - * resolution system. - * - * Registrant code: The second element of the DOI prefix shall be the registrant code. The registrant code is a - * unique string assigned to a registrant. - * - * DOI suffix: The DOI suffix shall consist of a character string of any length chosen by the registrant. - * Each suffix shall be unique to the prefix element that precedes it. The unique suffix can be a sequential number, - * or it might incorporate an identifier generated from or based on another system used by the registrant - * (e.g. ISAN, ISBN, ISRC, ISSN, ISTC, ISNI; in such cases, a preferred construction for such a suffix can be - * specified, as in Example 1). - * - * Source: https://www.doi.org/doi_handbook/2_Numbering.html#2.2 - */ - doi, - - /** - * PubMed Unique Identifier (PMID) - * - * This field is a 1-to-8 digit accession number with no leading zeros. It is present on all records and is the - * accession number for managing and disseminating records. PMIDs are not reused after records are deleted. - * - * Beginning in February 2012 PMIDs include extensions following a decimal point to account for article versions - * (e.g., 21804956.2). All citations are considered version 1 until replaced. The extended PMID is not displayed - * on the MEDLINE format. - * - * View the citation in abstract format in PubMed to access additional versions when available (see the article in - * the Jan-Feb 2012 NLM Technical Bulletin). - * - * Source: https://www.nlm.nih.gov/bsd/mms/medlineelements.html#pmid - */ - pmid, - - /** - * This field contains the unique identifier for the cited article in PubMed Central. The identifier begins with the - * prefix PMC. - * - * Source: https://www.nlm.nih.gov/bsd/mms/medlineelements.html#pmc - */ - pmc, handle, arXiv, nct, pdb, w3id, - - // Organization - openorgs, ROR, GRID, PIC, ISNI, Wikidata, FundRef, corda, corda_h2020, mag_id, urn, - - // Used by dedup - undefined, original; - - public static boolean isValid(String type) { - return EnumUtils.isValidEnum(PidType.class, type); - } - - public static PidType tryValueOf(String s) { - try { - return PidType.valueOf(s); - } catch (Exception e) { - return PidType.original; - } - } - -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidValueComparator.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidValueComparator.java deleted file mode 100644 index 0e20835..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidValueComparator.java +++ /dev/null @@ -1,33 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import java.util.Comparator; -import java.util.Optional; - -import eu.dnetlib.dhp.schema.oaf.StructuredProperty; - -public class PidValueComparator implements Comparator { - - @Override - public int compare(StructuredProperty left, StructuredProperty right) { - - if (left == null && right == null) - return 0; - if (left == null) - return 1; - if (right == null) - return -1; - - StructuredProperty l = CleaningFunctions.normalizePidValue(left); - StructuredProperty r = CleaningFunctions.normalizePidValue(right); - - return Optional - .ofNullable(l.getValue()) - .map( - lv -> Optional - .ofNullable(r.getValue()) - .map(rv -> lv.compareTo(rv)) - .orElse(-1)) - .orElse(1); - } -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ResultPidComparator.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ResultPidComparator.java deleted file mode 100644 index e51c480..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ResultPidComparator.java +++ /dev/null @@ -1,53 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import java.util.Comparator; - -import eu.dnetlib.dhp.schema.oaf.StructuredProperty; - -public class ResultPidComparator implements Comparator { - - @Override - public int compare(StructuredProperty left, StructuredProperty right) { - - PidType lClass = PidType.tryValueOf(left.getQualifier().getClassid()); - PidType rClass = PidType.tryValueOf(right.getQualifier().getClassid()); - - if (lClass.equals(PidType.doi)) - return -1; - if (rClass.equals(PidType.doi)) - return 1; - - if (lClass.equals(PidType.pmid)) - return -1; - if (rClass.equals(PidType.pmid)) - return 1; - - if (lClass.equals(PidType.pmc)) - return -1; - if (rClass.equals(PidType.pmc)) - return 1; - - if (lClass.equals(PidType.handle)) - return -1; - if (rClass.equals(PidType.handle)) - return 1; - - if (lClass.equals(PidType.arXiv)) - return -1; - if (rClass.equals(PidType.arXiv)) - return 1; - - if (lClass.equals(PidType.nct)) - return -1; - if (rClass.equals(PidType.nct)) - return 1; - - if (lClass.equals(PidType.pdb)) - return -1; - if (rClass.equals(PidType.pdb)) - return 1; - - return 0; - } -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ResultTypeComparator.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ResultTypeComparator.java deleted file mode 100644 index 04d855d..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ResultTypeComparator.java +++ /dev/null @@ -1,77 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import static eu.dnetlib.dhp.schema.common.ModelConstants.CROSSREF_ID; - -import java.util.Comparator; -import java.util.HashSet; -import java.util.Optional; -import java.util.stream.Collectors; - -import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.oaf.KeyValue; -import eu.dnetlib.dhp.schema.oaf.Result; - -public class ResultTypeComparator implements Comparator { - - @Override - public int compare(Result left, Result right) { - - if (left == null && right == null) - return 0; - if (left == null) - return 1; - if (right == null) - return -1; - - HashSet lCf = getCollectedFromIds(left); - HashSet rCf = getCollectedFromIds(right); - - if (lCf.contains(CROSSREF_ID) && !rCf.contains(CROSSREF_ID)) { - return -1; - } - if (!lCf.contains(CROSSREF_ID) && rCf.contains(CROSSREF_ID)) { - return 1; - } - - String lClass = left.getResulttype().getClassid(); - String rClass = right.getResulttype().getClassid(); - - if (lClass.equals(rClass)) - return 0; - - if (lClass.equals(ModelConstants.PUBLICATION_RESULTTYPE_CLASSID)) - return -1; - if (rClass.equals(ModelConstants.PUBLICATION_RESULTTYPE_CLASSID)) - return 1; - - if (lClass.equals(ModelConstants.DATASET_RESULTTYPE_CLASSID)) - return -1; - if (rClass.equals(ModelConstants.DATASET_RESULTTYPE_CLASSID)) - return 1; - - if (lClass.equals(ModelConstants.SOFTWARE_RESULTTYPE_CLASSID)) - return -1; - if (rClass.equals(ModelConstants.SOFTWARE_RESULTTYPE_CLASSID)) - return 1; - - if (lClass.equals(ModelConstants.ORP_RESULTTYPE_CLASSID)) - return -1; - if (rClass.equals(ModelConstants.ORP_RESULTTYPE_CLASSID)) - return 1; - - // Else (but unlikely), lexicographical ordering will do. - return lClass.compareTo(rClass); - } - - protected HashSet getCollectedFromIds(Result left) { - return Optional - .ofNullable(left.getCollectedfrom()) - .map( - cf -> cf - .stream() - .map(KeyValue::getKey) - .collect(Collectors.toCollection(HashSet::new))) - .orElse(new HashSet<>()); - } -} diff --git a/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java b/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java deleted file mode 100644 index a4c0d4c..0000000 --- a/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java +++ /dev/null @@ -1,709 +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 a = Arrays.asList("a", "b", "c", "e"); - List b = Arrays.asList("a", "b", "c", "d"); - List 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 the type parameter - * @param path the path - * @param clazz the clazz - * @return the list - * @throws Exception the exception - */ - private List loadResourceResult(final String path, final Class 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 source, final Listenrichment, 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 l1, final List 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 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 -> assertNotNull(p.getProcessingchargeamount())); - publications.forEach(p -> assertNotNull(p.getProcessingchargecurrency())); - publications.forEach(p -> assertTrue(StringUtils.isNotBlank(p.getProcessingchargeamount().getValue() ))); - publications.forEach(p -> assertTrue(StringUtils.isNotBlank(p.getProcessingchargecurrency().getValue() ))); - - publications.forEach(p -> p.getInstance().forEach(i -> assertNotNull(i.getProcessingchargeamount()))); - publications.forEach(p -> p.getInstance().forEach(i -> assertNotNull(i.getProcessingchargecurrency()))); - - publications.forEach(p -> p.getInstance().forEach(i -> assertTrue(StringUtils.isNotBlank(i.getProcessingchargeamount().getValue())))); - publications.forEach(p -> p.getInstance().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().forEach(i -> assertNotNull(i.getProcessingchargeamount())); - p1.getInstance().forEach(i -> assertNotNull(i.getProcessingchargecurrency())); - - assertTrue(p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount().getValue().equals("2000.47"))); - assertTrue(p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount().getValue().equals("1721.47"))); - - assertTrue(p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency().getValue().equals("EUR"))); - assertTrue(p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency().getValue().equals("USD"))); - System.out.println(new ObjectMapper().writeValueAsString(p1)); - } - - @Test - void testAPCMerge2() throws Exception { - List 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())); - assertNotNull(publications.get(0).getProcessingchargeamount()); - assertNotNull(publications.get(0).getProcessingchargecurrency()); - assertNull(publications.get(1).getProcessingchargeamount()); - - 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()); - assertTrue(p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount() != null)); - - assertTrue(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()); - assertTrue(p2.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount() != null)); - - assertTrue(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 - void test_merge_irish_1() throws Exception { - List publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publication_irish_tender_1.json", Publication.class); - - Publication p = new Publication(); - - publications.forEach(p::mergeFrom); - - assertNotNull(p); - - assertTrue(p.getIsGreen()); - assertTrue(p.getIsInDiamondJournal()); - assertFalse(p.getPubliclyFunded()); - assertEquals(OpenAccessColor.gold, p.getOpenAccessColor()); - } - - @Test - void test_merge_irish_2() throws Exception { - List publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publication_irish_tender_2.json", Publication.class); - - Publication p = new Publication(); - - publications.forEach(p::mergeFrom); - - assertNotNull(p); - - assertTrue(p.getIsGreen()); - assertTrue(p.getIsInDiamondJournal()); - assertFalse(p.getPubliclyFunded()); - assertNull(p.getOpenAccessColor()); - } - - /** - * 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 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 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 the type parameter - * @param value the value - * @return the field - */ - private Field field(T value) { - Field 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; - } -} diff --git a/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/BlackListProviderTest.java b/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/BlackListProviderTest.java deleted file mode 100644 index 61d06a6..0000000 --- a/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/BlackListProviderTest.java +++ /dev/null @@ -1,21 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import java.util.Set; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -class BlackListProviderTest { - - @Test - void blackListTest() { - - Assertions.assertNotNull(PidBlacklistProvider.getBlacklist()); - Assertions.assertNotNull(PidBlacklistProvider.getBlacklist().get("doi")); - Assertions.assertTrue(PidBlacklistProvider.getBlacklist().get("doi").size() > 0); - final Set xxx = PidBlacklistProvider.getBlacklist("xxx"); - Assertions.assertNotNull(xxx); - Assertions.assertEquals(0, xxx.size()); - } -} diff --git a/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactoryTest.java b/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactoryTest.java deleted file mode 100644 index e21f57e..0000000 --- a/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactoryTest.java +++ /dev/null @@ -1,87 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.utils; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import java.io.IOException; - -import org.apache.commons.io.IOUtils; -import org.junit.jupiter.api.Test; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; - -import eu.dnetlib.dhp.schema.oaf.Publication; - -class IdentifierFactoryTest { - - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper() - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - - @Test - void testCreateIdentifierForPublication() throws IOException { - - verifyIdentifier( - "publication_doi1.json", "50|doi_________::79dbc7a2a56dc1532659f9038843256e", true); - - verifyIdentifier( - "publication_doi2.json", "50|doi_________::79dbc7a2a56dc1532659f9038843256e", true); - - verifyIdentifier( - "publication_doi3.json", "50|pmc_________::94e4cb08c93f8733b48e2445d04002ac", true); - - verifyIdentifier( - "publication_doi4.json", "50|od______2852::38861c44e6052a8d49f59a4c39ba5e66", true); - - verifyIdentifier( - "publication_doi5.json", "50|doi_________::3bef95c0ca26dd55451fc8839ea69d27", true); - - verifyIdentifier( - "publication_pmc1.json", "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", true); - - verifyIdentifier( - "publication_pmc2.json", "50|pmc_________::94e4cb08c93f8733b48e2445d04002ac", true); - - verifyIdentifier( - "publication_openapc.json", "50|doi_________::79dbc7a2a56dc1532659f9038843256e", true); - - final String defaultID = "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f"; - verifyIdentifier("publication_3.json", defaultID, true); - verifyIdentifier("publication_4.json", defaultID, true); - verifyIdentifier("publication_5.json", defaultID, true); - - } - - @Test - void testCreateIdentifierForPublicationNoHash() throws IOException { - - verifyIdentifier("publication_doi1.json", "50|doi_________::10.1016/j.cmet.2010.03.013", false); - verifyIdentifier("publication_doi2.json", "50|doi_________::10.1016/j.cmet.2010.03.013", false); - verifyIdentifier("publication_pmc1.json", "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", false); - verifyIdentifier( - "publication_urn1.json", "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", false); - - final String defaultID = "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f"; - verifyIdentifier("publication_3.json", defaultID, false); - verifyIdentifier("publication_4.json", defaultID, false); - verifyIdentifier("publication_5.json", defaultID, false); - } - - @Test - void testCreateIdentifierForROHub() throws IOException { - verifyIdentifier( - "orp-rohub.json", "50|w3id________::afc7592914ae190a50570db90f55f9c2", true); - } - - protected void verifyIdentifier(String filename, String expectedID, boolean md5) throws IOException { - final String json = IOUtils.toString(getClass().getResourceAsStream(filename)); - final Publication pub = OBJECT_MAPPER.readValue(json, Publication.class); - - String id = IdentifierFactory.createIdentifier(pub, md5); - System.out.println(id); - assertNotNull(id); - assertEquals(expectedID, id); - } - -} diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/dataset_1.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/dataset_1.json deleted file mode 100644 index e38c4d1..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/dataset_1.json +++ /dev/null @@ -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"} ]} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/dataset_2.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/dataset_2.json deleted file mode 100644 index 52e4e12..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/dataset_2.json +++ /dev/null @@ -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"} ]} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json deleted file mode 100644 index a26b106..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json +++ /dev/null @@ -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"}]}]} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/orp-rohub.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/orp-rohub.json deleted file mode 100644 index c989394..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/orp-rohub.json +++ /dev/null @@ -1 +0,0 @@ -{"collectedfrom":[{"key":"10|fairsharing_::1b69ebedb522700034547abc5652ffac","value":"ROHub","dataInfo":null}],"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1663926081966,"id":"50|w3id________::afc7592914ae190a50570db90f55f9c2","originalId":["50|fsh_____4119::afc7592914ae190a50570db90f55f9c2","https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca"],"pid":[{"value":"https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca","qualifier":{"classid":"w3id","classname":"w3id.org","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofcollection":"2019-03-27T15:15:22.22Z","dateoftransformation":"2019-04-17T16:04:20.586Z","extraInfo":[],"oaiprovenance":null,"processingchargeamount":null,"processingchargecurrency":null,"measures":null,"author":[{"fullname":"CNR-ISMAR","name":"","surname":"","rank":1,"pid":[],"affiliation":[]}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ecology","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"EOSC::RO-crate","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Using biological effects tools to define Good Environmental Status under the European Union Marine Strategy Framework Directive","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[{"value":"2018-06-20T11:21:46Z","qualifier":{"classid":"UNKNOWN","classname":"UNKNOWN","schemeid":"dnet:dataCite_date","schemename":"dnet:dataCite_date"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"description":[{"value":"The use of biological effects tools offer enormous potential to meet the challenges outlined by the European Union Marine Strategy Framework Directive (MSFD) whereby Member States are required to develop a robust set of tools for defining 11 qualitative descriptors of Good Environmental Status (GES), such as demonstrating that \"Concentrations of contaminants are at levels not giving rise to pollution effects\" (GES Descriptor 8). This paper discusses the combined approach of monitoring chemical contaminant levels, along side biological effect measurements relating to the effect of pollutants, for undertaking assessments of GES across European marine regions. We outline the minimum standards that biological effects tools should meet if they are to be used for defining GES in relation to Descriptor 8 and describe the current international initiatives underway to develop assessment criteria for these biological effects techniques. Crown Copyright (C) 2010 Published by Elsevier Ltd. All rights reserved.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":null,"publisher":{"value":"Poznań Supercomputing and Networking Center","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Generation Service","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":{"classid":"RO-crate","classname":"RO-crate","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"coverage":[],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes","openAccessRoute":null},"instancetype":{"classid":"other research product","classname":"other research product","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|fairsharing_::1b69ebedb522700034547abc5652ffac","value":"ROHub","dataInfo":null},"url":null,"distributionlocation":null,"collectedfrom":{"key":"10|fairsharing_::1b69ebedb522700034547abc5652ffac","value":"ROHub","dataInfo":null},"pid":[{"value":"https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca","qualifier":{"classid":"w3id","classname":"w3id.org","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"alternateIdentifier":[],"dateofacceptance":null,"processingchargeamount":null,"processingchargecurrency":null,"refereed":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"measures":null}],"eoscifguidelines":null,"contactperson":[],"contactgroup":[],"tool":[]} diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_1.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_1.json deleted file mode 100644 index 704c5ad..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_1.json +++ /dev/null @@ -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"} ]} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_2.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_2.json deleted file mode 100644 index a1744e8..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_2.json +++ /dev/null @@ -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"} ]} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_3.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_3.json deleted file mode 100644 index 6d33568..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_3.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f","pid":[{"qualifier":{"classid":"scp-number"},"value":"79953761260"}]} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_4.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_4.json deleted file mode 100644 index 6617fe1..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_4.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f","pid":[]} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_5.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_5.json deleted file mode 100644 index 700a100..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_5.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f"} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_apc.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_apc.json deleted file mode 100644 index 6139032..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_apc.json +++ /dev/null @@ -1,2 +0,0 @@ -{"collectedfrom":[{"key":"10|apc_________::e2b1600b229fc30663c8a1f662debddf","value":"OpenAPC Global Initiative","dataInfo":null}],"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1643970857177,"id":"50|doi_________::000023f9cb6e3a247c764daec4273cbc","originalId":["50|openapc_____::000023f9cb6e3a247c764daec4273cbc","10.1155/2015/439379"],"pid":[{"value":"10.1155/2015/439379","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofcollection":"2022-02-01T15:26:33.817Z","dateoftransformation":"2022-02-02T15:45:32.502Z","extraInfo":[],"oaiprovenance":null,"processingchargeamount":{"value":"1721.47","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargecurrency":{"value":"EUR","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"measures":null,"author":[],"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[],"relevantdate":[],"description":[],"dateofacceptance":null,"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes","openAccessRoute":null},"instancetype":{"classid":"0004","classname":"Conference object","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|apc_________::e2b1600b229fc30663c8a1f662debddf","value":"OpenAPC Global Initiative","dataInfo":null},"url":["https://doi.org/10.1155/2015/439379"],"distributionlocation":"","collectedfrom":{"key":"10|apc_________::e2b1600b229fc30663c8a1f662debddf","value":"OpenAPC Global Initiative","dataInfo":null},"pid":[{"value":"10.1155/2015/439379","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"alternateIdentifier":[{"value":"25811027.0","qualifier":{"classid":"pmid","classname":"pmid","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":null,"processingchargeamount":{"value":"1721.47","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargecurrency":{"value":"EUR","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"refereed":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"measures":null}],"journal":{"name":"BioMed Research International","issnPrinted":"2314-6133","issnOnline":"","issnLinking":"","ep":"","iss":"","sp":"","vol":"","edition":"","conferenceplace":null,"conferencedate":null,"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}} -{"collectedfrom":[{"key":"10|apc_________::f2b1600b229fc30663c8a1f662debddf","value":"OpenAPC Global Initiative","dataInfo":null}],"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1643970857177,"id":"50|doi_________::100023f9cb6e3a247c764daec4273cbc","originalId":["50|openapc_____::a00023f9cb6e3a247c764daec4273cbc","10.1155/2015/fake"],"pid":[{"value":"10.1155/2015/fake","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofcollection":"2022-02-01T15:26:33.817Z","dateoftransformation":"2022-02-02T15:45:32.502Z","extraInfo":[],"oaiprovenance":null,"processingchargeamount":{"value":"2000.47","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargecurrency":{"value":"USD","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"measures":null,"author":[],"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[],"relevantdate":[],"description":[],"dateofacceptance":null,"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes","openAccessRoute":null},"instancetype":{"classid":"0004","classname":"Conference object","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|apc_________::e2b1600b229fc30663c8a1f662debddf","value":"OpenAPC Global Initiative","dataInfo":null},"url":["https://doi.org/10.1155/2015/fake"],"distributionlocation":"","collectedfrom":{"key":"10|apc_________::e2b1600b229fc30663c8a1f662debddf","value":"OpenAPC Global Initiative","dataInfo":null},"pid":[{"value":"10.1155/2015/fake","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"alternateIdentifier":[{"value":"25811027.0","qualifier":{"classid":"pmid","classname":"pmid","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":null,"processingchargeamount":{"value":"2000.47","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargecurrency":{"value":"USD","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"refereed":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"measures":null}],"journal":{"name":"BioMed Research International","issnPrinted":"2314-6133","issnOnline":"","issnLinking":"","ep":"","iss":"","sp":"","vol":"","edition":"","conferenceplace":null,"conferencedate":null,"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_apc2.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_apc2.json deleted file mode 100644 index a0b1644..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_apc2.json +++ /dev/null @@ -1,2 +0,0 @@ -{"collectedfrom":[{"key":"10|apc_________::e2b1600b229fc30663c8a1f662debddf","value":"OpenAPC Global Initiative","dataInfo":null}],"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1643970857177,"id":"50|doi_________::000023f9cb6e3a247c764daec4273cbc","originalId":["50|openapc_____::000023f9cb6e3a247c764daec4273cbc","10.1155/2015/439379"],"pid":[{"value":"10.1155/2015/439379","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofcollection":"2022-02-01T15:26:33.817Z","dateoftransformation":"2022-02-02T15:45:32.502Z","extraInfo":[],"oaiprovenance":null,"processingchargeamount":{"value":"1721.47","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargecurrency":{"value":"EUR","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"measures":null,"author":[],"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[],"relevantdate":[],"description":[],"dateofacceptance":null,"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes","openAccessRoute":null},"instancetype":{"classid":"0004","classname":"Conference object","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|apc_________::e2b1600b229fc30663c8a1f662debddf","value":"OpenAPC Global Initiative","dataInfo":null},"url":["https://doi.org/10.1155/2015/439379"],"distributionlocation":"","collectedfrom":{"key":"10|apc_________::e2b1600b229fc30663c8a1f662debddf","value":"OpenAPC Global Initiative","dataInfo":null},"pid":[{"value":"10.1155/2015/439379","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"alternateIdentifier":[{"value":"25811027.0","qualifier":{"classid":"pmid","classname":"pmid","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":null,"processingchargeamount":{"value":"1721.47","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargecurrency":{"value":"EUR","dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"refereed":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"measures":null}],"journal":{"name":"BioMed Research International","issnPrinted":"2314-6133","issnOnline":"","issnLinking":"","ep":"","iss":"","sp":"","vol":"","edition":"","conferenceplace":null,"conferencedate":null,"dataInfo":{"invisible":true,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}} -{"author":[{"fullname":"Antikainen, Maria","name":"Maria","pid":[],"rank":1,"surname":"Antikainen"},{"fullname":"Niemelä, Marketta","name":"Marketta","pid":[],"rank":2,"surname":"Niemelä"}],"bestaccessright":{"classid":"CLOSED","classname":"Closed Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2017-01-01"},"dateofcollection":"2021-11-06T12:40:11.372Z","dateoftransformation":"2021-11-06T15:30:47.295Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Local food supports local finance, employment and cultural traditions. Local food producers often have limited resources to invest in R&D, and their risk-taking ability is low. Earlier studies in the online community context indicate that utilising the user's creativity and innovation capability has a great deal of potential for new product development and service design. For local food producers, social media offers cost-efficient opportunities for involving customers in product and service development. The aim of the study is to explore the potential of a co-creation approach for local food producers and how to engage consumers in that co-creation. The study is dyadic, taking both the consumers' and producers' perspectives. The results indicate that consumers seem to be interested in having long-term relationships with producers. Their motivations to participate in co-creation processes were found to be mostly related to the possibility of producing better products and of learning and gaining new insights. The producers who participated in our study have already taken the first steps in using social media, and the next logical step would be utilising social media in the co-creation process."}],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::38d0ab3b2212878dee7072170f1561ee","instance":[{"accessright":{"classid":"CLOSED","classname":"Closed Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.1504/ijtmkt.2017.081507"}],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2017-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/44aa6ac9-4763-4cef-a683-220dbcb02712"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458079051,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2021-10-22T11:41:35Z","harvestDate":"2021-11-06T12:40:11.372Z","identifier":"oai:cris.vtt.fi:publications/44aa6ac9-4763-4cef-a683-220dbcb02712","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["oai:cris.vtt.fi:publications/44aa6ac9-4763-4cef-a683-220dbcb02712","50|355e65625b88::38d0ab3b2212878dee7072170f1561ee"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Antikainen , M & Niemelä , M 2017 , ' How to co-create local food products with consumers? ' , International Journal of Technology Marketing , vol. 12 , no. 1 , pp. 71-89 . https://doi.org/10.1504/IJTMKT.2017.081507"}],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"co-creation"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"local food"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"new product development"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"open innovation"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"social media"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"case study"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"consumer"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"co-development"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"co-design"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"user involvement"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"sustainability"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"How to co-create local food products with consumers?"}]} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi1.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi1.json deleted file mode 100644 index 83bc0cd..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "id": "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", - "instance": [ - { - "collectedfrom": { - "key": "10|openaire____::081b82f96300b6a6e3d282bad31cb6e2", - "value": "Crossref" - }, - "pid": [ - { - "qualifier": {"classid": "doi"}, - "value": "10.1016/j.cmet.2010.03.013" - } - ] - }, - { - "pid": [ - { - "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" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi2.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi2.json deleted file mode 100644 index 5c73fc3..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi2.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "id": "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", - "instance": [ - { - "collectedfrom": { - "key": "10|openaire____::081b82f96300b6a6e3d282bad31cb6e2", - "value": "Crossref" - }, - "pid": [ - { - "qualifier": {"classid": "doi"}, - "value": "10.1016/j.cmet.2010.03.013" - } - ] - }, - { - "collectedfrom": { - "key": "10|opendoar____::8b6dd7db9af49e67306feb59a8bdc52c", - "value": "Europe PubMed Central" - }, - "pid": [ - { - "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" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi3.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi3.json deleted file mode 100644 index b1ea01f..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi3.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "id": "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", - "instance": [ - { - "collectedfrom": { - "key": "10|opendoar____::358aee4cc897452c00244351e4d91f69", - "value": "Zenodo" - }, - "pid": [ - { - "qualifier": {"classid": "doi"}, - "value": "10.1016/j.cmet.2010.03.013" - } - ] - }, - { - "collectedfrom": { - "key": "10|opendoar____::8b6dd7db9af49e67306feb59a8bdc52c", - "value": "Europe PubMed Central" - }, - "pid": [ - { - "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" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi4.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi4.json deleted file mode 100644 index 764c510..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi4.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "id": "50|od______2852::38861c44e6052a8d49f59a4c39ba5e66", - "instance": [ - { - "collectedfrom": { - "key": "10|opendoar____::358aee4cc897452c00244351e4d91f69", - "value": "Zenodo" - }, - "pid": [ - { - "qualifier": {"classid": "doi"}, - "value": "10.1016/j.cmet.2010.03.013" - }, - { - "qualifier": {"classid": "handle"}, - "value": "11012/83840" - } - ] - }, - { - "collectedfrom": { - "key": "10|opendoar____::2852", - "value": "Digital library of Brno University of Technology" - }, - "pid": [ - { - "qualifier": {"classid": "pmc"}, - "value": "21459329" - }, - { - "qualifier": {"classid": "handle"}, - "value": "11012/83840" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi5.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi5.json deleted file mode 100644 index 816f0dc..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_doi5.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "id": "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", - "instance": [ - { - "collectedfrom": { - "key": "10|opendoar____::358aee4cc897452c00244351e4d91f69", - "value": "Zenodo" - }, - "pid": [ - { - "qualifier": {"classid": "doi"}, - "value": "10.5281/zenodo.5121485" - } - ] - }, - { - "collectedfrom": { - "key": "10|opendoar____::8b6dd7db9af49e67306feb59a8bdc52c", - "value": "Europe PubMed Central" - }, - "pid": [ - { - "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" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_irish_tender_1.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_irish_tender_1.json deleted file mode 100644 index 08a7bc5..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_irish_tender_1.json +++ /dev/null @@ -1,3 +0,0 @@ -{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", "resulttype" : { "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"} ], "isGreen": null, "openAccessColor": "gold", "isInDiamondJournal": null, "publiclyFunded": null} -{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1g", "resulttype" : { "classid" : "publication" }, "isGreen": true, "openAccessColor": "gold", "isInDiamondJournal": true, "publiclyFunded": false } -{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1h", "resulttype" : { "classid" : "publication" }, "isGreen": false, "openAccessColor": null, "isInDiamondJournal": true, "publiclyFunded": false } \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_irish_tender_2.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_irish_tender_2.json deleted file mode 100644 index c9554d1..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_irish_tender_2.json +++ /dev/null @@ -1,3 +0,0 @@ -{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", "resulttype" : { "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"} ], "isGreen": null, "openAccessColor": "gold", "isInDiamondJournal": null, "publiclyFunded": null} -{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1g", "resulttype" : { "classid" : "publication" }, "isGreen": true, "openAccessColor": "bronze", "isInDiamondJournal": true, "publiclyFunded": false } -{"id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1h", "resulttype" : { "classid" : "publication" }, "isGreen": false, "openAccessColor": null, "isInDiamondJournal": true, "publiclyFunded": false } \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_openapc.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_openapc.json deleted file mode 100644 index f06ac18..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_openapc.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "id": "50|openapc_____::000023f9cb6e3a247c764daec4273cbc", - "resuttype": { - "classid": "publication" - }, - "instance": [ - { - "collectedfrom": { - "key": "10|apc_________::e2b1600b229fc30663c8a1f662debddf", - "value": "OpenAPC Global Initiative" - }, - "pid": [ - { - "qualifier": {"classid": "doi"}, - "value": "10.1016/j.cmet.2010.03.013" - }, - { - "qualifier": {"classid": "pmc"}, - "value": "21459329" - }, - { - "qualifier": {"classid": "pmid"}, - "value": "25811027" - } - ], - "url":["https://doi.org/10.1155/2015/439379"] - } - ] -} - - diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_pmc1.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_pmc1.json deleted file mode 100644 index 537719f..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_pmc1.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "id": "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", - "pid": [ - { - "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" - } - ] -} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_pmc2.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_pmc2.json deleted file mode 100644 index e7d49ee..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_pmc2.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "id":"50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", - "instance": [ - { - "collectedfrom": { - "key": "10|opendoar____::8b6dd7db9af49e67306feb59a8bdc52c", - "value": "Europe PubMed Central" - }, - "pid": [ - { - "qualifier": {"classid": "doi"}, - "value": "10.1016/j.cmet.2010.03.013" - }, - { - "qualifier":{"classid":"pmc"}, - "value":"21459329" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_urn1.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_urn1.json deleted file mode 100644 index 5323ac8..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publication_urn1.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "id": "50|DansKnawCris::0829b5191605bdbea36d6502b8c1ce1f", - "pid": [ - { - "qualifier": { - "classid": "urn" - }, - "value": "urn:nbn:nl:ui:29-f3ed5f9e-edf6-457e-8848-61b58a4075e2" - }, - { - "qualifier": { - "classid": "scp-number" - }, - "value": "79953761260" - }, - { - "qualifier": { - "classid": "pmcid" - }, - "value": "21459329" - } - ] -} \ No newline at end of file diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publications.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publications.json deleted file mode 100644 index ef0cc58..0000000 --- a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/publications.json +++ /dev/null @@ -1,12 +0,0 @@ -{"author":[{"fullname":"Levande, Paul","name":"Paul","pid":[],"rank":1,"surname":"Levande"}],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::6824b298c96ba906a3e6a70593affbf5","value":"Episciences"}],"context":[],"contributor":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Coordination Episciences iam"}],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2011-01-01"},"dateofcollection":"2021-11-09T19:00:42.081Z","dateoftransformation":"2021-11-09T19:36:08.397Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"We examine the $q=1$ and $t=0$ special cases of the parking functions conjecture. The parking functions conjecture states that the Hilbert series for the space of diagonal harmonics is equal to the bivariate generating function of $area$ and $dinv$ over the set of parking functions. Haglund recently proved that the Hilbert series for the space of diagonal harmonics is equal to a bivariate generating function over the set of Tesler matrices–upper-triangular matrices with every hook sum equal to one. We give a combinatorial interpretation of the Haglund generating function at $q=1$ and prove the corresponding case of the parking functions conjecture (first proven by Garsia and Haiman). We also discuss a possible proof of the $t = 0$ case consistent with this combinatorial interpretation. We conclude by briefly discussing possible refinements of the parking functions conjecture arising from this research and point of view. $\\textbf{Note added in proof}$: We have since found such a proof of the $t = 0$ case and conjectured more detailed refinements. This research will most likely be presented in full in a forthcoming article."},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"On examine les cas spéciaux $q=1$ et $t=0$ de la conjecture des fonctions de stationnement. Cette conjecture déclare que la série de Hilbert pour l'espace des harmoniques diagonaux est égale à la fonction génératrice bivariée (paramètres $area$ et $dinv$) sur l'ensemble des fonctions de stationnement. Haglund a prouvé récemment que la série de Hilbert pour l'espace des harmoniques diagonaux est égale à une fonction génératrice bivariée sur l'ensemble des matrices de Tesler triangulaires supérieures dont la somme de chaque équerre vaut un. On donne une interprétation combinatoire de la fonction génératrice de Haglund pour $q=1$ et on prouve le cas correspondant de la conjecture dans le cas des fonctions de stationnement (prouvé d'abord par Garsia et Haiman). On discute aussi d'une preuve possible du cas $t=0$, cohérente avec cette interprétation combinatoire. On conclut en discutant brièvement les raffinements possibles de la conjecture des fonctions de stationnement de ce point de vue. $\\textbf{Note ajoutée sur épreuve}$: j'ai trouvé depuis cet article une preuve du cas $t=0$ et conjecturé des raffinements possibles. Ces résultats seront probablement présentés dans un article ultérieur."}],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|06cdd3ff4700::93859bd27121c3ee7c6ee4bfb1790cba","instance":[{"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.46298/dmtcs.2940"}],"collectedfrom":{"key":"10|openaire____::6824b298c96ba906a3e6a70593affbf5","value":"Episciences"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2011-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::6824b298c96ba906a3e6a70593affbf5","value":"Episciences"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://dmtcs.episciences.org/2940"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458725892,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Foai.episciences.org%2F","datestamp":"2011-01-01","harvestDate":"2021-11-09T19:00:42.081Z","identifier":"oai:episciences.org:dmtcs:2940","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["50|06cdd3ff4700::93859bd27121c3ee7c6ee4bfb1790cba","oai:episciences.org:dmtcs:2940"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"ISSN: 1365-8050"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Discrete Mathematics & Theoretical Computer Science"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Episciences.org"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"dmtcs:2940 - Discrete Mathematics & Theoretical Computer Science, 2011-01-01, DMTCS Proceedings vol. AO, 23rd International Conference on Formal Power Series and Algebraic Combinatorics (FPSAC 2011)"}],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"parking function"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Hilbert series"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"diagonal harmonics"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"[MATH.MATH-CO] Mathematics [math]/Combinatorics [math.CO]"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"[INFO.INFO-DM] Computer Science [cs]/Discrete Mathematics [cs.DM]"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Special Cases of the Parking Functions Conjecture and Upper-Triangular Matrices"}]} -{"author":[{"fullname":"Ward, Mark Daniel","name":"Mark Daniel","pid":[],"rank":1,"surname":"Ward"},{"fullname":"Szpankowski, Wojciech","name":"Wojciech","pid":[],"rank":2,"surname":"Szpankowski"}],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::6824b298c96ba906a3e6a70593affbf5","value":"Episciences"}],"context":[],"contributor":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Coordination Episciences iam"}],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2005-01-01"},"dateofcollection":"2021-11-09T19:00:34.758Z","dateoftransformation":"2021-11-09T19:50:55.725Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"In a suffix tree, the multiplicity matching parameter (MMP) $M_n$ is the number of leaves in the subtree rooted at the branching point of the $(n+1)$st insertion. Equivalently, the MMP is the number of pointers into the database in the Lempel-Ziv '77 data compression algorithm. We prove that the MMP asymptotically follows the logarithmic series distribution plus some fluctuations. In the proof we compare the distribution of the MMP in suffix trees to its distribution in tries built over independent strings. Our results are derived by both probabilistic and analytic techniques of the analysis of algorithms. In particular, we utilize combinatorics on words, bivariate generating functions, pattern matching, recurrence relations, analytical poissonization and depoissonization, the Mellin transform, and complex analysis."}],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|06cdd3ff4700::ff21e3c55d527fa7db171137c5fd1f1f","instance":[{"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.46298/dmtcs.3387"}],"collectedfrom":{"key":"10|openaire____::6824b298c96ba906a3e6a70593affbf5","value":"Episciences"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2005-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::6824b298c96ba906a3e6a70593affbf5","value":"Episciences"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://dmtcs.episciences.org/3387"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458734473,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Foai.episciences.org%2F","datestamp":"2005-01-01","harvestDate":"2021-11-09T19:00:34.758Z","identifier":"oai:episciences.org:dmtcs:3387","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["50|06cdd3ff4700::ff21e3c55d527fa7db171137c5fd1f1f","oai:episciences.org:dmtcs:3387"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"ISSN: 1365-8050"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Discrete Mathematics & Theoretical Computer Science"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Episciences.org"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"dmtcs:3387 - Discrete Mathematics & Theoretical Computer Science, 2005-01-01, DMTCS Proceedings vol. AD, International Conference on Analysis of Algorithms"}],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"data compression"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"complex asymptotics"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"suffix trees"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"combinatorics on words"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"pattern matching"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"autocorrelation polynomial"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"[INFO.INFO-DS] Computer Science [cs]/Data Structures and Algorithms [cs.DS]"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"[INFO.INFO-DM] Computer Science [cs]/Discrete Mathematics [cs.DM]"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"[MATH.MATH-CO] Mathematics [math]/Combinatorics [math.CO]"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"[INFO.INFO-CG] Computer Science [cs]/Computational Geometry [cs.CG]"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Analysis of the multiplicity matching parameter in suffix trees"}]} -{"author":[{"fullname":"Södergård, Caj","name":"Caj","pid":[],"rank":1,"surname":"Södergård"}],"bestaccessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1989-01-01"},"dateofcollection":"2021-11-06T12:40:33.938Z","dateoftransformation":"2021-11-06T13:13:36.91Z","description":[],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::046477dc24819c5f1453166aa7bfb75e","instance":[{"accessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1989-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0004","classname":"Conference object","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/42136eb0-696d-4861-b587-3b451a46a914"]}],"language":{"classid":"fin","classname":"Finnish","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458015650,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2019-06-19T05:36:38Z","harvestDate":"2021-11-06T12:40:33.938Z","identifier":"oai:cris.vtt.fi:publications/42136eb0-696d-4861-b587-3b451a46a914","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["50|355e65625b88::046477dc24819c5f1453166aa7bfb75e","oai:cris.vtt.fi:publications/42136eb0-696d-4861-b587-3b451a46a914"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Södergård , C 1989 , ' Telefax ja telefoto ' , Kehittyvä tiedonsiirto graafisessa yrityksessä , Helsinki , Finland , 29/05/89 - 30/05/89 ."}],"subject":[],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Telefax ja telefoto"}]} -{"author":[{"fullname":"Antikainen, Maria","name":"Maria","pid":[],"rank":1,"surname":"Antikainen"},{"fullname":"Niemelä, Marketta","name":"Marketta","pid":[],"rank":2,"surname":"Niemelä"}],"bestaccessright":{"classid":"CLOSED","classname":"Closed Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2017-01-01"},"dateofcollection":"2021-11-06T12:40:11.372Z","dateoftransformation":"2021-11-06T15:30:47.295Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Local food supports local finance, employment and cultural traditions. Local food producers often have limited resources to invest in R&D, and their risk-taking ability is low. Earlier studies in the online community context indicate that utilising the user's creativity and innovation capability has a great deal of potential for new product development and service design. For local food producers, social media offers cost-efficient opportunities for involving customers in product and service development. The aim of the study is to explore the potential of a co-creation approach for local food producers and how to engage consumers in that co-creation. The study is dyadic, taking both the consumers' and producers' perspectives. The results indicate that consumers seem to be interested in having long-term relationships with producers. Their motivations to participate in co-creation processes were found to be mostly related to the possibility of producing better products and of learning and gaining new insights. The producers who participated in our study have already taken the first steps in using social media, and the next logical step would be utilising social media in the co-creation process."}],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::38d0ab3b2212878dee7072170f1561ee","instance":[{"accessright":{"classid":"CLOSED","classname":"Closed Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.1504/ijtmkt.2017.081507"}],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2017-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/44aa6ac9-4763-4cef-a683-220dbcb02712"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458079051,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2021-10-22T11:41:35Z","harvestDate":"2021-11-06T12:40:11.372Z","identifier":"oai:cris.vtt.fi:publications/44aa6ac9-4763-4cef-a683-220dbcb02712","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["oai:cris.vtt.fi:publications/44aa6ac9-4763-4cef-a683-220dbcb02712","50|355e65625b88::38d0ab3b2212878dee7072170f1561ee"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Antikainen , M & Niemelä , M 2017 , ' How to co-create local food products with consumers? ' , International Journal of Technology Marketing , vol. 12 , no. 1 , pp. 71-89 . https://doi.org/10.1504/IJTMKT.2017.081507"}],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"co-creation"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"local food"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"new product development"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"open innovation"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"social media"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"case study"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"consumer"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"co-development"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"co-design"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"user involvement"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"sustainability"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"How to co-create local food products with consumers?"}]} -{"author":[{"fullname":"Lehtinen, Pekka","name":"Pekka","pid":[],"rank":1,"surname":"Lehtinen"},{"fullname":"Sibakov, Juhani","name":"Juhani","pid":[],"rank":2,"surname":"Sibakov"}],"bestaccessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2010-01-01"},"dateofcollection":"2021-11-06T12:47:29.271Z","dateoftransformation":"2021-11-06T16:36:12.322Z","description":[],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::4d3f5bf7749b9a26c01e80f3dd36daef","instance":[{"accessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2010-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/39400c55-6b86-4fd5-a380-622e887db9a5"]}],"language":{"classid":"fin","classname":"Finnish","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458104266,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2021-11-03T06:19:09Z","harvestDate":"2021-11-06T12:47:29.271Z","identifier":"oai:cris.vtt.fi:publications/39400c55-6b86-4fd5-a380-622e887db9a5","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["50|355e65625b88::4d3f5bf7749b9a26c01e80f3dd36daef","oai:cris.vtt.fi:publications/39400c55-6b86-4fd5-a380-622e887db9a5"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Lehtinen , P & Sibakov , J 2010 , ' Enemmän kaurasta ' , Mallas ja Olut , vol. 2010 , no. 3 , pp. 84-87 ."}],"subject":[],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Enemmän kaurasta"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"More from oats"}]} -{"author":[{"fullname":"Ronkainen, Hannu","name":"Hannu","pid":[],"rank":1,"surname":"Ronkainen"},{"fullname":"Mellin, Joni","name":"Joni","pid":[],"rank":2,"surname":"Mellin"}],"bestaccessright":{"classid":"CLOSED","classname":"Closed Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2004-01-01"},"dateofcollection":"2021-11-06T12:44:56.68Z","dateoftransformation":"2021-11-06T17:00:20.868Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"A floating capacitor with a MOS charge injector structure can be used as a nonvolatile memory. This type of memory device can be embedded into an analog MOS technology with capacitors. In this article the feasibility of the structure for small scale embedded memory is studied with 1.5µm analog ASIC molybdenum gate technology."}],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::56bbb35df31e73991dee2df139a1cefa","instance":[{"accessright":{"classid":"CLOSED","classname":"Closed Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.1088/0031-8949/2004/t114/034"}],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2004-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/8f14e470-b1fe-46fd-bc71-207b65751a4c"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458115933,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2021-01-01T03:20:34Z","harvestDate":"2021-11-06T12:44:56.68Z","identifier":"oai:cris.vtt.fi:publications/8f14e470-b1fe-46fd-bc71-207b65751a4c","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["oai:cris.vtt.fi:publications/8f14e470-b1fe-46fd-bc71-207b65751a4c","50|355e65625b88::56bbb35df31e73991dee2df139a1cefa"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Ronkainen , H & Mellin , J 2004 , ' EEPROM cell design for molybdenum gate analog BECMOS process ' , Physica Scripta , vol. T114 , pp. 133 - 137 . https://doi.org/10.1088/0031-8949/2004/T114/034"}],"subject":[],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"EEPROM cell design for molybdenum gate analog BECMOS process"}]} -{"author":[],"bestaccessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Vallinheimo, Eija"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Setälä, Tarja"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Sohlberg, Sakari"}],"country":[{"classid":"FI","classname":"Finland","dataInfo":{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"country:instrepos","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"},"schemeid":"dnet:countries","schemename":"dnet:countries"}],"coverage":[],"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2002-01-01"},"dateofcollection":"2021-11-06T12:47:04.287Z","dateoftransformation":"2021-11-06T18:34:59.086Z","description":[],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::76e3f831b17a51b6c2c5d072469c7587","instance":[{"accessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2002-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0002","classname":"Book","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/6d8a9079-5a24-43d3-bcd5-1b5f538b3c0b"]}],"language":{"classid":"fin","classname":"Finnish","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458154975,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2020-11-20T08:22:01Z","harvestDate":"2021-11-06T12:47:04.287Z","identifier":"oai:cris.vtt.fi:publications/6d8a9079-5a24-43d3-bcd5-1b5f538b3c0b","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["50|355e65625b88::76e3f831b17a51b6c2c5d072469c7587","oai:cris.vtt.fi:publications/6d8a9079-5a24-43d3-bcd5-1b5f538b3c0b"],"pid":[],"publisher":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"VTT Technical Research Centre of Finland"},"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Vallinheimo , E , Setälä , T & Sohlberg , S (eds) 2002 , Kuinka metallintutkimus jalostui : Muistelmia metallurgian laboratoriosta 1942-1994 . VTT Technical Research Centre of Finland , Espoo ."}],"subject":[],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Kuinka metallintutkimus jalostui:Muistelmia metallurgian laboratoriosta 1942-1994"}]} -{"author":[{"fullname":"Cao, Sunliang","name":"Sunliang","pid":[],"rank":1,"surname":"Cao"},{"fullname":"Hasan, Ala","name":"Ala","pid":[],"rank":2,"surname":"Hasan"},{"fullname":"Siren, Kai","name":"Kai","pid":[],"rank":3,"surname":"Siren"}],"bestaccessright":{"classid":"CLOSED","classname":"Closed Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2013-01-01"},"dateofcollection":"2021-11-06T12:41:33.649Z","dateoftransformation":"2021-11-06T18:56:51.151Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"The objective of this paper is to close the scientific gap that there is a lack of comprehensive matching analysis for the increasingly complicated on-site hybrid energy systems with a continuously decreased annual primary energy consumption/equivalent CO2 emission. Thus, a thorough matching analysis is conducted for the on-site hybrid systems of two office buildings under distinct climate conditions. Both of the studied buildings are equipped with PV and solar thermal assisted ground source heat pumps (GSHP), which can be controlled by six excess renewable electrical (REe) and one excess renewable thermal (REth) treatments with respect to certain thermal storage recharging and grid exporting strategies. The assessment criteria are six recently defined indices. With the aid of these indices, the key methodology is to conduct parametric analyses from the aspect of matching for solar thermal collector area and connection type, PV panel area, and electrical battery size regarding certain excess REe or REth treatments. The outcomes of matching analyses show the advantages of solar thermal collectors connected in a parallel fashion in meeting office heating demands, the consistency between electrical generation and demand in the daytime in office buildings, the enhancement of on-site heating and cooling by GSHP and free ground cooling, and the battery effect in technically improving electrical matching. Furthermore, the fluctuations of indices in the instantaneous matching analysis clearly reflect the matching situations of on-site renewable energy resources and demand conditions at each time-step, which will be helpful for the detailed investigation of specific system operations and user behaviours. It has been shown that the methodology used in the study can be helpful for aiding the design of increasingly complicated on-site hybrid energy systems."}],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::7c73a836ec6edb701b2ed0a45de2be34","instance":[{"accessright":{"classid":"CLOSED","classname":"Closed Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.1016/j.apenergy.2013.07.031"}],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2013-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/b1dfe7fc-4e60-4982-8f1c-ccc12579ab00"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458162087,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2021-06-19T01:36:54Z","harvestDate":"2021-11-06T12:41:33.649Z","identifier":"oai:cris.vtt.fi:publications/b1dfe7fc-4e60-4982-8f1c-ccc12579ab00","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["oai:cris.vtt.fi:publications/b1dfe7fc-4e60-4982-8f1c-ccc12579ab00","50|355e65625b88::7c73a836ec6edb701b2ed0a45de2be34"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Cao , S , Hasan , A & Siren , K 2013 , ' Matching analysis for on-site hybrid renewable energy systems of office buildings with extended indices ' , Applied Energy , vol. 113 , pp. 230-247 . https://doi.org/10.1016/j.apenergy.2013.07.031"}],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"ground source heat pump"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"matching indices"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"mismatch analysis"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"office building"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"renewable feed-in"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"solar"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"/dk/atira/pure/sustainabledevelopmentgoals/affordable_and_clean_energy"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"SDG 7 - Affordable and Clean Energy"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"/dk/atira/pure/sustainabledevelopmentgoals/climate_action"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"SDG 13 - Climate Action"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Matching analysis for on-site hybrid renewable energy systems of office buildings with extended indices"}]} -{"author":[{"fullname":"Suni, Ilkka","name":"Ilkka","pid":[],"rank":1,"surname":"Suni"},{"fullname":"Grönberg, Leif","name":"Leif","pid":[],"rank":2,"surname":"Grönberg"},{"fullname":"Saarilahti, Jaakko","name":"Jaakko","pid":[],"rank":3,"surname":"Saarilahti"}],"bestaccessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[],"country":[{"classid":"FI","classname":"Finland","dataInfo":{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"country:instrepos","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"},"schemeid":"dnet:countries","schemename":"dnet:countries"}],"coverage":[],"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1987-01-01"},"dateofcollection":"2021-11-06T12:46:23.315Z","dateoftransformation":"2021-11-06T19:15:49.866Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"The authors report on the effects of ion implantation and rapid thermal annealing on the electrical transport properties of TiSi2 and MoSi2. The silicide layers were formed by solid phase reactions of sputtered metal films with silicon. Some of the wafers were implanted at room temperature with arsenic. To investigate the damage recovery, one of the samples were subjected to rapid thermal annealing. The resistivities of the silicides were measured in the van der Pauw configuration. The results are presented and discussed."}],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::80ee0506f19328fb194bd236f29b8c49","instance":[{"accessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1987-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/6ad59175-e7a1-4c3f-9e14-0e2978e54a66"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458167217,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2021-05-25T05:25:16Z","harvestDate":"2021-11-06T12:46:23.315Z","identifier":"oai:cris.vtt.fi:publications/6ad59175-e7a1-4c3f-9e14-0e2978e54a66","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["50|355e65625b88::80ee0506f19328fb194bd236f29b8c49","oai:cris.vtt.fi:publications/6ad59175-e7a1-4c3f-9e14-0e2978e54a66"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Suni , I , Grönberg , L & Saarilahti , J 1987 , ' Transport properties of silicides : effects of ion-irradiation and annealing ' , Vide, les Couches Minces , vol. 42 , no. 236 , pp. 233-236 ."}],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"titanium silicide"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"ion beams"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"heat treatment"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"molybdenum silicide"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"rapid thermal annealing"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Transport properties of silicides:effects of ion-irradiation and annealing"}]} -{"author":[{"fullname":"Kortelainen, Helena","name":"Helena","pid":[],"rank":1,"surname":"Kortelainen"},{"fullname":"Pursio, Saku","name":"Saku","pid":[],"rank":2,"surname":"Pursio"}],"bestaccessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2001-01-01"},"dateofcollection":"2021-11-06T12:47:14.02Z","dateoftransformation":"2021-11-06T20:52:03.055Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Availability performance is an efficiency measure. As input data, mean times between failures, mean times to repair and failure criticality are required. Detailed availability performance analysis of a production system requires a model, which takes into account the logical structure of the system and the storage capacity between process stages. The model can also take into account the effect of production disturbances and planned stoppages if corresponding data is available. A comprehensive availability performance model is a practical tool when improvements are to be directed effectively, strategies tested, or alternative investment proposals compared."}],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::9a9eb0e8d57ecfda331a206f6b122e2b","instance":[{"accessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2001-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/a92459e2-68b4-45f9-b8a5-ed7b00e764d8"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458197611,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2021-01-01T03:54:58Z","harvestDate":"2021-11-06T12:47:14.02Z","identifier":"oai:cris.vtt.fi:publications/a92459e2-68b4-45f9-b8a5-ed7b00e764d8","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["oai:cris.vtt.fi:publications/a92459e2-68b4-45f9-b8a5-ed7b00e764d8","50|355e65625b88::9a9eb0e8d57ecfda331a206f6b122e2b"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Kortelainen , H & Pursio , S 2001 , ' Availability performance stands for plant efficiency ' , Paperi ja puu , vol. 83 , no. 4 , pp. 292-296 ."}],"subject":[],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Availability performance stands for plant efficiency"}]} -{"author":[{"fullname":"Antikainen, Hannele","name":"Hannele","pid":[],"rank":1,"surname":"Antikainen"}],"bestaccessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1996-01-01"},"dateofcollection":"2021-11-06T12:48:05.57Z","dateoftransformation":"2021-11-06T22:12:02.979Z","description":[],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::ab957719ef10690373ff1c3cae3769ac","instance":[{"accessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1996-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/d26b0846-6bc4-42e2-b343-8849be5e1cf0"]}],"language":{"classid":"fin","classname":"Finnish","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458218199,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2019-08-02T08:01:44Z","harvestDate":"2021-11-06T12:48:05.57Z","identifier":"oai:cris.vtt.fi:publications/d26b0846-6bc4-42e2-b343-8849be5e1cf0","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["50|355e65625b88::ab957719ef10690373ff1c3cae3769ac","oai:cris.vtt.fi:publications/d26b0846-6bc4-42e2-b343-8849be5e1cf0"],"pid":[],"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Antikainen , H 1996 , ' Preflight -ohjelma paljastaa tulostusongelmat ' , Suomen Lehdistö , vol. 66 , no. 5 , pp. 22-25 ."}],"subject":[],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Preflight -ohjelma paljastaa tulostusongelmat"}]} -{"author":[{"fullname":"Leppälahti, Jukka","name":"Jukka","pid":[],"rank":1,"surname":"Leppälahti"}],"bestaccessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"}],"context":[],"contributor":[],"country":[{"classid":"FI","classname":"Finland","dataInfo":{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"country:instrepos","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"},"schemeid":"dnet:countries","schemename":"dnet:countries"}],"coverage":[],"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1998-01-01"},"dateofcollection":"2021-11-06T12:50:53.064Z","dateoftransformation":"2021-11-06T22:22:36.446Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Factors affecting the release and reactions of fuel-bound nitrogen in air gasification conditions were studied in order to be able to minimise their production during gasification. Another objective was to find new means to remove nitrogenous compounds from hot gasification gas. In fluidised-bed and fixed-bed types of gasifier NH3 is the predominant nitrogenous compound in addition to N2. In thermodynamic equilibrium the NH3 content of gasification gas is low. The equilibrium content ranges from 1 to 350 ppms depending on the temperature, pressure and stoichiometric ratio. The highest equilibrium content is usually encountered at high pressure. The real NH3 content of gasifier product gas is usually at least an order of magnitude higher. The fraction of fuel nitrogen that is converted to NH3 in gasification is affected by several factors. During pyrolysis young biomass fuels tend to release part of the fuel nitrogen directly as NH3, whereas coals seem to release fuel nitrogen primarily from structures that favour HCN formation. A low heating rate and factors that increase the extent of secondary reactions of gases and char during pyrolysis also increase the conversion of HCN to NH3. In fluidised-bed (and fixed-bed) gasifiers the conditions seem to favour NH3 formation but in entrained-bed gasifiers a high heating rate may promote HCN formation. Factors affecting the release of char nitrogen in gasifiers are poorly known. In this work, a statistical model was developed, which can predict the conversion of fuel nitrogen to NH3 in a laboratory-scale fluidised-bed gasifier and a larger entrained-bed gasifier. It was found that the formation of NH3 was mostly dependent on the freeboard temperature of the gasifier, and on the iron, calcium, ash and volatile matter content of fuel. Increasing the iron content of the fuel resulted in a strong decreasing effect in the NH3 formation in the fluidised-bed gasifier, but it had a smaller effect in the entrained-bed gasifier. The decomposition rate of NH3 may be increased by adding or creating suitable reactive gas species into the hot gas. In selective catalytic oxidation oxidisers like O2, NO or a mixture of these are added to the gasification gas before flowing the gas through the catalyst bed. Aluminium oxide and aluminium silicate catalysts proved to be the most effective of the materials tested in promoting NH3 decomposition in the presence of oxidisers. The temperature of optimum NH3 reduction was tightly dependent on the composition of the oxidiser used. If NO was allowed to convert to NO2 in the oxidiser mixture before feeding the oxidiser to the reactor, the best conversion was achieved at temperatures below 500 °C. If pure NO and O2 were used, the best conversion was achieved at 500 - 600 °C. An important finding in this work was the ability of aluminium oxide to catalyse the reaction between added O2 and NH3. No nitrogen oxides were formed during this type of NH3 oxidation on the aluminium oxide catalyst. The reaction product was probably N2. When O2/NH3 ratio was 4 in the experiments with synthetic gasification gas, 75% of the NH3 was decomposed in the aluminium oxide bed at the temperature range of 550 - 700 °C. The development of a gas cleaning process based on these results of selective catalytic oxidation still leaves several questions unanswered. The most important questions are connected with optimising the process, with the effect of gas impurities on the reactions and with the alternatives of oxidising HCN to N2 simultaneously with NH3."}],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|355e65625b88::ad8d151a2ef39d827b1b591ec856d886","instance":[{"accessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[],"collectedfrom":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1998-01-01"},"distributionlocation":"","hostedby":{"key":"10|openaire____::4692342f0992d91f9e705c26959f09e0","value":"VTT Research Information System"},"instancetype":{"classid":"0006","classname":"Doctoral thesis","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"pid":[],"refereed":{"classid":"0000","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["https://cris.vtt.fi/en/publications/34ca749e-a4cf-47c1-a28f-01720421cdc7"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1638458220428,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"https%3A%2F%2Fcris.vtt.fi%2Fws%2Foai","datestamp":"2021-01-02T03:47:22Z","harvestDate":"2021-11-06T12:50:53.064Z","identifier":"oai:cris.vtt.fi:publications/34ca749e-a4cf-47c1-a28f-01720421cdc7","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"originalId":["50|355e65625b88::ad8d151a2ef39d827b1b591ec856d886","oai:cris.vtt.fi:publications/34ca749e-a4cf-47c1-a28f-01720421cdc7"],"pid":[],"publisher":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"VTT Technical Research Centre of Finland"},"relevantdate":[],"resourcetype":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Leppälahti , J 1998 , ' Behaviour of fuel-bound nitrogen in gasification and in high-temperature NH3 removal processes : Dissertation ' , Doctor Degree , Åbo Akademi University , Espoo ."}],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"gas cleaning"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"gasifiers"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"hot gases"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"nitrogen"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"catalytic cleaning"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"value":"gasification"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Behaviour of fuel-bound nitrogen in gasification and in high-temperature NH3 removal processes:Dissertation"}]} \ No newline at end of file From 4092dcbef22aa6a3642cee76fad41cf063efcd6d Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 22 Mar 2024 16:11:03 +0100 Subject: [PATCH 11/13] [maven-release-plugin] prepare release dhp-schemas-6.1.0 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 56324d9..7457764 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ eu.dnetlib.dhp dhp-schemas jar - 6.1.0-SNAPSHOT + 6.1.0 @@ -32,7 +32,7 @@ scm:git:gitea@code-repo.d4science.org:D-Net/dhp-schemas.git scm:git:gitea@code-repo.d4science.org:D-Net/dhp-schemas.git https://code-repo.d4science.org/D-Net/dhp-schemas/ - dhp-schemas-2.10.30 + dhp-schemas-6.1.0 This module contains common schema classes meant to be used across the dnet-hadoop submodules From 2e2556f3c9f29f66a004523ad10073326d4fc685 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 22 Mar 2024 16:11:07 +0100 Subject: [PATCH 12/13] [maven-release-plugin] prepare for next development iteration --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 7457764..b23e711 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ eu.dnetlib.dhp dhp-schemas jar - 6.1.0 + 6.1.1-SNAPSHOT @@ -32,7 +32,7 @@ scm:git:gitea@code-repo.d4science.org:D-Net/dhp-schemas.git scm:git:gitea@code-repo.d4science.org:D-Net/dhp-schemas.git https://code-repo.d4science.org/D-Net/dhp-schemas/ - dhp-schemas-6.1.0 + dhp-schemas-2.10.30 This module contains common schema classes meant to be used across the dnet-hadoop submodules From 5118d7f08a1f293eea9fa1c921cc88289bed93c8 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Wed, 27 Mar 2024 10:30:20 +0100 Subject: [PATCH 13/13] updated changelog --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index a94128f..3b6a1a0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,6 +4,7 @@ | **Version** | **Changes** | **Readiness** | |-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------| +| 6.1.0 | [Graph model]
  • Introduced model classes to provide a JSON representation of records embedding information from the related entities.
| beta | | 5.17.3 | [Graph model]
  • added result level textual field to store the transformative agreement information.
| beta | | 4.17.3 | [Graph model]
  • moved context at the level of the entity.
| beta | | 4.17.2 | [Graph model]
  • added InstaceTypeMapping field on the instance level.
  • new result level fields to support the activities in the Irish tender `isGreen`, `openAccessColor`, `isInDiamondJournal`, `publiclyFunded`
    • | production |