From 3f6204ddc0800c82e6c3704d67d744a3d3f6a334 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Tue, 31 Jan 2023 14:36:13 +0100 Subject: [PATCH] WIP: pruning out non necessary fields from the internal model --- README.md | 3 +- pom.xml | 2 +- .../dnetlib/dhp/schema/common/EntityType.java | 4 +- .../dhp/schema/common/ModelConstants.java | 24 +- .../dhp/schema/common/ModelSupport.java | 46 +- .../eu/dnetlib/dhp/schema/oaf/Author.java | 21 +- .../eu/dnetlib/dhp/schema/oaf/AuthorPid.java | 16 + .../eu/dnetlib/dhp/schema/oaf/DataInfo.java | 31 +- .../eu/dnetlib/dhp/schema/oaf/Dataset.java | 69 +- .../eu/dnetlib/dhp/schema/oaf/Datasource.java | 243 +++---- .../oaf/{OafEntity.java => Entity.java} | 93 ++- .../dhp/schema/oaf/EntityDataInfo.java | 44 ++ .../dhp/schema/oaf/ExternalReference.java | 16 +- .../java/eu/dnetlib/dhp/schema/oaf/Field.java | 45 -- .../eu/dnetlib/dhp/schema/oaf/Instance.java | 44 +- .../eu/dnetlib/dhp/schema/oaf/KeyValue.java | 10 - .../eu/dnetlib/dhp/schema/oaf/License.java | 16 + .../java/eu/dnetlib/dhp/schema/oaf/Oaf.java | 104 +-- .../dnetlib/dhp/schema/oaf/Organization.java | 136 ++-- .../dhp/schema/oaf/OtherResearchProduct.java | 36 +- .../eu/dnetlib/dhp/schema/oaf/Project.java | 198 ++--- .../eu/dnetlib/dhp/schema/oaf/Provenance.java | 24 + .../dnetlib/dhp/schema/oaf/Publication.java | 27 +- .../eu/dnetlib/dhp/schema/oaf/Publisher.java | 16 + .../eu/dnetlib/dhp/schema/oaf/Qualifier.java | 33 +- .../eu/dnetlib/dhp/schema/oaf/Relation.java | 27 +- .../eu/dnetlib/dhp/schema/oaf/Result.java | 453 ++---------- .../eu/dnetlib/dhp/schema/oaf/Software.java | 49 +- .../dhp/schema/oaf/StructuredProperty.java | 10 - .../eu/dnetlib/dhp/schema/oaf/Subject.java | 10 + .../schema/oaf/utils/IdentifierFactory.java | 10 +- .../dhp/schema/oaf/utils/PidComparator.java | 4 +- .../oaf/utils/ResultTypeComparator.java | 4 +- .../eu/dnetlib/dhp/schema/sx/OafUtils.scala | 55 +- .../dhp/schema/common/ModelSupportTest.java | 6 +- .../eu/dnetlib/dhp/schema/oaf/MergeTest.java | 682 ------------------ .../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 | 198 ++++- .../dhp/schema/oaf/utils/publication_1.json | 1 - .../dhp/schema/oaf/utils/publication_2.json | 1 - .../dhp/schema/oaf/utils/publication_apc.json | 2 - .../schema/oaf/utils/publication_apc2.json | 2 - .../dhp/schema/oaf/utils/publications.json | 12 - 45 files changed, 820 insertions(+), 2021 deletions(-) create mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/AuthorPid.java rename src/main/java/eu/dnetlib/dhp/schema/oaf/{OafEntity.java => Entity.java} (58%) create mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/EntityDataInfo.java delete mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/License.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/Provenance.java create mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/Publisher.java delete mode 100644 src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.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/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_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/publications.json diff --git a/README.md b/README.md index 52fe9a4..f4ec07d 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,8 @@ 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` Te serialization of such objects (data store files) are used to pass data between workflow nodes in the processing pipeline. diff --git a/pom.xml b/pom.xml index 5571059..a1fb6c4 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ eu.dnetlib.dhp dhp-schemas jar - 3.15.1-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/src/main/java/eu/dnetlib/dhp/schema/common/EntityType.java b/src/main/java/eu/dnetlib/dhp/schema/common/EntityType.java index 54f30cf..bf92fb7 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/common/EntityType.java +++ b/src/main/java/eu/dnetlib/dhp/schema/common/EntityType.java @@ -1,7 +1,7 @@ package eu.dnetlib.dhp.schema.common; -import eu.dnetlib.dhp.schema.oaf.OafEntity; +import eu.dnetlib.dhp.schema.oaf.Entity; /** Actual entity types in the Graph */ public enum EntityType { @@ -14,7 +14,7 @@ public enum EntityType { * @param actual OafEntity subclass * @return the EntityType associated to the given class */ - public static EntityType fromClass(Class clazz) { + public static EntityType fromClass(Class clazz) { return EntityType.valueOf(clazz.getSimpleName().toLowerCase()); } diff --git a/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java b/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java index e47ae97..b023a17 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java +++ b/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java @@ -81,7 +81,7 @@ public class ModelConstants { public static final Qualifier PROVENANCE_ACTION_SET_QUALIFIER = qualifier( - SYSIMPORT_ACTIONSET, SYSIMPORT_ACTIONSET, DNET_PROVENANCE_ACTIONS, DNET_PROVENANCE_ACTIONS); + SYSIMPORT_ACTIONSET, SYSIMPORT_ACTIONSET, DNET_PROVENANCE_ACTIONS); public static final String DATASET_RESULTTYPE_CLASSID = "dataset"; public static final String PUBLICATION_RESULTTYPE_CLASSID = "publication"; @@ -186,36 +186,36 @@ public class ModelConstants { public static final Qualifier PUBLICATION_DEFAULT_RESULTTYPE = qualifier( PUBLICATION_RESULTTYPE_CLASSID, PUBLICATION_RESULTTYPE_CLASSID, - DNET_RESULT_TYPOLOGIES, DNET_RESULT_TYPOLOGIES); + DNET_RESULT_TYPOLOGIES); public static final Qualifier DATASET_DEFAULT_RESULTTYPE = qualifier( DATASET_RESULTTYPE_CLASSID, DATASET_RESULTTYPE_CLASSID, - DNET_RESULT_TYPOLOGIES, DNET_RESULT_TYPOLOGIES); + DNET_RESULT_TYPOLOGIES); public static final Qualifier SOFTWARE_DEFAULT_RESULTTYPE = qualifier( SOFTWARE_RESULTTYPE_CLASSID, SOFTWARE_RESULTTYPE_CLASSID, - DNET_RESULT_TYPOLOGIES, DNET_RESULT_TYPOLOGIES); + DNET_RESULT_TYPOLOGIES); public static final Qualifier ORP_DEFAULT_RESULTTYPE = qualifier( ORP_RESULTTYPE_CLASSID, ORP_RESULTTYPE_CLASSID, - DNET_RESULT_TYPOLOGIES, DNET_RESULT_TYPOLOGIES); + DNET_RESULT_TYPOLOGIES); public static final Qualifier REPOSITORY_PROVENANCE_ACTIONS = qualifier( SYSIMPORT_CROSSWALK_REPOSITORY, SYSIMPORT_CROSSWALK_REPOSITORY, - DNET_PROVENANCE_ACTIONS, DNET_PROVENANCE_ACTIONS); + DNET_PROVENANCE_ACTIONS); public static final Qualifier ENTITYREGISTRY_PROVENANCE_ACTION = qualifier( SYSIMPORT_CROSSWALK_ENTITYREGISTRY, SYSIMPORT_CROSSWALK_ENTITYREGISTRY, - DNET_PROVENANCE_ACTIONS, DNET_PROVENANCE_ACTIONS); + DNET_PROVENANCE_ACTIONS); public static final String UNKNOWN_REPOSITORY_ORIGINALID = "openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18"; public static final KeyValue UNKNOWN_REPOSITORY = keyValue( "10|openaire____::55045bd2a65019fd8e6741a755395c8c", "Unknown Repository"); - public static final Qualifier UNKNOWN_COUNTRY = qualifier(UNKNOWN, "Unknown", DNET_COUNTRY_TYPE, DNET_COUNTRY_TYPE); + public static final Qualifier UNKNOWN_COUNTRY = qualifier(UNKNOWN, "Unknown", DNET_COUNTRY_TYPE); public static final Qualifier MAIN_TITLE_QUALIFIER = qualifier( - "main title", "main title", DNET_DATACITE_TITLE, DNET_DATACITE_TITLE); + "main title", "main title", DNET_DATACITE_TITLE); public static final AccessRight OPEN_ACCESS_RIGHT() { @@ -223,20 +223,17 @@ public class ModelConstants { result.setClassid(ACCESS_RIGHT_OPEN); result.setClassid(ACCESS_RIGHT_OPEN); result.setSchemeid(ModelConstants.DNET_ACCESS_MODES); - result.setSchemename(ModelConstants.DNET_ACCESS_MODES); return result; } private static Qualifier qualifier( final String classid, final String classname, - final String schemeid, - final String schemename) { + final String schemeid) { final Qualifier q = new Qualifier(); q.setClassid(classid); q.setClassname(classname); q.setSchemeid(schemeid); - q.setSchemename(schemename); return q; } @@ -244,7 +241,6 @@ public class ModelConstants { final KeyValue kv = new KeyValue(); kv.setKey(key); kv.setValue(value); - kv.setDataInfo(new DataInfo()); return kv; } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java b/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java index c7a24b6..e38da89 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java +++ b/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java @@ -184,8 +184,6 @@ public class ModelSupport { .filter(r -> relationName.equalsIgnoreCase(r.getRelClass())) .findFirst() .orElse(null); - - } /** @@ -206,7 +204,7 @@ public class ModelSupport { private ModelSupport() { } - public static String getIdPrefix(Class clazz) { + public static String getIdPrefix(Class clazz) { return idPrefixMap.get(clazz); } @@ -258,36 +256,44 @@ public class ModelSupport { * @param * @return */ - public static Class[] getOafModelClasses() { + public static Class[] getOafModelClasses() { return new Class[] { + AccessRight.class, Author.class, + AuthorPid.class, Context.class, Country.class, DataInfo.class, Dataset.class, Datasource.class, + Entity.class, + EntityDataInfo.class, + EoscIfGuidelines.class, ExternalReference.class, ExtraInfo.class, - Field.class, GeoLocation.class, + H2020Classification.class, + H2020Programme.class, Instance.class, - AccessRight.class, - OpenAccessRoute.class, Journal.class, KeyValue.class, - Oaf.class, - OafEntity.class, + License.class, + Measure.class, OAIProvenance.class, + OpenAccessRoute.class, Organization.class, OriginDescription.class, OtherResearchProduct.class, Project.class, + Provenance.class, Publication.class, + Publisher.class, Qualifier.class, Relation.class, Result.class, Software.class, - StructuredProperty.class + StructuredProperty.class, + Subject.class }; } @@ -307,7 +313,7 @@ public class ModelSupport { entityMapping.get(EntityType.valueOf(targetType)).name()); } - public static String tableIdentifier(String dbName, String tableName) { + public static String tableIdentifier(String dbName, String tableName) { checkArgument(StringUtils.isNotBlank(dbName), "DB name cannot be empty"); checkArgument(StringUtils.isNotBlank(tableName), "table name cannot be empty"); @@ -315,24 +321,14 @@ public class ModelSupport { return String.format("%s.%s", dbName, tableName); } - public static String tableIdentifier(String dbName, Class clazz) { + public static String tableIdentifier(String dbName, Class clazz) { checkArgument(Objects.nonNull(clazz), "clazz is needed to derive the table name, thus cannot be null"); return tableIdentifier(dbName, clazz.getSimpleName().toLowerCase()); } - public static Function idFn() { - return x -> { - if (isSubClass(x, Relation.class)) { - return idFnForRelation(x); - } - return idFnForOafEntity(x); - }; - } - - private static String idFnForRelation(T t) { - Relation r = (Relation) t; + private static String idFnForRelation(Relation r) { return Optional .ofNullable(r.getSource()) .map( @@ -368,8 +364,8 @@ public class ModelSupport { .orElse(null); } - private static String idFnForOafEntity(T t) { - return ((OafEntity) t).getId(); + private static String idFnForOafEntity(T t) { + return t.getId(); } public static String md5(final String s) { 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..9f3e2e3 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java @@ -15,9 +15,7 @@ public class Author implements Serializable { // START WITH 1 private Integer rank; - private List pid; - - private List> affiliation; + private List pid; public String getFullname() { return fullname; @@ -51,22 +49,14 @@ public class Author implements Serializable { this.rank = rank; } - public List getPid() { + public List getPid() { return pid; } - public void setPid(List pid) { + public void setPid(List pid) { this.pid = pid; } - public List> getAffiliation() { - return affiliation; - } - - public void setAffiliation(List> affiliation) { - this.affiliation = affiliation; - } - @Override public boolean equals(Object o) { if (this == o) @@ -78,13 +68,12 @@ public class Author implements Serializable { && 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); + && Objects.equals(pid, author.pid); } @Override public int hashCode() { - return Objects.hash(fullname, name, surname, rank, pid, affiliation); + return Objects.hash(fullname, name, surname, rank, pid); } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/AuthorPid.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/AuthorPid.java new file mode 100644 index 0000000..fa15ab2 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/AuthorPid.java @@ -0,0 +1,16 @@ +package eu.dnetlib.dhp.schema.oaf; + +import java.io.Serializable; + +public class AuthorPid extends StructuredProperty implements Serializable { + + private DataInfo dataInfo; + + public DataInfo getDataInfo() { + return dataInfo; + } + + public void setDataInfo(DataInfo dataInfo) { + this.dataInfo = dataInfo; + } +} 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..d6b0bd5 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java @@ -3,24 +3,15 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.Objects; +import java.util.Optional; public class DataInfo implements Serializable { - private Boolean invisible = false; private Boolean inferred; - private Boolean deletedbyinference = false; - private String trust; + private float trust; private String inferenceprovenance; private Qualifier provenanceaction; - public Boolean getInvisible() { - return invisible; - } - - public void setInvisible(Boolean invisible) { - this.invisible = invisible; - } - public Boolean getInferred() { return inferred; } @@ -29,19 +20,11 @@ public class DataInfo implements Serializable { this.inferred = inferred; } - public Boolean getDeletedbyinference() { - return deletedbyinference; - } - - public void setDeletedbyinference(Boolean deletedbyinference) { - this.deletedbyinference = deletedbyinference; - } - - public String getTrust() { + public float getTrust() { return trust; } - public void setTrust(String trust) { + public void setTrust(float trust) { this.trust = trust; } @@ -68,9 +51,7 @@ public class DataInfo implements Serializable { 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) + return Objects.equals(inferred, dataInfo.inferred) && Objects.equals(trust, dataInfo.trust) && Objects.equals(inferenceprovenance, dataInfo.inferenceprovenance) && Objects.equals(provenanceaction, dataInfo.provenanceaction); @@ -80,6 +61,6 @@ public class DataInfo implements Serializable { public int hashCode() { return Objects .hash( - invisible, inferred, deletedbyinference, trust, inferenceprovenance, provenanceaction); + inferred, 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 b5587c6..329aff5 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Dataset.java @@ -8,70 +8,70 @@ import eu.dnetlib.dhp.schema.common.ModelConstants; public class Dataset extends Result implements Serializable { - private Field storagedate; + private String storagedate; // candidate for removal - private Field device; + private String device; - private Field size; + private String size; - private Field version; + private String version; - private Field lastmetadataupdate; + private String lastmetadataupdate; - private Field metadataversionnumber; + private String metadataversionnumber; private List geolocation; public Dataset() { - setResulttype(ModelConstants.DATASET_DEFAULT_RESULTTYPE); + setResulttype(ModelConstants.DATASET_RESULTTYPE_CLASSID); } - public Field getStoragedate() { + public String getStoragedate() { return storagedate; } - public void setStoragedate(Field storagedate) { + public void setStoragedate(String storagedate) { this.storagedate = storagedate; } - public Field getDevice() { + public String getDevice() { return device; } - public void setDevice(Field device) { + public void setDevice(String device) { this.device = device; } - public Field getSize() { + public String getSize() { return size; } - public void setSize(Field size) { + public void setSize(String size) { this.size = size; } - public Field getVersion() { + public String getVersion() { return version; } - public void setVersion(Field version) { + public void setVersion(String version) { this.version = version; } - public Field getLastmetadataupdate() { + public String getLastmetadataupdate() { return lastmetadataupdate; } - public void setLastmetadataupdate(Field lastmetadataupdate) { + public void setLastmetadataupdate(String lastmetadataupdate) { this.lastmetadataupdate = lastmetadataupdate; } - public Field getMetadataversionnumber() { + public String getMetadataversionnumber() { return metadataversionnumber; } - public void setMetadataversionnumber(Field metadataversionnumber) { + public void setMetadataversionnumber(String metadataversionnumber) { this.metadataversionnumber = metadataversionnumber; } @@ -82,35 +82,4 @@ public class Dataset extends Result implements Serializable { public void setGeolocation(List geolocation) { this.geolocation = geolocation; } - - @Override - public void mergeFrom(OafEntity e) { - super.mergeFrom(e); - - if (!Dataset.class.isAssignableFrom(e.getClass())) { - return; - } - - final Dataset d = (Dataset) e; - - storagedate = d.getStoragedate() != null && compareTrust(this, e) < 0 ? d.getStoragedate() : storagedate; - - device = d.getDevice() != null && compareTrust(this, e) < 0 ? d.getDevice() : device; - - size = d.getSize() != null && compareTrust(this, e) < 0 ? d.getSize() : size; - - version = d.getVersion() != null && compareTrust(this, e) < 0 ? d.getVersion() : version; - - lastmetadataupdate = d.getLastmetadataupdate() != null && compareTrust(this, e) < 0 - ? d.getLastmetadataupdate() - : lastmetadataupdate; - - metadataversionnumber = d.getMetadataversionnumber() != null && compareTrust(this, e) < 0 - ? d.getMetadataversionnumber() - : metadataversionnumber; - - geolocation = mergeLists(geolocation, d.getGeolocation()); - - mergeOAFDataInfo(d); - } } 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..08568fb 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java @@ -4,11 +4,8 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.List; -public class Datasource extends OafEntity implements Serializable { +public class Datasource extends Entity implements Serializable { - /** - * - */ private static final long serialVersionUID = 1019089598408414496L; @Deprecated @@ -23,83 +20,83 @@ public class Datasource extends OafEntity implements Serializable { private Qualifier openairecompatibility; - private Field officialname; + private String officialname; - private Field englishname; + private String englishname; - private Field websiteurl; + private String websiteurl; - private Field logourl; + private String logourl; - private Field contactemail; + private String contactemail; - private Field namespaceprefix; + private String namespaceprefix; - private Field latitude; + private String latitude; - private Field longitude; + private String longitude; - private Field dateofvalidation; + private String dateofvalidation; - private Field description; + private String description; private List subjects; // opendoar specific fields (od*) @Deprecated - private Field odnumberofitems; + private String odnumberofitems; @Deprecated - private Field odnumberofitemsdate; + private String odnumberofitemsdate; @Deprecated - private Field odpolicies; + private String odpolicies; @Deprecated - private List> odlanguages; + private List odlanguages; private List languages; @Deprecated - private List> odcontenttypes; + private List odcontenttypes; - private List> accessinfopackage; + private List accessinfopackage; // re3data fields - private Field releasestartdate; + private String releasestartdate; - private Field releaseenddate; + private String releaseenddate; - private Field missionstatementurl; + private String missionstatementurl; @Deprecated - private Field dataprovider; + private Boolean dataprovider; @Deprecated - private Field serviceprovider; + private Boolean serviceprovider; // {open, restricted or closed} - private Field databaseaccesstype; + private String databaseaccesstype; // {open, restricted or closed} - private Field datauploadtype; + private String datauploadtype; // {feeRequired, registration, other} - private Field databaseaccessrestriction; + private String databaseaccessrestriction; // {feeRequired, registration, other} - private Field datauploadrestriction; + private String datauploadrestriction; @Deprecated - private Field versioning; + private Boolean versioning; private Boolean versioncontrol; - private Field citationguidelineurl; + private String citationguidelineurl; - private Field pidsystems; + private String pidsystems; - private Field certificates; + private String certificates; @Deprecated private List policies; @@ -146,7 +143,7 @@ public class Datasource extends OafEntity implements Serializable { return datasourcetype; } - public void setDatasourcetype(final Qualifier datasourcetype) { + public void setDatasourcetype(Qualifier datasourcetype) { this.datasourcetype = datasourcetype; } @@ -154,7 +151,7 @@ public class Datasource extends OafEntity implements Serializable { return datasourcetypeui; } - public void setDatasourcetypeui(final Qualifier datasourcetypeui) { + public void setDatasourcetypeui(Qualifier datasourcetypeui) { this.datasourcetypeui = datasourcetypeui; } @@ -178,87 +175,87 @@ public class Datasource extends OafEntity implements Serializable { return openairecompatibility; } - public void setOpenairecompatibility(final Qualifier openairecompatibility) { + public void setOpenairecompatibility(Qualifier openairecompatibility) { this.openairecompatibility = openairecompatibility; } - public Field getOfficialname() { + public String getOfficialname() { return officialname; } - public void setOfficialname(final Field officialname) { + public void setOfficialname(String officialname) { this.officialname = officialname; } - public Field getEnglishname() { + public String getEnglishname() { return englishname; } - public void setEnglishname(final Field englishname) { + public void setEnglishname(String englishname) { this.englishname = englishname; } - public Field getWebsiteurl() { + public String getWebsiteurl() { return websiteurl; } - public void setWebsiteurl(final Field websiteurl) { + public void setWebsiteurl(String websiteurl) { this.websiteurl = websiteurl; } - public Field getLogourl() { + public String getLogourl() { return logourl; } - public void setLogourl(final Field logourl) { + public void setLogourl(String logourl) { this.logourl = logourl; } - public Field getContactemail() { + public String getContactemail() { return contactemail; } - public void setContactemail(final Field contactemail) { + public void setContactemail(String contactemail) { this.contactemail = contactemail; } - public Field getNamespaceprefix() { + public String getNamespaceprefix() { return namespaceprefix; } - public void setNamespaceprefix(final Field namespaceprefix) { + public void setNamespaceprefix(String namespaceprefix) { this.namespaceprefix = namespaceprefix; } - public Field getLatitude() { + public String getLatitude() { return latitude; } - public void setLatitude(final Field latitude) { + public void setLatitude(String latitude) { this.latitude = latitude; } - public Field getLongitude() { + public String getLongitude() { return longitude; } - public void setLongitude(final Field longitude) { + public void setLongitude(String longitude) { this.longitude = longitude; } - public Field getDateofvalidation() { + public String getDateofvalidation() { return dateofvalidation; } - public void setDateofvalidation(final Field dateofvalidation) { + public void setDateofvalidation(String dateofvalidation) { this.dateofvalidation = dateofvalidation; } - public Field getDescription() { + public String getDescription() { return description; } - public void setDescription(final Field description) { + public void setDescription(String description) { this.description = description; } @@ -266,39 +263,39 @@ public class Datasource extends OafEntity implements Serializable { return subjects; } - public void setSubjects(final List subjects) { + public void setSubjects(List subjects) { this.subjects = subjects; } - public Field getOdnumberofitems() { + public String getOdnumberofitems() { return odnumberofitems; } - public void setOdnumberofitems(final Field odnumberofitems) { + public void setOdnumberofitems(String odnumberofitems) { this.odnumberofitems = odnumberofitems; } - public Field getOdnumberofitemsdate() { + public String getOdnumberofitemsdate() { return odnumberofitemsdate; } - public void setOdnumberofitemsdate(final Field odnumberofitemsdate) { + public void setOdnumberofitemsdate(String odnumberofitemsdate) { this.odnumberofitemsdate = odnumberofitemsdate; } - public Field getOdpolicies() { + public String getOdpolicies() { return odpolicies; } - public void setOdpolicies(final Field odpolicies) { + public void setOdpolicies(String odpolicies) { this.odpolicies = odpolicies; } - public List> getOdlanguages() { + public List getOdlanguages() { return odlanguages; } - public void setOdlanguages(final List> odlanguages) { + public void setOdlanguages(List odlanguages) { this.odlanguages = odlanguages; } @@ -306,103 +303,103 @@ public class Datasource extends OafEntity implements Serializable { return languages; } - public void setLanguages(final List languages) { + public void setLanguages(List languages) { this.languages = languages; } - public List> getOdcontenttypes() { + public List getOdcontenttypes() { return odcontenttypes; } - public void setOdcontenttypes(final List> odcontenttypes) { + public void setOdcontenttypes(List odcontenttypes) { this.odcontenttypes = odcontenttypes; } - public List> getAccessinfopackage() { + public List getAccessinfopackage() { return accessinfopackage; } - public void setAccessinfopackage(final List> accessinfopackage) { + public void setAccessinfopackage(List accessinfopackage) { this.accessinfopackage = accessinfopackage; } - public Field getReleasestartdate() { + public String getReleasestartdate() { return releasestartdate; } - public void setReleasestartdate(final Field releasestartdate) { + public void setReleasestartdate(String releasestartdate) { this.releasestartdate = releasestartdate; } - public Field getReleaseenddate() { + public String getReleaseenddate() { return releaseenddate; } - public void setReleaseenddate(final Field releaseenddate) { + public void setReleaseenddate(String releaseenddate) { this.releaseenddate = releaseenddate; } - public Field getMissionstatementurl() { + public String getMissionstatementurl() { return missionstatementurl; } - public void setMissionstatementurl(final Field missionstatementurl) { + public void setMissionstatementurl(String missionstatementurl) { this.missionstatementurl = missionstatementurl; } - public Field getDataprovider() { + public Boolean getDataprovider() { return dataprovider; } - public void setDataprovider(final Field dataprovider) { + public void setDataprovider(Boolean dataprovider) { this.dataprovider = dataprovider; } - public Field getServiceprovider() { + public Boolean getServiceprovider() { return serviceprovider; } - public void setServiceprovider(final Field serviceprovider) { + public void setServiceprovider(Boolean serviceprovider) { this.serviceprovider = serviceprovider; } - public Field getDatabaseaccesstype() { + public String getDatabaseaccesstype() { return databaseaccesstype; } - public void setDatabaseaccesstype(final Field databaseaccesstype) { + public void setDatabaseaccesstype(String databaseaccesstype) { this.databaseaccesstype = databaseaccesstype; } - public Field getDatauploadtype() { + public String getDatauploadtype() { return datauploadtype; } - public void setDatauploadtype(final Field datauploadtype) { + public void setDatauploadtype(String datauploadtype) { this.datauploadtype = datauploadtype; } - public Field getDatabaseaccessrestriction() { + public String getDatabaseaccessrestriction() { return databaseaccessrestriction; } - public void setDatabaseaccessrestriction(final Field databaseaccessrestriction) { + public void setDatabaseaccessrestriction(String databaseaccessrestriction) { this.databaseaccessrestriction = databaseaccessrestriction; } - public Field getDatauploadrestriction() { + public String getDatauploadrestriction() { return datauploadrestriction; } - public void setDatauploadrestriction(final Field datauploadrestriction) { + public void setDatauploadrestriction(String datauploadrestriction) { this.datauploadrestriction = datauploadrestriction; } - public Field getVersioning() { + public Boolean getVersioning() { return versioning; } - public void setVersioning(final Field versioning) { + public void setVersioning(Boolean versioning) { this.versioning = versioning; } @@ -414,27 +411,27 @@ public class Datasource extends OafEntity implements Serializable { this.versioncontrol = versioncontrol; } - public Field getCitationguidelineurl() { + public String getCitationguidelineurl() { return citationguidelineurl; } - public void setCitationguidelineurl(final Field citationguidelineurl) { + public void setCitationguidelineurl(String citationguidelineurl) { this.citationguidelineurl = citationguidelineurl; } - public Field getPidsystems() { + public String getPidsystems() { return pidsystems; } - public void setPidsystems(final Field pidsystems) { + public void setPidsystems(String pidsystems) { this.pidsystems = pidsystems; } - public Field getCertificates() { + public String getCertificates() { return certificates; } - public void setCertificates(final Field certificates) { + public void setCertificates(String certificates) { this.certificates = certificates; } @@ -442,7 +439,7 @@ public class Datasource extends OafEntity implements Serializable { return policies; } - public void setPolicies(final List policies) { + public void setPolicies(List policies) { this.policies = policies; } @@ -450,7 +447,7 @@ public class Datasource extends OafEntity implements Serializable { return journal; } - public void setJournal(final Journal journal) { + public void setJournal(Journal journal) { this.journal = journal; } @@ -458,7 +455,7 @@ public class Datasource extends OafEntity implements Serializable { return researchentitytypes; } - public void setResearchentitytypes(final List researchentitytypes) { + public void setResearchentitytypes(List researchentitytypes) { this.researchentitytypes = researchentitytypes; } @@ -466,7 +463,7 @@ public class Datasource extends OafEntity implements Serializable { return providedproducttypes; } - public void setProvidedproducttypes(final List providedproducttypes) { + public void setProvidedproducttypes(List providedproducttypes) { this.providedproducttypes = providedproducttypes; } @@ -474,7 +471,7 @@ public class Datasource extends OafEntity implements Serializable { return jurisdiction; } - public void setJurisdiction(final Qualifier jurisdiction) { + public void setJurisdiction(Qualifier jurisdiction) { this.jurisdiction = jurisdiction; } @@ -482,7 +479,7 @@ public class Datasource extends OafEntity implements Serializable { return thematic; } - public void setThematic(final Boolean thematic) { + public void setThematic(Boolean thematic) { this.thematic = thematic; } @@ -490,7 +487,7 @@ public class Datasource extends OafEntity implements Serializable { return contentpolicies; } - public void setContentpolicies(final List contentpolicies) { + public void setContentpolicies(List contentpolicies) { this.contentpolicies = contentpolicies; } @@ -530,10 +527,26 @@ public class Datasource extends OafEntity implements Serializable { return consenttermsofuse; } - public void setConsenttermsofuse(final Boolean 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; } @@ -542,22 +555,6 @@ public class Datasource extends OafEntity implements Serializable { this.lastconsenttermsofusedate = lastconsenttermsofusedate; } - public Boolean getFulltextdownload() { - return fulltextdownload; - } - - public void setFulltextdownload(final Boolean fulltextdownload) { - this.fulltextdownload = fulltextdownload; - } - - public String getConsenttermsofusedate() { - return consenttermsofusedate; - } - - public void setConsenttermsofusedate(final String consenttermsofusedate) { - this.consenttermsofusedate = consenttermsofusedate; - } - public List getEoscifguidelines() { return eoscifguidelines; } @@ -565,10 +562,4 @@ public class Datasource extends OafEntity implements Serializable { public void setEoscifguidelines(List eoscifguidelines) { this.eoscifguidelines = eoscifguidelines; } - - @Override - public void mergeFrom(final OafEntity e) { - super.mergeFrom(e); - } - } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Entity.java similarity index 58% rename from src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java rename to src/main/java/eu/dnetlib/dhp/schema/oaf/Entity.java index 0411821..3fef249 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Entity.java @@ -5,21 +5,50 @@ import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; -public abstract class OafEntity extends Oaf implements Serializable { +public abstract class Entity extends Oaf implements Serializable { private String id; private List originalId; + /** + * The list of datasource id/name pairs providing this Oaf. + */ + protected List collectedfrom; + + private Long lastupdatetimestamp; + private List pid; private String dateofcollection; private String dateoftransformation; + /** + * The Measures. + */ + private List measures; + private List extraInfo; - private OAIProvenance oaiprovenance; + private EntityDataInfo dataInfo; + + + public List getCollectedfrom() { + return collectedfrom; + } + + public void setCollectedfrom(List collectedfrom) { + this.collectedfrom = collectedfrom; + } + + public Long getLastupdatetimestamp() { + return lastupdatetimestamp; + } + + public void setLastupdatetimestamp(Long lastupdatetimestamp) { + this.lastupdatetimestamp = lastupdatetimestamp; + } public String getId() { return id; @@ -57,6 +86,24 @@ public abstract class OafEntity extends Oaf implements Serializable { return dateoftransformation; } + /** + * Gets measures. + * + * @return the measures + */ + public List getMeasures() { + return measures; + } + + /** + * Sets measures. + * + * @param measures the measures + */ + public void setMeasures(List measures) { + this.measures = measures; + } + public void setDateoftransformation(String dateoftransformation) { this.dateoftransformation = dateoftransformation; } @@ -69,43 +116,12 @@ public abstract class OafEntity extends Oaf implements Serializable { this.extraInfo = extraInfo; } - public OAIProvenance getOaiprovenance() { - return oaiprovenance; + public EntityDataInfo getDataInfo() { + return dataInfo; } - public void setOaiprovenance(OAIProvenance oaiprovenance) { - 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(); - } - - @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()); + public void setDataInfo(EntityDataInfo dataInfo) { + this.dataInfo = dataInfo; } @Override @@ -116,7 +132,7 @@ public abstract class OafEntity extends Oaf implements Serializable { return false; if (!super.equals(o)) return false; - OafEntity oafEntity = (OafEntity) o; + Entity oafEntity = (Entity) o; return Objects.equals(id, oafEntity.id); } @@ -124,4 +140,5 @@ public abstract class OafEntity extends Oaf implements Serializable { public int hashCode() { return Objects.hash(super.hashCode(), id); } + } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/EntityDataInfo.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/EntityDataInfo.java new file mode 100644 index 0000000..0f54eee --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/EntityDataInfo.java @@ -0,0 +1,44 @@ +package eu.dnetlib.dhp.schema.oaf; + +import java.util.Objects; + +public class EntityDataInfo extends DataInfo { + + private Boolean invisible = false; + private Boolean deletedbyinference = false; + + + public Boolean getInvisible() { + return invisible; + } + + public void setInvisible(Boolean invisible) { + this.invisible = invisible; + } + + public Boolean getDeletedbyinference() { + return deletedbyinference; + } + + public void setDeletedbyinference(Boolean deletedbyinference) { + this.deletedbyinference = deletedbyinference; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + EntityDataInfo dataInfo = (EntityDataInfo) o; + return super.equals(o) && Objects.equals(invisible, dataInfo.invisible) + && Objects.equals(deletedbyinference, dataInfo.deletedbyinference); + } + + @Override + public int hashCode() { + return Objects + .hash(super.hashCode(), invisible, deletedbyinference); + } + +} 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..b8d090f 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/ExternalReference.java @@ -27,9 +27,6 @@ public class ExternalReference implements Serializable { // maps the oaf:reference/@query attribute private String query; - // ExternalReferences might be also inferred - private DataInfo dataInfo; - public String getSitename() { return sitename; } @@ -86,14 +83,6 @@ public class ExternalReference implements Serializable { this.query = query; } - public DataInfo getDataInfo() { - return dataInfo; - } - - public void setDataInfo(DataInfo dataInfo) { - this.dataInfo = dataInfo; - } - @Override public boolean equals(Object o) { if (this == o) @@ -106,15 +95,14 @@ public class ExternalReference implements Serializable { && 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); + && Objects.equals(query, that.query); } @Override public int hashCode() { return Objects .hash( - sitename, label, url, qualifier, refidentifier, query, dataInfo); + sitename, label, url, qualifier, refidentifier, query); } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java deleted file mode 100644 index 8358bc4..0000000 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java +++ /dev/null @@ -1,45 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf; - -import java.io.Serializable; -import java.util.Objects; - -public class Field implements Serializable { - - private T value; - - private DataInfo dataInfo; - - public T getValue() { - return value; - } - - public void setValue(T value) { - this.value = value; - } - - public DataInfo getDataInfo() { - return dataInfo; - } - - public void setDataInfo(DataInfo dataInfo) { - this.dataInfo = dataInfo; - } - - @Override - public int hashCode() { - return getValue() == null ? 0 : getValue().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Field other = (Field) obj; - return Objects.equals(getValue(), other.getValue()); - } -} diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java index 6bb2908..db87aac 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java @@ -6,7 +6,7 @@ import java.util.List; public class Instance implements Serializable { - private Field license; + private License license; private AccessRight accessright; @@ -16,6 +16,8 @@ public class Instance implements Serializable { private List url; + private List fulltext; + // other research products specifc private String distributionlocation; @@ -25,25 +27,23 @@ public class Instance implements Serializable { private List alternateIdentifier; - private Field dateofacceptance; + private String dateofacceptance; // ( article | book ) processing charges. Defined here to cope with possible wrongly typed // results - private Field processingchargeamount; + private String processingchargeamount; // currency - alphabetic code describe in ISO-4217. Defined here to cope with possible wrongly // typed results - private Field processingchargecurrency; + private String processingchargecurrency; private Qualifier refereed; // peer-review status - private List measures; - - public Field getLicense() { + public License getLicense() { return license; } - public void setLicense(Field license) { + public void setLicense(License license) { this.license = license; } @@ -79,6 +79,14 @@ public class Instance implements Serializable { this.url = url; } + public List getFulltext() { + return fulltext; + } + + public void setFulltext(List fulltext) { + this.fulltext = fulltext; + } + public String getDistributionlocation() { return distributionlocation; } @@ -103,11 +111,11 @@ public class Instance implements Serializable { this.pid = pid; } - public Field getDateofacceptance() { + public String getDateofacceptance() { return dateofacceptance; } - public void setDateofacceptance(Field dateofacceptance) { + public void setDateofacceptance(String dateofacceptance) { this.dateofacceptance = dateofacceptance; } @@ -119,19 +127,19 @@ public class Instance implements Serializable { this.alternateIdentifier = alternateIdentifier; } - public Field getProcessingchargeamount() { + public String getProcessingchargeamount() { return processingchargeamount; } - public void setProcessingchargeamount(Field processingchargeamount) { + public void setProcessingchargeamount(String processingchargeamount) { this.processingchargeamount = processingchargeamount; } - public Field getProcessingchargecurrency() { + public String getProcessingchargecurrency() { return processingchargecurrency; } - public void setProcessingchargecurrency(Field processingchargecurrency) { + public void setProcessingchargecurrency(String processingchargecurrency) { this.processingchargecurrency = processingchargecurrency; } @@ -143,14 +151,6 @@ public class Instance implements Serializable { this.refereed = refereed; } - public List getMeasures() { - return measures; - } - - public void setMeasures(List measures) { - this.measures = measures; - } - public String toComparableString() { return String .format( 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..ce31198 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java @@ -13,8 +13,6 @@ public class KeyValue implements Serializable { private String value; - private DataInfo dataInfo; - public String getKey() { return key; } @@ -31,14 +29,6 @@ public class KeyValue implements Serializable { this.value = value; } - public DataInfo getDataInfo() { - return dataInfo; - } - - public void setDataInfo(DataInfo dataInfo) { - this.dataInfo = dataInfo; - } - public String toComparableString() { return isBlank() ? "" diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/License.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/License.java new file mode 100644 index 0000000..0fcd152 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/License.java @@ -0,0 +1,16 @@ +package eu.dnetlib.dhp.schema.oaf; + +import java.io.Serializable; + +public class License implements Serializable { + + private String url; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } +} 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..16adbe3 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java @@ -1,108 +1,6 @@ - package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; -import java.util.Collection; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.stream.Collectors; -import java.util.stream.Stream; -public abstract class Oaf implements Serializable { - - /** - * The list of datasource id/name pairs providing this relationship. - */ - protected List collectedfrom; - - private DataInfo dataInfo; - - private Long lastupdatetimestamp; - - public List getCollectedfrom() { - return collectedfrom; - } - - public void setCollectedfrom(List collectedfrom) { - this.collectedfrom = collectedfrom; - } - - public DataInfo getDataInfo() { - return dataInfo; - } - - public void setDataInfo(DataInfo dataInfo) { - this.dataInfo = dataInfo; - } - - public Long getLastupdatetimestamp() { - return lastupdatetimestamp; - } - - public void setLastupdatetimestamp(Long lastupdatetimestamp) { - this.lastupdatetimestamp = lastupdatetimestamp; - } - - public void mergeFrom(Oaf o) { - if (Objects.isNull(o)) { - return; - } - setCollectedfrom( - Stream - .concat( - Optional - .ofNullable(getCollectedfrom()) - .map(Collection::stream) - .orElse(Stream.empty()), - Optional - .ofNullable(o.getCollectedfrom()) - .map(Collection::stream) - .orElse(Stream.empty())) - .distinct() // relies on KeyValue.equals - .collect(Collectors.toList())); - - setLastupdatetimestamp( - Math - .max( - Optional.ofNullable(getLastupdatetimestamp()).orElse(0L), - Optional.ofNullable(o.getLastupdatetimestamp()).orElse(0L))); - } - - public void mergeOAFDataInfo(Oaf o) { - Optional.ofNullable(o) - .ifPresent(other -> Optional.ofNullable(other.getDataInfo()) - .ifPresent(otherDataInfo -> Optional.ofNullable(this.getDataInfo()) - .ifPresent(thisDataInfo -> { - if (compareTrust(this, other) < 0 || thisDataInfo.getInvisible()) { - setDataInfo(otherDataInfo); - } - }))); - } - - protected String extractTrust(Oaf e) { - if (e == null || e.getDataInfo() == null || e.getDataInfo().getTrust() == null) - return "0.0"; - return e.getDataInfo().getTrust(); - } - - protected int compareTrust(Oaf a, Oaf b) { - return extractTrust(a).compareTo(extractTrust(b)); - } - - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - Oaf oaf = (Oaf) o; - return Objects.equals(getDataInfo(), oaf.getDataInfo()) - && Objects.equals(lastupdatetimestamp, oaf.lastupdatetimestamp); - } - - @Override - public int hashCode() { - return Objects.hash(dataInfo, lastupdatetimestamp); - } +public class Oaf implements Serializable { } 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..91092a8 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Organization.java @@ -4,158 +4,158 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.List; -public class Organization extends OafEntity implements Serializable { +public class Organization extends Entity implements Serializable { - private Field legalshortname; + private String legalshortname; - private Field legalname; + private String legalname; - private List> alternativeNames; + private List alternativeNames; - private Field websiteurl; + private String websiteurl; - private Field logourl; + private String logourl; - private Field eclegalbody; + private String eclegalbody; - private Field eclegalperson; + private String eclegalperson; - private Field ecnonprofit; + private String ecnonprofit; - private Field ecresearchorganization; + private String ecresearchorganization; - private Field echighereducation; + private String echighereducation; - private Field ecinternationalorganizationeurinterests; + private String ecinternationalorganizationeurinterests; - private Field ecinternationalorganization; + private String ecinternationalorganization; - private Field ecenterprise; + private String ecenterprise; - private Field ecsmevalidated; + private String ecsmevalidated; - private Field ecnutscode; + private String ecnutscode; private Qualifier country; - public Field getLegalshortname() { + public String getLegalshortname() { return legalshortname; } - public void setLegalshortname(Field legalshortname) { + public void setLegalshortname(String legalshortname) { this.legalshortname = legalshortname; } - public Field getLegalname() { + public String getLegalname() { return legalname; } - public void setLegalname(Field legalname) { + public void setLegalname(String legalname) { this.legalname = legalname; } - public List> getAlternativeNames() { + public List getAlternativeNames() { return alternativeNames; } - public void setAlternativeNames(List> alternativeNames) { + public void setAlternativeNames(List alternativeNames) { this.alternativeNames = alternativeNames; } - public Field getWebsiteurl() { + public String getWebsiteurl() { return websiteurl; } - public void setWebsiteurl(Field websiteurl) { + public void setWebsiteurl(String websiteurl) { this.websiteurl = websiteurl; } - public Field getLogourl() { + public String getLogourl() { return logourl; } - public void setLogourl(Field logourl) { + public void setLogourl(String logourl) { this.logourl = logourl; } - public Field getEclegalbody() { + public String getEclegalbody() { return eclegalbody; } - public void setEclegalbody(Field eclegalbody) { + public void setEclegalbody(String eclegalbody) { this.eclegalbody = eclegalbody; } - public Field getEclegalperson() { + public String getEclegalperson() { return eclegalperson; } - public void setEclegalperson(Field eclegalperson) { + public void setEclegalperson(String eclegalperson) { this.eclegalperson = eclegalperson; } - public Field getEcnonprofit() { + public String getEcnonprofit() { return ecnonprofit; } - public void setEcnonprofit(Field ecnonprofit) { + public void setEcnonprofit(String ecnonprofit) { this.ecnonprofit = ecnonprofit; } - public Field getEcresearchorganization() { + public String getEcresearchorganization() { return ecresearchorganization; } - public void setEcresearchorganization(Field ecresearchorganization) { + public void setEcresearchorganization(String ecresearchorganization) { this.ecresearchorganization = ecresearchorganization; } - public Field getEchighereducation() { + public String getEchighereducation() { return echighereducation; } - public void setEchighereducation(Field echighereducation) { + public void setEchighereducation(String echighereducation) { this.echighereducation = echighereducation; } - public Field getEcinternationalorganizationeurinterests() { + public String getEcinternationalorganizationeurinterests() { return ecinternationalorganizationeurinterests; } public void setEcinternationalorganizationeurinterests( - Field ecinternationalorganizationeurinterests) { + String ecinternationalorganizationeurinterests) { this.ecinternationalorganizationeurinterests = ecinternationalorganizationeurinterests; } - public Field getEcinternationalorganization() { + public String getEcinternationalorganization() { return ecinternationalorganization; } - public void setEcinternationalorganization(Field ecinternationalorganization) { + public void setEcinternationalorganization(String ecinternationalorganization) { this.ecinternationalorganization = ecinternationalorganization; } - public Field getEcenterprise() { + public String getEcenterprise() { return ecenterprise; } - public void setEcenterprise(Field ecenterprise) { + public void setEcenterprise(String ecenterprise) { this.ecenterprise = ecenterprise; } - public Field getEcsmevalidated() { + public String getEcsmevalidated() { return ecsmevalidated; } - public void setEcsmevalidated(Field ecsmevalidated) { + public void setEcsmevalidated(String ecsmevalidated) { this.ecsmevalidated = ecsmevalidated; } - public Field getEcnutscode() { + public String getEcnutscode() { return ecnutscode; } - public void setEcnutscode(Field ecnutscode) { + public void setEcnutscode(String ecnutscode) { this.ecnutscode = ecnutscode; } @@ -167,48 +167,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/OtherResearchProduct.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java index b04934c..c66bbb4 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OtherResearchProduct.java @@ -8,53 +8,37 @@ import eu.dnetlib.dhp.schema.common.ModelConstants; public class OtherResearchProduct extends Result implements Serializable { - private List> contactperson; + private List contactperson; - private List> contactgroup; + private List contactgroup; - private List> tool; + private List tool; public OtherResearchProduct() { - setResulttype(ModelConstants.ORP_DEFAULT_RESULTTYPE); + setResulttype(ModelConstants.ORP_RESULTTYPE_CLASSID); } - public List> getContactperson() { + public List getContactperson() { return contactperson; } - public void setContactperson(List> contactperson) { + public void setContactperson(List contactperson) { this.contactperson = contactperson; } - public List> getContactgroup() { + public List getContactgroup() { return contactgroup; } - public void setContactgroup(List> contactgroup) { + public void setContactgroup(List contactgroup) { this.contactgroup = contactgroup; } - public List> getTool() { + public List getTool() { return tool; } - public void setTool(List> tool) { + public void setTool(List tool) { this.tool = tool; } - - @Override - public void mergeFrom(OafEntity e) { - super.mergeFrom(e); - - if (!OtherResearchProduct.class.isAssignableFrom(e.getClass())) { - return; - } - - OtherResearchProduct o = (OtherResearchProduct) e; - - contactperson = mergeLists(contactperson, o.getContactperson()); - contactgroup = mergeLists(contactgroup, o.getContactgroup()); - tool = mergeLists(tool, o.getTool()); - mergeOAFDataInfo(e); - } } 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..9a0632d 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Project.java @@ -4,57 +4,55 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.List; -import org.apache.commons.lang3.StringUtils; +public class Project extends Entity implements Serializable { -public class Project extends OafEntity implements Serializable { + private String websiteurl; - private Field websiteurl; + private String code; - private Field code; + private String acronym; - private Field acronym; + private String title; - private Field title; + private String startdate; - private Field startdate; + private String enddate; - private Field enddate; + private String callidentifier; - private Field callidentifier; + private String keywords; - private Field keywords; + private String duration; - private Field duration; + private String ecsc39; - private Field ecsc39; + private String oamandatepublications; - private Field oamandatepublications; - - private Field ecarticle29_3; + private String ecarticle29_3; private List subjects; - private List> fundingtree; + private List fundingtree; private Qualifier contracttype; - private Field optional1; + private String optional1; - private Field optional2; + private String optional2; - private Field jsonextrainfo; + private String jsonextrainfo; - private Field contactfullname; + private String contactfullname; - private Field contactfax; + private String contactfax; - private Field contactphone; + private String contactphone; - private Field contactemail; + private String contactemail; - private Field summary; + private String summary; - private Field currency; + private String currency; private Float totalcost; @@ -64,7 +62,7 @@ public class Project extends OafEntity implements Serializable { private String h2020topicdescription; - private List h2020classification; + private Listh2020classification; public String getH2020topicdescription() { return h2020topicdescription; @@ -90,99 +88,99 @@ public class Project extends OafEntity implements Serializable { this.h2020classification = h2020classification; } - public Field getWebsiteurl() { + public String getWebsiteurl() { return websiteurl; } - public void setWebsiteurl(Field websiteurl) { + public void setWebsiteurl( String websiteurl) { this.websiteurl = websiteurl; } - public Field getCode() { + public String getCode() { return code; } - public void setCode(Field code) { + public void setCode( String code) { this.code = code; } - public Field getAcronym() { + public String getAcronym() { return acronym; } - public void setAcronym(Field acronym) { + public void setAcronym( String acronym) { this.acronym = acronym; } - public Field getTitle() { + public String getTitle() { return title; } - public void setTitle(Field title) { + public void setTitle( String title) { this.title = title; } - public Field getStartdate() { + public String getStartdate() { return startdate; } - public void setStartdate(Field startdate) { + public void setStartdate( String startdate) { this.startdate = startdate; } - public Field getEnddate() { + public String getEnddate() { return enddate; } - public void setEnddate(Field enddate) { + public void setEnddate( String enddate) { this.enddate = enddate; } - public Field getCallidentifier() { + public String getCallidentifier() { return callidentifier; } - public void setCallidentifier(Field callidentifier) { + public void setCallidentifier( String callidentifier) { this.callidentifier = callidentifier; } - public Field getKeywords() { + public String getKeywords() { return keywords; } - public void setKeywords(Field keywords) { + public void setKeywords( String keywords) { this.keywords = keywords; } - public Field getDuration() { + public String getDuration() { return duration; } - public void setDuration(Field duration) { + public void setDuration( String duration) { this.duration = duration; } - public Field getEcsc39() { + public String getEcsc39() { return ecsc39; } - public void setEcsc39(Field ecsc39) { + public void setEcsc39( String ecsc39) { this.ecsc39 = ecsc39; } - public Field getOamandatepublications() { + public String getOamandatepublications() { return oamandatepublications; } - public void setOamandatepublications(Field oamandatepublications) { + public void setOamandatepublications( String oamandatepublications) { this.oamandatepublications = oamandatepublications; } - public Field getEcarticle29_3() { + public String getEcarticle29_3() { return ecarticle29_3; } - public void setEcarticle29_3(Field ecarticle29_3) { + public void setEcarticle29_3( String ecarticle29_3) { this.ecarticle29_3 = ecarticle29_3; } @@ -194,11 +192,11 @@ public class Project extends OafEntity implements Serializable { this.subjects = subjects; } - public List> getFundingtree() { + public List< String> getFundingtree() { return fundingtree; } - public void setFundingtree(List> fundingtree) { + public void setFundingtree(List< String> fundingtree) { this.fundingtree = fundingtree; } @@ -210,75 +208,75 @@ public class Project extends OafEntity implements Serializable { this.contracttype = contracttype; } - public Field getOptional1() { + public String getOptional1() { return optional1; } - public void setOptional1(Field optional1) { + public void setOptional1( String optional1) { this.optional1 = optional1; } - public Field getOptional2() { + public String getOptional2() { return optional2; } - public void setOptional2(Field optional2) { + public void setOptional2( String optional2) { this.optional2 = optional2; } - public Field getJsonextrainfo() { + public String getJsonextrainfo() { return jsonextrainfo; } - public void setJsonextrainfo(Field jsonextrainfo) { + public void setJsonextrainfo( String jsonextrainfo) { this.jsonextrainfo = jsonextrainfo; } - public Field getContactfullname() { + public String getContactfullname() { return contactfullname; } - public void setContactfullname(Field contactfullname) { + public void setContactfullname( String contactfullname) { this.contactfullname = contactfullname; } - public Field getContactfax() { + public String getContactfax() { return contactfax; } - public void setContactfax(Field contactfax) { + public void setContactfax( String contactfax) { this.contactfax = contactfax; } - public Field getContactphone() { + public String getContactphone() { return contactphone; } - public void setContactphone(Field contactphone) { + public void setContactphone( String contactphone) { this.contactphone = contactphone; } - public Field getContactemail() { + public String getContactemail() { return contactemail; } - public void setContactemail(Field contactemail) { + public void setContactemail( String contactemail) { this.contactemail = contactemail; } - public Field getSummary() { + public String getSummary() { return summary; } - public void setSummary(Field summary) { + public void setSummary( String summary) { this.summary = summary; } - public Field getCurrency() { + public String getCurrency() { return currency; } - public void setCurrency(Field currency) { + public void setCurrency( String currency) { this.currency = currency; } @@ -298,64 +296,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/Provenance.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Provenance.java new file mode 100644 index 0000000..fd15386 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Provenance.java @@ -0,0 +1,24 @@ +package eu.dnetlib.dhp.schema.oaf; + +public class Provenance { + + private KeyValue collectedfrom; + + private DataInfo dataInfo; + + public KeyValue getCollectedfrom() { + return collectedfrom; + } + + public void setCollectedfrom(KeyValue collectedfrom) { + this.collectedfrom = collectedfrom; + } + + public DataInfo getDataInfo() { + return dataInfo; + } + + public void setDataInfo(DataInfo dataInfo) { + this.dataInfo = dataInfo; + } +} 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..ee6fed0 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Publication.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Publication.java @@ -7,33 +7,8 @@ import eu.dnetlib.dhp.schema.common.ModelConstants; public class Publication extends Result implements Serializable { - // publication specific - private Journal journal; - public Publication() { - setResulttype(ModelConstants.PUBLICATION_DEFAULT_RESULTTYPE); + setResulttype(ModelConstants.PUBLICATION_RESULTTYPE_CLASSID); } - public Journal getJournal() { - return journal; - } - - public void setJournal(Journal journal) { - this.journal = journal; - } - - @Override - public void mergeFrom(OafEntity e) { - super.mergeFrom(e); - - if (!Publication.class.isAssignableFrom(e.getClass())) { - return; - } - - Publication p = (Publication) e; - - if (p.getJournal() != null && compareTrust(this, e) < 0) - journal = p.getJournal(); - mergeOAFDataInfo(e); - } } diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Publisher.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Publisher.java new file mode 100644 index 0000000..de3d6fc --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Publisher.java @@ -0,0 +1,16 @@ +package eu.dnetlib.dhp.schema.oaf; + +import java.io.Serializable; + +public class Publisher implements Serializable { + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} 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..fa00532 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java @@ -2,17 +2,18 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; +import java.util.stream.Stream; import org.apache.commons.lang3.StringUtils; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.google.common.base.Joiner; public class Qualifier implements Serializable { private String classid; private String classname; private String schemeid; - private String schemename; public String getClassid() { return classid; @@ -38,32 +39,12 @@ public class Qualifier implements Serializable { this.schemeid = schemeid; } - public String getSchemename() { - return schemename; - } - - public void setSchemename(String schemename) { - 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); + return Joiner + .on("::") + .join( + Stream.of(getClassid(), getClassname(), getSchemeid()) + .filter(StringUtils::isNotBlank).iterator()); } @Override 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..53c8414 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java @@ -3,6 +3,7 @@ package eu.dnetlib.dhp.schema.oaf; import static com.google.common.base.Preconditions.checkArgument; +import java.io.Serializable; import java.text.ParseException; import java.util.ArrayList; import java.util.List; @@ -16,7 +17,7 @@ import eu.dnetlib.dhp.schema.common.ModelSupport; * subRelType and relClass. Provenance information is modeled according to the dataInfo element and collectedFrom, while * individual relationship types can provide extra information via the properties field. */ -public class Relation extends Oaf { +public class Relation extends Oaf implements Serializable { /** * Main relationship classifier, values include 'resultResult', 'resultProject', 'resultOrganization', etc. @@ -54,6 +55,18 @@ public class Relation extends Oaf { */ private String validationDate; + private List provenance; + + private DataInfo dataInfo; + + public DataInfo getDataInfo() { + return dataInfo; + } + + public void setDataInfo(DataInfo dataInfo) { + this.dataInfo = dataInfo; + } + /** * List of relation specific properties. Values include 'similarityLevel', indicating the similarity score between a * pair of publications. @@ -124,6 +137,14 @@ public class Relation extends Oaf { this.validationDate = validationDate; } + public List getProvenance() { + return provenance; + } + + public void setProvenance(List provenance) { + this.provenance = provenance; + } + public void mergeFrom(final Relation r) { checkArgument(Objects.equals(getSource(), r.getSource()), "source ids must be equal"); @@ -142,8 +163,6 @@ public class Relation extends Oaf { "invalid validation date format in relation [s:%s, t:%s]: %s", getSource(), getTarget(), getValidationDate())); } - - super.mergeFrom(r); } @Override @@ -162,7 +181,7 @@ public class Relation extends Oaf { @Override public int hashCode() { - return Objects.hash(relType, subRelType, relClass, source, target, collectedfrom); + return Objects.hash(relType, subRelType, relClass, source, target, provenance); } } 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 ff0246b..07bc153 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java @@ -2,38 +2,22 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; -import java.util.*; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.Pair; - -import eu.dnetlib.dhp.schema.common.AccessRightComparator; -import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.oaf.utils.CleaningFunctions; +import java.util.List; /** * The type Result. */ -public class Result extends OafEntity implements Serializable { +public class Result extends Entity implements Serializable { /** * ( article | book ) processing charges. */ - - private Field processingchargeamount; - + private String processingchargeamount; /** * currency - alphabetic code describe in ISO-4217. */ - private Field processingchargecurrency; - - /** - * The Measures. - */ - private List measures; + private String processingchargecurrency; /** * The Author. @@ -41,15 +25,13 @@ public class Result extends OafEntity implements Serializable { private List author; /** - * The Resulttype. + * The Resulttype. It allows subclassing results into publications | datasets | software | orp */ -// resulttype allows subclassing results into publications | datasets | software - private Qualifier resulttype; + private String resulttype; /** * The Language. */ -// common fields private Qualifier language; /** @@ -75,42 +57,42 @@ public class Result extends OafEntity implements Serializable { /** * The Description. */ - private List> description; + private List description; /** * The Dateofacceptance. */ - private Field dateofacceptance; + private String dateofacceptance; /** * The Publisher. */ - private Field publisher; + private Publisher publisher; /** * The Embargoenddate. */ - private Field embargoenddate; + private String embargoenddate; /** * The Source. */ - private List> source; + private List source; /** * The Fulltext. */ - private List> fulltext; // remove candidate + private List fulltext; /** * The Format. */ - private List> format; + private List format; /** * The Contributor. */ - private List> contributor; + private List contributor; /** * The Resourcetype. @@ -120,13 +102,15 @@ public class Result extends OafEntity implements Serializable { /** * The Coverage. */ - private List> coverage; + private List coverage; /** * The Bestaccessright. */ private Qualifier bestaccessright; + private Journal journal; + /** * The Context. */ @@ -147,37 +131,21 @@ public class Result extends OafEntity implements Serializable { */ private List eoscifguidelines; - /** - * Gets measures. - * - * @return the measures - */ - public List getMeasures() { - return measures; - } + private OAIProvenance oaiprovenance; - /** - * Sets measures. - * - * @param measures the measures - */ - public void setMeasures(List measures) { - this.measures = measures; - } - - public Field getProcessingchargeamount() { + public String getProcessingchargeamount() { return processingchargeamount; } - public void setProcessingchargeamount(Field processingchargeamount) { + public void setProcessingchargeamount(String processingchargeamount) { this.processingchargeamount = processingchargeamount; } - public Field getProcessingchargecurrency() { + public String getProcessingchargecurrency() { return processingchargecurrency; } - public void setProcessingchargecurrency(Field processingchargecurrency) { + public void setProcessingchargecurrency(String processingchargecurrency) { this.processingchargecurrency = processingchargecurrency; } @@ -204,7 +172,7 @@ public class Result extends OafEntity implements Serializable { * * @return the resulttype */ - public Qualifier getResulttype() { + public String getResulttype() { return resulttype; } @@ -213,7 +181,7 @@ public class Result extends OafEntity implements Serializable { * * @param resulttype the resulttype */ - public void setResulttype(Qualifier resulttype) { + public void setResulttype(String resulttype) { this.resulttype = resulttype; } @@ -312,7 +280,7 @@ public class Result extends OafEntity implements Serializable { * * @return the description */ - public List> getDescription() { + public List getDescription() { return description; } @@ -321,7 +289,7 @@ public class Result extends OafEntity implements Serializable { * * @param description the description */ - public void setDescription(List> description) { + public void setDescription(List description) { this.description = description; } @@ -330,7 +298,7 @@ public class Result extends OafEntity implements Serializable { * * @return the dateofacceptance */ - public Field getDateofacceptance() { + public String getDateofacceptance() { return dateofacceptance; } @@ -339,7 +307,7 @@ public class Result extends OafEntity implements Serializable { * * @param dateofacceptance the dateofacceptance */ - public void setDateofacceptance(Field dateofacceptance) { + public void setDateofacceptance(String dateofacceptance) { this.dateofacceptance = dateofacceptance; } @@ -348,7 +316,7 @@ public class Result extends OafEntity implements Serializable { * * @return the publisher */ - public Field getPublisher() { + public Publisher getPublisher() { return publisher; } @@ -357,7 +325,7 @@ public class Result extends OafEntity implements Serializable { * * @param publisher the publisher */ - public void setPublisher(Field publisher) { + public void setPublisher(Publisher publisher) { this.publisher = publisher; } @@ -366,7 +334,7 @@ public class Result extends OafEntity implements Serializable { * * @return the embargoenddate */ - public Field getEmbargoenddate() { + public String getEmbargoenddate() { return embargoenddate; } @@ -375,7 +343,7 @@ public class Result extends OafEntity implements Serializable { * * @param embargoenddate the embargoenddate */ - public void setEmbargoenddate(Field embargoenddate) { + public void setEmbargoenddate(String embargoenddate) { this.embargoenddate = embargoenddate; } @@ -384,7 +352,7 @@ public class Result extends OafEntity implements Serializable { * * @return the source */ - public List> getSource() { + public List getSource() { return source; } @@ -393,7 +361,7 @@ public class Result extends OafEntity implements Serializable { * * @param source the source */ - public void setSource(List> source) { + public void setSource(List source) { this.source = source; } @@ -402,7 +370,7 @@ public class Result extends OafEntity implements Serializable { * * @return the fulltext */ - public List> getFulltext() { + public List getFulltext() { return fulltext; } @@ -411,7 +379,7 @@ public class Result extends OafEntity implements Serializable { * * @param fulltext the fulltext */ - public void setFulltext(List> fulltext) { + public void setFulltext(List fulltext) { this.fulltext = fulltext; } @@ -420,7 +388,7 @@ public class Result extends OafEntity implements Serializable { * * @return the format */ - public List> getFormat() { + public List getFormat() { return format; } @@ -429,7 +397,7 @@ public class Result extends OafEntity implements Serializable { * * @param format the format */ - public void setFormat(List> format) { + public void setFormat(List format) { this.format = format; } @@ -438,7 +406,7 @@ public class Result extends OafEntity implements Serializable { * * @return the contributor */ - public List> getContributor() { + public List getContributor() { return contributor; } @@ -447,7 +415,7 @@ public class Result extends OafEntity implements Serializable { * * @param contributor the contributor */ - public void setContributor(List> contributor) { + public void setContributor(List contributor) { this.contributor = contributor; } @@ -474,7 +442,7 @@ public class Result extends OafEntity implements Serializable { * * @return the coverage */ - public List> getCoverage() { + public List getCoverage() { return coverage; } @@ -483,7 +451,7 @@ public class Result extends OafEntity implements Serializable { * * @param coverage the coverage */ - public void setCoverage(List> coverage) { + public void setCoverage(List coverage) { this.coverage = coverage; } @@ -505,6 +473,14 @@ public class Result extends OafEntity implements Serializable { this.bestaccessright = bestaccessright; } + public Journal getJournal() { + return journal; + } + + public void setJournal(Journal journal) { + this.journal = journal; + } + /** * Gets context. * @@ -567,332 +543,11 @@ public class Result extends OafEntity implements Serializable { this.eoscifguidelines = eoscifguidelines; } - /** - * 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()); + public OAIProvenance getOaiprovenance() { + return oaiprovenance; } - - /** - * Normalize pid string. - * - * @param pid the pid - * @return the string - */ - private static String extractKeyFromPid(final StructuredProperty pid) { - if (pid == null) - return null; - final StructuredProperty normalizedPid = CleaningFunctions.normalizePidValue(pid); - - return String.format("%s::%s", normalizedPid.getQualifier().getClassid(), normalizedPid.getValue()); - } - - /** - * Valid pid boolean. - * - * @param p the p - * @return the boolean - */ - private static boolean validPid(final StructuredProperty p) { - return p.getValue()!= null && p.getQualifier()!= null && p.getQualifier().getClassid()!=null; - } - - - /** - * This method converts the list of instance enrichments - * into a Map where the key is the normalized identifier - * and the value is the instance itself - * - * @param ri the list of enrichment instances - * @return the result map - */ - public static Map 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 enrichmentResult; - } - Map ri = toInstanceMap(enrichmentInstances); - - toEnrichInstances.forEach(i -> { - final List e = findEnrichmentsByPID(i.getPid(), ri); - if (e!= null && e.size()> 0) { - e.forEach(enr -> applyEnrichment(i, enr)); - } else { - final List a = findEnrichmentsByPID(i.getAlternateIdentifier(), ri); - if (a!= null && a.size()> 0) { - a.forEach(enr -> applyEnrichment(i, enr)); - } - } - enrichmentResult.add(i); - }); - return enrichmentResult; - } - - @Override - public void mergeFrom(OafEntity e) { - super.mergeFrom(e); - - if (!Result.class.isAssignableFrom(e.getClass())) { - return; - } - - Result r = (Result) e; - - if(processingchargeamount == null || StringUtils.isBlank(processingchargeamount.getValue() )){ - processingchargeamount = r.getProcessingchargeamount(); - processingchargecurrency = r.getProcessingchargecurrency(); - } - - measures = mergeLists(measures, r.getMeasures()); - - eoscifguidelines = mergeLists(eoscifguidelines, r.getEoscifguidelines()); - - if( !isAnEnrichment(this) && !isAnEnrichment(e)) - instance = mergeLists(instance, r.getInstance()); - else { - final List 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 (Objects.nonNull(r.getDateofacceptance())) { - if (Objects.isNull(getDateofacceptance())) { - dateofacceptance = r.getDateofacceptance(); - } else if (compareTrust(this, r) < 0) { - dateofacceptance = r.getDateofacceptance(); - } - } - - country = mergeLists(country, r.getCountry()); - - subject = mergeLists(subject, r.getSubject()); - - // merge title lists: main title with higher trust and distinct between the others - StructuredProperty baseMainTitle = null; - if (title != null) { - baseMainTitle = getMainTitle(title); - if (baseMainTitle != null) { - final StructuredProperty p = baseMainTitle; - title = title.stream().filter(t -> t != p).collect(Collectors.toList()); - } - } - - StructuredProperty newMainTitle = null; - if (r.getTitle() != null) { - newMainTitle = getMainTitle(r.getTitle()); - if (newMainTitle != null) { - final StructuredProperty p = newMainTitle; - r.setTitle(r.getTitle().stream().filter(t -> t != p).collect(Collectors.toList())); - } - } - - if (newMainTitle != null && compareTrust(this, r) < 0) { - baseMainTitle = newMainTitle; - } - - title = mergeLists(title, r.getTitle()); - if (title != null && baseMainTitle != null) { - title.add(baseMainTitle); - } - - relevantdate = mergeLists(relevantdate, r.getRelevantdate()); - - description = longestLists(description, r.getDescription()); - - if (r.getPublisher() != null && compareTrust(this, r) < 0) - publisher = r.getPublisher(); - - if (r.getEmbargoenddate() != null && compareTrust(this, r) < 0) - embargoenddate = r.getEmbargoenddate(); - - source = mergeLists(source, r.getSource()); - - fulltext = mergeLists(fulltext, r.getFulltext()); - - format = mergeLists(format, r.getFormat()); - - contributor = mergeLists(contributor, r.getContributor()); - - if (r.getResourcetype() != null) - resourcetype = r.getResourcetype(); - - coverage = mergeLists(coverage, r.getCoverage()); - - context = mergeLists(context, r.getContext()); - - externalReference = mergeLists(externalReference, r.getExternalReference()); - } - - /** - * Longest lists list. - * - * @param a the a - * @param b the b - * @return the list - */ - private List> 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; + public void setOaiprovenance(OAIProvenance oaiprovenance) { + this.oaiprovenance = oaiprovenance; } } 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..2a51877 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Software.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Software.java @@ -8,41 +8,30 @@ import eu.dnetlib.dhp.schema.common.ModelConstants; public class Software extends Result implements Serializable { - private List> documentationUrl; + private List documentationUrl; // candidate for removal - private List license; - - // candidate for removal - private Field codeRepositoryUrl; + private String codeRepositoryUrl; private Qualifier programmingLanguage; public Software() { - setResulttype(ModelConstants.SOFTWARE_DEFAULT_RESULTTYPE); + setResulttype(ModelConstants.SOFTWARE_RESULTTYPE_CLASSID); } - public List> getDocumentationUrl() { + public List getDocumentationUrl() { return documentationUrl; } - public void setDocumentationUrl(List> documentationUrl) { + public void setDocumentationUrl(List documentationUrl) { this.documentationUrl = documentationUrl; } - public List getLicense() { - return license; - } - - public void setLicense(List license) { - this.license = license; - } - - public Field getCodeRepositoryUrl() { + public String getCodeRepositoryUrl() { return codeRepositoryUrl; } - public void setCodeRepositoryUrl(Field codeRepositoryUrl) { + public void setCodeRepositoryUrl(String codeRepositoryUrl) { this.codeRepositoryUrl = codeRepositoryUrl; } @@ -53,28 +42,4 @@ public class Software extends Result implements Serializable { public void setProgrammingLanguage(Qualifier programmingLanguage) { this.programmingLanguage = programmingLanguage; } - - @Override - public void mergeFrom(OafEntity e) { - super.mergeFrom(e); - - if (!Software.class.isAssignableFrom(e.getClass())) { - return; - } - - final Software s = (Software) e; - documentationUrl = mergeLists(documentationUrl, s.getDocumentationUrl()); - - license = mergeLists(license, s.getLicense()); - - codeRepositoryUrl = s.getCodeRepositoryUrl() != null && compareTrust(this, s) < 0 - ? s.getCodeRepositoryUrl() - : codeRepositoryUrl; - - programmingLanguage = s.getProgrammingLanguage() != null && compareTrust(this, s) < 0 - ? s.getProgrammingLanguage() - : programmingLanguage; - - mergeOAFDataInfo(e); - } } 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..62669b0 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java @@ -14,8 +14,6 @@ public class StructuredProperty implements Serializable { private Qualifier qualifier; - private DataInfo dataInfo; - public String getValue() { return value; } @@ -32,14 +30,6 @@ public class StructuredProperty implements Serializable { this.qualifier = qualifier; } - public DataInfo getDataInfo() { - return dataInfo; - } - - public void setDataInfo(DataInfo dataInfo) { - this.dataInfo = dataInfo; - } - public String toComparableString() { return Stream .of( 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..df00af4 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,14 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; public class Subject extends StructuredProperty implements Serializable { + + private DataInfo dataInfo; + + public DataInfo getDataInfo() { + return dataInfo; + } + + public void setDataInfo(DataInfo dataInfo) { + this.dataInfo = dataInfo; + } } 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 index 32e8e39..aac2c8c 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java @@ -139,7 +139,7 @@ public class IdentifierFactory implements Serializable { * @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) { + public static String createIdentifier(T entity, boolean md5) { checkArgument(StringUtils.isNoneBlank(entity.getId()), "missing entity identifier"); @@ -164,7 +164,7 @@ public class IdentifierFactory implements Serializable { .orElseGet(entity::getId); } - private static Map> extractPids(T entity) { + private static Map> extractPids(T entity) { if (entity instanceof Result) { return Optional .ofNullable(((Result) entity).getInstance()) @@ -249,14 +249,14 @@ public class IdentifierFactory implements Serializable { } /** - * @see {@link IdentifierFactory#createIdentifier(OafEntity, boolean)} + * @see {@link IdentifierFactory#createIdentifier(Entity, boolean)} */ - public static String createIdentifier(T entity) { + public static String createIdentifier(T entity) { return createIdentifier(entity, true); } - private static String idFromPid(T entity, StructuredProperty s, boolean md5) { + private static String idFromPid(T entity, StructuredProperty s, boolean md5) { return idFromPid(ModelSupport.getIdPrefix(entity.getClass()), s.getQualifier().getClassid(), s.getValue(), md5); } 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 index a2bc65a..7a5d560 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidComparator.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidComparator.java @@ -4,12 +4,12 @@ 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.Entity; 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 { +public class PidComparator implements Comparator { private final T entity; 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 index 04d855d..a233ae7 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ResultTypeComparator.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/ResultTypeComparator.java @@ -34,8 +34,8 @@ public class ResultTypeComparator implements Comparator { return 1; } - String lClass = left.getResulttype().getClassid(); - String rClass = right.getResulttype().getClassid(); + String lClass = left.getResulttype(); + String rClass = right.getResulttype(); if (lClass.equals(rClass)) return 0; diff --git a/src/main/java/eu/dnetlib/dhp/schema/sx/OafUtils.scala b/src/main/java/eu/dnetlib/dhp/schema/sx/OafUtils.scala index b34a951..3113d23 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/sx/OafUtils.scala +++ b/src/main/java/eu/dnetlib/dhp/schema/sx/OafUtils.scala @@ -1,82 +1,53 @@ package eu.dnetlib.dhp.schema.sx import eu.dnetlib.dhp.schema.common.ModelConstants -import eu.dnetlib.dhp.schema.oaf.{AccessRight, DataInfo, Field, KeyValue, Qualifier, StructuredProperty} +import eu.dnetlib.dhp.schema.oaf.{AccessRight, DataInfo, KeyValue, Qualifier, StructuredProperty} object OafUtils { - - def generateKeyValue(key: String, value: String): KeyValue = { val kv: KeyValue = new KeyValue() kv.setKey(key) kv.setValue(value) - kv.setDataInfo(generateDataInfo("0.9")) kv } - - def generateDataInfo(trust: String = "0.9", invisible: Boolean = false): DataInfo = { + def generateDataInfo(trust: Float = 0.9f, invisible: Boolean = false): DataInfo = { val di = new DataInfo - di.setDeletedbyinference(false) di.setInferred(false) - di.setInvisible(invisible) di.setTrust(trust) di.setProvenanceaction(createQualifier(ModelConstants.SYSIMPORT_ACTIONSET, ModelConstants.DNET_PROVENANCE_ACTIONS)) di } def createQualifier(cls: String, sch: String): Qualifier = { - createQualifier(cls, cls, sch, sch) + createQualifier(cls, cls, sch) } - - def createQualifier(classId: String, className: String, schemeId: String, schemeName: String): Qualifier = { + def createQualifier(classId: String, className: String, schemeId: String): Qualifier = { val q: Qualifier = new Qualifier q.setClassid(classId) q.setClassname(className) q.setSchemeid(schemeId) - q.setSchemename(schemeName) q } - def createAccessRight(classId: String, className: String, schemeId: String, schemeName: String): AccessRight = { + def createAccessRight(classId: String, className: String, schemeId: String): AccessRight = { val accessRight: AccessRight = new AccessRight accessRight.setClassid(classId) accessRight.setClassname(className) accessRight.setSchemeid(schemeId) - accessRight.setSchemename(schemeName) accessRight } - - def asField[T](value: T): Field[T] = { - val tmp = new Field[T] - tmp.setValue(value) - tmp - - - } - - def createSP(value: String, classId: String,className:String, schemeId: String, schemeName:String): StructuredProperty = { + def createSP(value: String, classId: String,className:String, schemeId: String): StructuredProperty = { val sp = new StructuredProperty - sp.setQualifier(createQualifier(classId,className, schemeId, schemeName)) + sp.setQualifier(createQualifier(classId,className, schemeId)) sp.setValue(value) sp } - - - def createSP(value: String, classId: String,className:String, schemeId: String, schemeName:String, dataInfo: DataInfo): StructuredProperty = { - val sp = new StructuredProperty - sp.setQualifier(createQualifier(classId,className, schemeId, schemeName)) - sp.setValue(value) - sp.setDataInfo(dataInfo) - sp - - } - def createSP(value: String, classId: String, schemeId: String): StructuredProperty = { val sp = new StructuredProperty sp.setQualifier(createQualifier(classId, schemeId)) @@ -85,16 +56,4 @@ object OafUtils { } - - - def createSP(value: String, classId: String, schemeId: String, dataInfo: DataInfo): StructuredProperty = { - val sp = new StructuredProperty - sp.setQualifier(createQualifier(classId, schemeId)) - sp.setValue(value) - sp.setDataInfo(dataInfo) - sp - - } - - } diff --git a/src/test/java/eu/dnetlib/dhp/schema/common/ModelSupportTest.java b/src/test/java/eu/dnetlib/dhp/schema/common/ModelSupportTest.java index 3e1533b..f26fed0 100644 --- a/src/test/java/eu/dnetlib/dhp/schema/common/ModelSupportTest.java +++ b/src/test/java/eu/dnetlib/dhp/schema/common/ModelSupportTest.java @@ -8,7 +8,7 @@ import java.io.IOException; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import eu.dnetlib.dhp.schema.oaf.OafEntity; +import eu.dnetlib.dhp.schema.oaf.Entity; import eu.dnetlib.dhp.schema.oaf.Relation; import eu.dnetlib.dhp.schema.oaf.Result; @@ -20,7 +20,7 @@ public class ModelSupportTest { @Test void shouldReturnFalseWhenSubClassDoesNotExtendSuperClass() { // when - Boolean result = ModelSupport.isSubClass(Relation.class, OafEntity.class); + Boolean result = ModelSupport.isSubClass(Relation.class, Entity.class); // then assertFalse(result); @@ -29,7 +29,7 @@ public class ModelSupportTest { @Test void shouldReturnTrueWhenSubClassExtendsSuperClass() { // when - Boolean result = ModelSupport.isSubClass(Result.class, OafEntity.class); + Boolean result = ModelSupport.isSubClass(Result.class, Entity.class); // then assertTrue(result); 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 4479ea1..0000000 --- a/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java +++ /dev/null @@ -1,682 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf; - -import static org.junit.jupiter.api.Assertions.*; - -import java.io.IOException; -import java.io.InputStream; -import java.time.format.DateTimeParseException; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.StringUtils; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.Lists; - -/** - * The type Merge test. - */ -class MergeTest { - - /** - * The Oaf. - */ - OafEntity oaf; - - /** - * Sets up. - */ - @BeforeEach - public void setUp() { - oaf = new Publication(); - } - - /** - * Merge lists test. - */ - @Test - @SuppressWarnings("unchecked") - void mergeListsTest() { - - // string list merge test - List 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 -> assertTrue(p.getProcessingchargeamount() != null )); - publications.forEach(p -> assertTrue(p.getProcessingchargecurrency() != null )); - publications.forEach(p -> assertTrue(StringUtils.isNotBlank(p.getProcessingchargeamount().getValue() ))); - publications.forEach(p -> assertTrue(StringUtils.isNotBlank(p.getProcessingchargecurrency().getValue() ))); - - publications.forEach(p -> p.getInstance().stream() - .forEach(i -> assertTrue(i.getProcessingchargeamount() != null))); - publications.forEach(p -> p.getInstance().stream() - .forEach(i -> assertTrue(i.getProcessingchargecurrency() != null))); - - publications.forEach(p -> p.getInstance().stream() - .forEach(i -> assertTrue(StringUtils.isNotBlank(i.getProcessingchargeamount().getValue())))); - publications.forEach(p -> p.getInstance().stream() - .forEach(i -> assertTrue(StringUtils.isNotBlank(i.getProcessingchargecurrency().getValue())))); - - Result p1 = publications.get(0); - Result p2 = publications.get(1); - - p1.mergeFrom(p2); - - assertEquals("1721.47", p1.getProcessingchargeamount().getValue()); - assertEquals("EUR", p1.getProcessingchargecurrency().getValue()); - - assertEquals(2 , p1.getInstance().size()); - - p1.getInstance().stream().forEach(i -> assertTrue(i.getProcessingchargeamount() != null)); - p1.getInstance().stream().forEach(i -> assertTrue(i.getProcessingchargecurrency() != null)); - - p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount().getValue().equals("2000.47")); - p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount().getValue().equals("1721.47")); - - p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency().getValue().equals("EUR")); - p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency().getValue().equals("USD")); - System.out.println(new ObjectMapper().writeValueAsString(p1)); - } - @Test - void testAPCMerge2() throws Exception { - List publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publication_apc2.json", Publication.class); - System.out.println(publications.size()); - publications.forEach(p -> assertEquals(1, p.getInstance().size())); - assertTrue(publications.get(0).getProcessingchargeamount() != null ); - assertTrue(publications.get(0).getProcessingchargecurrency() != null ); - assertTrue(publications.get(1).getProcessingchargeamount() == null ); - - Result p1 = publications.get(1); - Result p2 = publications.get(0); - - //merge visible record with OpenAPC - p1.mergeFrom(p2); - - assertFalse(p1.getDataInfo().getInvisible()); - assertEquals("1721.47", p1.getProcessingchargeamount().getValue()); - assertEquals("EUR", p1.getProcessingchargecurrency().getValue()); - - assertEquals(2 , p1.getInstance().size()); - p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount() != null); - - p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency() != null); - - assertEquals("1721.47", p1.getInstance().stream().filter(i -> i.getProcessingchargeamount() != null) - .collect(Collectors.toList()).get(0).getProcessingchargeamount().getValue()); - - assertEquals("EUR", p1.getInstance().stream().filter(i -> i.getProcessingchargeamount() != null) - .collect(Collectors.toList()).get(0).getProcessingchargecurrency().getValue()); - assertFalse(p1.getDataInfo().getInvisible()); - System.out.println(new ObjectMapper().writeValueAsString(p1)); - - //merge OpenAPC with visible record - p2.mergeFrom(p1); - assertFalse(p2.getDataInfo().getInvisible()); - assertEquals("1721.47", p2.getProcessingchargeamount().getValue()); - assertEquals("EUR", p2.getProcessingchargecurrency().getValue()); - - assertEquals(2 , p2.getInstance().size()); - p2.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount() != null); - - p2.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency() != null); - - assertEquals("1721.47", p2.getInstance().stream().filter(i -> i.getProcessingchargeamount() != null) - .collect(Collectors.toList()).get(0).getProcessingchargeamount().getValue()); - - assertEquals("EUR", p2.getInstance().stream().filter(i -> i.getProcessingchargeamount() != null) - .collect(Collectors.toList()).get(0).getProcessingchargecurrency().getValue()); - - } - - /** - * Test enrichment function. - * - * @throws Exception the exception - */ - @Test - void testEnrichment() throws Exception { - - - // 1 TEST UPDATING PID INSTANCE AND MERGE CURRENT PUBLICATION WITH ENRICHMENT - // LOAD test publications - List 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/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 index c989394..c0f13ff 100644 --- 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 @@ -1 +1,197 @@ -{"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":[]} +{ + "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" + } + }, + "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" + } + } + ], + "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": [] + } + ], + "resulttype": "other", + "language": { + "classid": "UNKNOWN", + "classname": "Unknown", + "schemeid": "dnet:languages" + }, + "country": [], + "subject": [ + { + "value": "Ecology", + "qualifier": { + "classid": "", + "classname": "", + "schemeid": "" + }, + "dataInfo": { + "inferred": false, + "trust": "0.9", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:repository", + "classname": "sysimport:crosswalk:repository", + "schemeid": "dnet:provenanceActions" + } + } + }, + { + "value": "EOSC::RO-crate", + "qualifier": { + "classid": "", + "classname": "", + "schemeid": "" + }, + "dataInfo": { + "inferred": false, + "trust": "0.9", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:repository", + "classname": "sysimport:crosswalk:repository", + "schemeid": "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" + } + } + ], + "relevantdate": [ + { + "value": "2018-06-20T11:21:46Z", + "qualifier": { + "classid": "UNKNOWN", + "classname": "UNKNOWN", + "schemeid": "dnet:dataCite_date" + } + } + ], + "description": [ + "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." + ], + "dateofacceptance": null, + "publisher": { + "name": "Poznań Supercomputing and Networking Center" + }, + "embargoenddate": null, + "source": [], + "fulltext": [], + "format": [], + "contributor": [ + "Generation Service" + ], + "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", + "openAccessRoute": null + }, + "instancetype": { + "classid": "other research product", + "classname": "other research product", + "schemeid": "dnet:publication_resource" + }, + "hostedby": { + "key": "10|fairsharing_::1b69ebedb522700034547abc5652ffac", + "value": "ROHub" + }, + "url": null, + "distributionlocation": null, + "collectedfrom": { + "key": "10|fairsharing_::1b69ebedb522700034547abc5652ffac", + "value": "ROHub" + }, + "pid": [ + { + "value": "https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca", + "qualifier": { + "classid": "w3id", + "classname": "w3id.org", + "schemeid": "dnet:pid_types" + } + } + ], + "alternateIdentifier": [], + "dateofacceptance": null, + "processingchargeamount": null, + "processingchargecurrency": null, + "refereed": { + "classid": "UNKNOWN", + "classname": "Unknown", + "schemeid": "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_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/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