diff --git a/dump-schema/pom.xml b/dump-schema/pom.xml new file mode 100644 index 0000000..b2a62c8 --- /dev/null +++ b/dump-schema/pom.xml @@ -0,0 +1,50 @@ + + + + dhp-graph-dump + eu.dnetlib.dhp + 1.2.5-SNAPSHOT + + 4.0.0 + + dump-schema + + + 8 + 8 + + + + + + com.github.victools + jsonschema-generator + ${jsonschemagenerator.version} + + + + com.fasterxml.jackson.core + jackson-databind + ${dhp.jackson.version} + + + + org.junit.jupiter + junit-jupiter + ${junit-jupiter.version} + test + + + com.github.imifou + jsonschema-module-addon + ${dhp.jsonschema.module.addon.version} + + + org.apache.commons + commons-lang3 + ${dhp.commons.lang.version} + + + \ No newline at end of file diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/ExecCreateSchemas.java b/dump-schema/src/main/java/eu/dnetlib/dhp/ExecCreateSchemas.java new file mode 100644 index 0000000..4adce65 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/ExecCreateSchemas.java @@ -0,0 +1,76 @@ + +package eu.dnetlib.dhp; + +import java.io.*; +import java.lang.reflect.Type; +import java.nio.file.Files; +import java.nio.file.Paths; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.github.imifou.jsonschema.module.addon.AddonModule; +import com.github.victools.jsonschema.generator.*; + +import eu.dnetlib.dhp.eosc.model.EoscResult; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.graph.*; + +public class ExecCreateSchemas { + final static String DIRECTORY = "/eu/dnetlib/dhp/schema/dump/jsonschemas/"; + SchemaGenerator generator; + + private void init() { + + AddonModule module = new AddonModule(); + SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder( + new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT), + SchemaVersion.DRAFT_7, + OptionPreset.PLAIN_JSON) + .with(module) + .with(Option.SCHEMA_VERSION_INDICATOR) + .without(Option.NONPUBLIC_NONSTATIC_FIELDS_WITHOUT_GETTERS); + SchemaGeneratorConfig config = configBuilder.build(); + generator = new SchemaGenerator(config); + } + + private void generate(Type targetType, String directory, String filename) throws IOException { + JsonNode jsonSchema = generator.generateSchema(targetType); + + String dir = Paths + .get(Paths.get(getClass().getResource("/").getPath()).toAbsolutePath() + directory) + .toString(); + + if (!Files.exists(Paths.get(dir))) { + Files.createDirectories(Paths.get(dir)); + } + + if (!Files.exists(Paths.get(dir + "/" + filename))) { + Files.createFile(Paths.get(dir + "/" + filename)); + } + + File f = new File(dir + "/" + filename); + + try (PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(f)))) { + writer.println(new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(jsonSchema)); + } + + } + + public static void main(String[] args) throws IOException { + + ExecCreateSchemas ecs = new ExecCreateSchemas(); + ecs.init(); + ecs.generate(GraphResult.class, DIRECTORY, "result_schema.json"); + ecs.generate(ResearchCommunity.class, DIRECTORY, "community_infrastructure_schema.json"); + ecs.generate(Datasource.class, DIRECTORY, "datasource_schema.json"); + ecs.generate(Project.class, DIRECTORY, "project_schema.json"); + ecs.generate(Relation.class, DIRECTORY, "relation_schema.json"); + ecs.generate(Organization.class, DIRECTORY, "organization_schema.json"); + + ecs.generate(CommunityResult.class, DIRECTORY, "community_result_schema.json"); + + ecs.generate(EoscResult.class, DIRECTORY, "eosc_result_schema.json"); + + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/eosc/model/EoscInteroperabilityFramework.java b/dump-schema/src/main/java/eu/dnetlib/dhp/eosc/model/EoscInteroperabilityFramework.java new file mode 100644 index 0000000..75d2106 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/eosc/model/EoscInteroperabilityFramework.java @@ -0,0 +1,58 @@ + +package eu.dnetlib.dhp.eosc.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * @author miriam.baglioni + * @Date 29/07/22 + */ +public class EoscInteroperabilityFramework implements Serializable { + @JsonSchema(description = "EOSC-IF label") + private String label; + + @JsonSchema( + description = "EOSC-IF local code. Later on it could be populated with a PID (e.g. DOI), but for the time being we stick to a more loose definition.") + private String code; + + @JsonSchema(description = "EOSC-IF url to the guidelines") + private String url; + + @JsonSchema(description = "EOSC-IF semantic relation (e.g. compliesWith)") + private String semanticRelation; + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getSemanticRelation() { + return semanticRelation; + } + + public void setSemanticRelation(String semanticRelation) { + this.semanticRelation = semanticRelation; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/eosc/model/EoscResult.java b/dump-schema/src/main/java/eu/dnetlib/dhp/eosc/model/EoscResult.java new file mode 100644 index 0000000..2cec568 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/eosc/model/EoscResult.java @@ -0,0 +1,23 @@ + +package eu.dnetlib.dhp.eosc.model; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +import eu.dnetlib.dhp.oa.model.graph.GraphResult; + +/** + * @author miriam.baglioni + * @Date 29/07/22 + */ +public class EoscResult extends GraphResult { + @JsonSchema(description = "Describes a reference to the EOSC Interoperability Framework (IF) Guidelines") + private EoscInteroperabilityFramework eoscIF; + + public EoscInteroperabilityFramework getEoscIF() { + return eoscIF; + } + + public void setEoscIF(EoscInteroperabilityFramework eoscIF) { + eoscIF = eoscIF; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/APC.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/APC.java new file mode 100644 index 0000000..96c7b62 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/APC.java @@ -0,0 +1,29 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +/** + * Used to refer to the Article Processing Charge information. It contains two parameters: - + * currency of type String to store the currency of the APC - amount of type String to stores the charged amount + */ +public class APC implements Serializable { + private String currency; + private String amount; + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AccessRight.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AccessRight.java new file mode 100644 index 0000000..16d0088 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AccessRight.java @@ -0,0 +1,27 @@ + +package eu.dnetlib.dhp.oa.model; + +/** + * AccessRight. Used to represent the result access rights. It extends the eu.dnet.lib.dhp.schema.dump.oaf.BestAccessRight + * element with value for the openaccess route + */ +public class AccessRight extends BestAccessRight { + + private OpenAccessRoute openAccessRoute; + + public static AccessRight newInstance(String code, String label, String scheme) { + AccessRight ar = new AccessRight(); + ar.setCode(code); + ar.setLabel(label); + ar.setScheme(scheme); + return ar; + } + + public OpenAccessRoute getOpenAccessRoute() { + return openAccessRoute; + } + + public void setOpenAccessRoute(OpenAccessRoute openAccessRoute) { + this.openAccessRoute = openAccessRoute; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AlternateIdentifier.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AlternateIdentifier.java new file mode 100644 index 0000000..db7313d --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AlternateIdentifier.java @@ -0,0 +1,44 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public class AlternateIdentifier implements Serializable { + @JsonSchema( + description = "The scheme of the identifier. It can be a persistent identifier (i.e. doi). If it is present in the alternate identifiers " + + + "it means it has not been forged by an authority for that pid. For example we collect metadata from an institutional repository that provides " + + + "as identifier for the result also the doi") + private String scheme; + + @JsonSchema(description = "The value expressed in the scheme") + private String value; + + public String getScheme() { + return scheme; + } + + public void setScheme(String scheme) { + this.scheme = scheme; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static AlternateIdentifier newInstance(String scheme, String value) { + AlternateIdentifier cf = new AlternateIdentifier(); + + cf.setScheme(scheme); + cf.setValue(value); + + return cf; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Author.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Author.java new file mode 100644 index 0000000..ed2babb --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Author.java @@ -0,0 +1,75 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * Used to represent the generic author of the result. It has six parameters: - name of type String to store the given + * name of the author. The value for this parameter corresponds to eu.dnetlib.dhp.schema.oaf.Author name - surname of + * type String to store the family name of the author. The value for this parameter corresponds to + * eu.dnetlib.dhp.schema.oaf.Author surname - fullname of type String to store the fullname of the author. The value for + * this parameter corresponds to eu.dnetlib.dhp.schema.oaf.Author fullname - rank of type Integer to store the rank on + * the author in the result's authors list. The value for this parameter corresponds to eu.dnetlib.dhp.schema.oaf.Author + * rank - pid of type eu.dnetlib.dhp.schema.dump.oaf.Pid to store the persistent identifier for the author. For the + * moment only ORCID identifiers will be dumped. - The id element is instantiated by using the following values in the + * eu.dnetlib.dhp.schema.oaf.Result pid: * Qualifier.classid for scheme * value for value - The provenance element is + * instantiated only if the dataInfo is set for the pid in the result to be dumped. The provenance element is + * instantiated by using the following values in the eu.dnetlib.dhp.schema.oaf.Result pid: * + * dataInfo.provenanceaction.classname for provenance * dataInfo.trust for trust + */ +public class Author implements Serializable { + + private String fullname; + + private String name; + + private String surname; + + private Integer rank; + + @JsonSchema(description = "The author's persistent identifiers") + private AuthorPid pid; + + public String getFullname() { + return fullname; + } + + public void setFullname(String fullname) { + this.fullname = fullname; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public Integer getRank() { + return rank; + } + + public void setRank(Integer rank) { + this.rank = rank; + } + + public AuthorPid getPid() { + return pid; + } + + public void setPid(AuthorPid pid) { + this.pid = pid; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AuthorPid.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AuthorPid.java new file mode 100644 index 0000000..f66e586 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AuthorPid.java @@ -0,0 +1,52 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To represent the generic persistent identifier. It has two parameters: + * - id of type + * eu.dnetlib.dhp.schema.dump.oaf.AuthorPidSchemeValue to store the scheme and value of the Persistent Identifier. + * - provenance of type eu.dnetlib.dhp.schema.dump.oaf.Provenance to store the provenance and trust of the information + */ +public class AuthorPid implements Serializable { + + private AuthorPidSchemeValue id; + + @JsonSchema(description = "The reason why the pid was associated to the author") + private Provenance provenance; + + public AuthorPidSchemeValue getId() { + return id; + } + + public void setId(AuthorPidSchemeValue pid) { + this.id = pid; + } + + public Provenance getProvenance() { + return provenance; + } + + public void setProvenance(Provenance provenance) { + this.provenance = provenance; + } + + public static AuthorPid newInstance(AuthorPidSchemeValue pid, Provenance provenance) { + AuthorPid p = new AuthorPid(); + p.id = pid; + p.provenance = provenance; + + return p; + } + + public static AuthorPid newInstance(AuthorPidSchemeValue pid) { + AuthorPid p = new AuthorPid(); + p.id = pid; + + return p; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AuthorPidSchemeValue.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AuthorPidSchemeValue.java new file mode 100644 index 0000000..09eaba5 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/AuthorPidSchemeValue.java @@ -0,0 +1,40 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public class AuthorPidSchemeValue implements Serializable { + + @JsonSchema(description = "The author's pid scheme. OpenAIRE currently supports 'ORCID'") + private String scheme; + + @JsonSchema(description = "The author's pid value in that scheme (i.e. 0000-1111-2222-3333)") + private String value; + + public String getScheme() { + return scheme; + } + + public void setScheme(String scheme) { + this.scheme = scheme; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static AuthorPidSchemeValue newInstance(String scheme, String value) { + AuthorPidSchemeValue cf = new AuthorPidSchemeValue(); + + cf.setScheme(scheme); + cf.setValue(value); + + return cf; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/BestAccessRight.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/BestAccessRight.java new file mode 100644 index 0000000..abde526 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/BestAccessRight.java @@ -0,0 +1,60 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * BestAccessRight. Used to represent the result best access rights. Values for this element are found against the + * COAR access right scheme. The classid of the element accessright in eu.dnetlib.dhp.schema.oaf.Result is used to get + * the COAR corresponding code whose value will be used to set the code parameter. The COAR label corresponding to the + * COAR code will be used to set the label parameter. The scheme value will always be the one referring to the COAR + * access right scheme + */ + +public class BestAccessRight implements Serializable { + + @JsonSchema( + description = "COAR access mode code: http://vocabularies.coar-repositories.org/documentation/access_rights/") + private String code; // the classid in the Qualifier + + @JsonSchema(description = "Label for the access mode") + private String label; // the classname in the Qualifier + + @JsonSchema( + description = "Scheme of reference for access right code. Always set to COAR access rights vocabulary: http://vocabularies.coar-repositories.org/documentation/access_rights/") + private String scheme; + + public String getScheme() { + return scheme; + } + + public void setScheme(String scheme) { + this.scheme = scheme; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public static BestAccessRight newInstance(String code, String label, String scheme) { + BestAccessRight ar = new BestAccessRight(); + ar.code = code; + ar.label = label; + ar.scheme = scheme; + return ar; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Container.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Container.java new file mode 100644 index 0000000..4fdeff4 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Container.java @@ -0,0 +1,143 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To store information about the conference or journal where the result has been presented or published. It contains + * eleven parameters: - name of type String to store the name of the journal or conference. It corresponds to the + * parameter name of eu.dnetlib.dhp.schema.oaf.Journal - issnPrinted ot type String to store the journal printed issn. + * It corresponds to the parameter issnPrinted of eu.dnetlib.dhp.schema.oaf.Journal - issnOnline of type String to store + * the journal online issn. It corresponds to the parameter issnOnline of eu.dnetlib.dhp.schema.oaf.Journal - + * issnLinking of type String to store the journal linking issn. It corresponds to the parameter issnLinking of + * eu.dnetlib.dhp.schema.oaf.Journal - ep of type String to store the end page. It corresponds to the parameter ep of + * eu.dnetlib.dhp.schema.oaf.Journal - iss of type String to store the journal issue. It corresponds to the parameter + * iss of eu.dnetlib.dhp.schema.oaf.Journal - sp of type String to store the start page. It corresponds to the parameter + * sp of eu.dnetlib.dhp.schema.oaf.Journal - vol of type String to store the Volume. It corresponds to the parameter vol + * of eu.dnetlib.dhp.schema.oaf.Journal - edition of type String to store the edition of the journal or conference + * proceeding. It corresponds to the parameter edition of eu.dnetlib.dhp.schema.oaf.Journal - conferenceplace of type + * String to store the place of the conference. It corresponds to the parameter conferenceplace of + * eu.dnetlib.dhp.schema.oaf.Journal - conferencedate of type String to store the date of the conference. It corresponds + * to the parameter conferencedate of eu.dnetlib.dhp.schema.oaf.Journal + */ +public class Container implements Serializable { + + @JsonSchema(description = "Name of the journal or conference") + private String name; + + private String issnPrinted; + + private String issnOnline; + + private String issnLinking; + + @JsonSchema(description = "End page") + private String ep; + + @JsonSchema(description = "Journal issue number") + private String iss; + + @JsonSchema(description = "Start page") + private String sp; + + @JsonSchema(description = "Volume") + private String vol; + + @JsonSchema(description = "Edition of the journal or conference proceeding") + private String edition; + + private String conferenceplace; + + private String conferencedate; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIssnPrinted() { + return issnPrinted; + } + + public void setIssnPrinted(String issnPrinted) { + this.issnPrinted = issnPrinted; + } + + public String getIssnOnline() { + return issnOnline; + } + + public void setIssnOnline(String issnOnline) { + this.issnOnline = issnOnline; + } + + public String getIssnLinking() { + return issnLinking; + } + + public void setIssnLinking(String issnLinking) { + this.issnLinking = issnLinking; + } + + public String getEp() { + return ep; + } + + public void setEp(String ep) { + this.ep = ep; + } + + public String getIss() { + return iss; + } + + public void setIss(String iss) { + this.iss = iss; + } + + public String getSp() { + return sp; + } + + public void setSp(String sp) { + this.sp = sp; + } + + public String getVol() { + return vol; + } + + public void setVol(String vol) { + this.vol = vol; + } + + public String getEdition() { + return edition; + } + + public void setEdition(String edition) { + this.edition = edition; + } + + public String getConferenceplace() { + return conferenceplace; + } + + public void setConferenceplace(String conferenceplace) { + this.conferenceplace = conferenceplace; + } + + public String getConferencedate() { + return conferencedate; + } + + public void setConferencedate(String conferencedate) { + this.conferencedate = conferencedate; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Country.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Country.java new file mode 100644 index 0000000..7a69de0 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Country.java @@ -0,0 +1,47 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * Represents the country associated to the generic entity. It extends eu.dnetlib.dhp.schema.dump.oaf.Qualifier with a + * provenance parameter of type eu.dnetlib.dhp.schema.dumo.oaf.Provenance. The country in not mapped if its value in the + * result reprensented in the internal format is Unknown. The value for this element correspond to: - code corresponds + * to the classid of eu.dnetlib.dhp.schema.oaf.Country - label corresponds to the classname of + * eu.dnetlib.dhp.schema.oaf.Country - provenance set only if the dataInfo associated to the Country of the result to be + * dumped is not null. In this case : - provenance corresponds to dataInfo.provenanceaction.classid (to be modified with + * datainfo.provenanceaction.classname) - trust corresponds to dataInfo.trust + */ +public class Country implements Serializable { + @JsonSchema(description = "ISO 3166-1 alpha-2 country code (i.e. IT)") + private String code; // the classid in the Qualifier + + @JsonSchema(description = "The label for that code (i.e. Italy)") + private String label; // the classname in the Qualifier + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public static Country newInstance(String code, String label) { + Country c = new Country(); + c.setCode(code); + c.setLabel(label); + return c; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Funder.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Funder.java new file mode 100644 index 0000000..49376fc --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Funder.java @@ -0,0 +1,43 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public class Funder implements Serializable { + + @JsonSchema(description = "The short name of the funder (EC)") + private String shortName; + + @JsonSchema(description = "The name of the funder (European Commission)") + private String name; + + @JsonSchema( + description = "Geographical jurisdiction (e.g. for European Commission is EU, for Croatian Science Foundation is HR)") + private String jurisdiction; + + public String getJurisdiction() { + return jurisdiction; + } + + public void setJurisdiction(String jurisdiction) { + this.jurisdiction = jurisdiction; + } + + public String getShortName() { + return shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/GeoLocation.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/GeoLocation.java new file mode 100644 index 0000000..d8cbb39 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/GeoLocation.java @@ -0,0 +1,53 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import org.apache.commons.lang3.StringUtils; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** + * Represents the geolocation information. It has three parameters: - point of type String to store the point + * information. It corresponds to eu.dnetlib.dhp.schema.oaf.GeoLocation point - box ot type String to store the box + * information. It corresponds to eu.dnetlib.dhp.schema.oaf.GeoLocation box - place of type String to store the place + * information. It corresponds to eu.dnetlib.dhp.schema.oaf.GeoLocation place + */ +public class GeoLocation implements Serializable { + + private String point; + + private String box; + + private String place; + + public String getPoint() { + return point; + } + + public void setPoint(String point) { + this.point = point; + } + + public String getBox() { + return box; + } + + public void setBox(String box) { + this.box = box; + } + + public String getPlace() { + return place; + } + + public void setPlace(String place) { + this.place = place; + } + + @JsonIgnore + public boolean isBlank() { + return StringUtils.isBlank(point) && StringUtils.isBlank(box) && StringUtils.isBlank(place); + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Instance.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Instance.java new file mode 100644 index 0000000..64e32af --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Instance.java @@ -0,0 +1,141 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; +import java.util.List; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * Represents the manifestations (i.e. different versions) of the result. For example: the pre-print and the published + * versions are two manifestations of the same research result. It has the following parameters: - license of type + * String to store the license applied to the instance. It corresponds to the value of the licence in the instance to be + * dumped - accessright of type eu.dnetlib.dhp.schema.dump.oaf.AccessRight to store the accessright of the instance. - + * type of type String to store the type of the instance as defined in the corresponding dnet vocabulary + * (dnet:pubication_resource). It corresponds to the instancetype.classname of the instance to be mapped - url of type + * List list of locations where the instance is accessible. It corresponds to url of the instance to be dumped - + * publicationdate of type String to store the publication date of the instance ;// dateofacceptance; - refereed of type + * String to store information abour the review status of the instance. Possible values are 'Unknown', + * 'nonPeerReviewed', 'peerReviewed'. It corresponds to refereed.classname of the instance to be dumped + * - articleprocessingcharge of type APC to store the article processing charges possibly associated to the instance + * -pid of type List that is the list of pids associated to the result coming from authoritative sources for that pid + * -alternateIdentifier of type List that is the list of pids associated to the result coming from NON authoritative + * sources for that pid + * -measure list to represent the measure computed for this instance (for example the Bip!Finder ones). It corresponds to measures in the model + */ +public class Instance implements Serializable { + + @JsonSchema(description = "Measures computed for this instance, for example Bip!Finder ones") + private List measures; + + private List pid; + + @JsonSchema( + description = "All the identifiers other than pids forged by an authorithy for the pid type (i.e. Crossref for DOIs") + private List alternateIdentifier; + + private String license; + + @JsonSchema(description = "The accessRights for this materialization of the result") + private AccessRight accessright; + + @JsonSchema( + description = "The specific sub-type of this instance (see https://api.openaire.eu/vocabularies/dnet:result_typologies following the links)") + private String type; + + @JsonSchema( + description = "URLs to the instance. They may link to the actual full-text or to the landing page at the hosting source. ") + private List url; + + @JsonSchema( + description = "The money spent to make this book or article available in Open Access. Source for this information is the OpenAPC initiative.") + private APC articleprocessingcharge; + + @JsonSchema(description = "Date of the research product") + private String publicationdate;// dateofacceptance; + + @JsonSchema( + description = "If this instance has been peer-reviewed or not. Allowed values are peerReviewed, " + + "nonPeerReviewed, UNKNOWN (as defined in https://api.openaire.eu/vocabularies/dnet:review_levels)") + private String refereed; // peer-review status + + public String getLicense() { + return license; + } + + public void setLicense(String license) { + this.license = license; + } + + public AccessRight getAccessright() { + return accessright; + } + + public void setAccessright(AccessRight accessright) { + this.accessright = accessright; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public List getUrl() { + return url; + } + + public void setUrl(List url) { + this.url = url; + } + + public String getPublicationdate() { + return publicationdate; + } + + public void setPublicationdate(String publicationdate) { + this.publicationdate = publicationdate; + } + + public String getRefereed() { + return refereed; + } + + public void setRefereed(String refereed) { + this.refereed = refereed; + } + + public APC getArticleprocessingcharge() { + return articleprocessingcharge; + } + + public void setArticleprocessingcharge(APC articleprocessingcharge) { + this.articleprocessingcharge = articleprocessingcharge; + } + + public List getPid() { + return pid; + } + + public void setPid(List pid) { + this.pid = pid; + } + + public List getAlternateIdentifier() { + return alternateIdentifier; + } + + public void setAlternateIdentifier(List alternateIdentifier) { + this.alternateIdentifier = alternateIdentifier; + } + + public List getMeasures() { + return measures; + } + + public void setMeasures(List measures) { + this.measures = measures; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Language.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Language.java new file mode 100644 index 0000000..82a8794 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Language.java @@ -0,0 +1,38 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public class Language implements Serializable { + + @JsonSchema(description = "alpha-3/ISO 639-2 code of the language") + private String code; // the classid in the Qualifier + + @JsonSchema(description = "Language label in English") + private String label; // the classname in the Qualifier + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public static Language newInstance(String code, String value) { + Language qualifier = new Language(); + qualifier.setCode(code); + qualifier.setLabel(value); + return qualifier; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Measure.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Measure.java new file mode 100644 index 0000000..edc6949 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Measure.java @@ -0,0 +1,46 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import org.apache.commons.lang3.StringUtils; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public class Measure implements Serializable { + @JsonSchema(description = "The measure (i.e. popularity)") + private String key; + + @JsonSchema(description = "The value for that measure") + private String value; + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static Measure newInstance(String key, String value) { + Measure inst = new Measure(); + inst.key = key; + inst.value = value; + return inst; + } + + @JsonIgnore + public boolean isBlank() { + return StringUtils.isBlank(key) && StringUtils.isBlank(value); + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/OpenAccessRoute.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/OpenAccessRoute.java new file mode 100644 index 0000000..09a0236 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/OpenAccessRoute.java @@ -0,0 +1,13 @@ + +package eu.dnetlib.dhp.oa.model; + +/** + * This Enum models the OpenAccess status, currently including only the values from Unpaywall + * + * https://support.unpaywall.org/support/solutions/articles/44001777288-what-do-the-types-of-oa-status-green-gold-hybrid-and-bronze-mean- + */ +public enum OpenAccessRoute { + + gold, green, hybrid, bronze + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Project.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Project.java new file mode 100644 index 0000000..9b08427 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Project.java @@ -0,0 +1,57 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * This class to store the common information about the project that will be dumped for community and for the whole + * graph - private String id to store the id of the project (OpenAIRE id) - private String code to store the grant + * agreement of the project - private String acronym to store the acronym of the project - private String title to store + * the tile of the project + */ +public class Project implements Serializable { + @JsonSchema(description = "The OpenAIRE id for the project") + protected String id;// OpenAIRE id + + @JsonSchema(description = "The grant agreement number") + protected String code; + + @JsonSchema(description = "The acronym of the project") + protected String acronym; + + protected String title; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getAcronym() { + return acronym; + } + + public void setAcronym(String acronym) { + this.acronym = acronym; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Provenance.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Provenance.java new file mode 100644 index 0000000..1be96dc --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Provenance.java @@ -0,0 +1,41 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +/** + * Indicates the process that produced (or provided) the information, and the trust associated to the information. It + * has two parameters: - provenance of type String to store the provenance of the information, - trust of type String to + * store the trust associated to the information + */ +public class Provenance implements Serializable { + private String provenance; + private String trust; + + public String getProvenance() { + return provenance; + } + + public void setProvenance(String provenance) { + this.provenance = provenance; + } + + public String getTrust() { + return trust; + } + + public void setTrust(String trust) { + this.trust = trust; + } + + public static Provenance newInstance(String provenance, String trust) { + Provenance p = new Provenance(); + p.provenance = provenance; + p.trust = trust; + return p; + } + + public String toString() { + return provenance + trust; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Result.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Result.java new file mode 100644 index 0000000..3d580fd --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Result.java @@ -0,0 +1,419 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; +import java.util.List; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To represent the dumped result. It will be extended in the dump for Research Communities - Research + * Initiative/Infrastructures. It has the following parameters: + * - author of type + * List to describe the authors of a result. For each author in the result + * represented in the internal model one author in the esternal model is produced. + * - type of type String to represent + * the category of the result. Possible values are publication, dataset, software, other. It corresponds to + * resulttype.classname of the dumped result + * - language of type eu.dnetlib.dhp.schema.dump.oaf.Language to store + * information about the language of the result. It is dumped as - code corresponds to language.classid - value + * corresponds to language.classname + * - country of type List to store the country + * list to which the result is associated. For each country in the result respresented in the internal model one country + * in the external model is produces - subjects of type List to store the subjects for + * the result. For each subject in the result represented in the internal model one subject in the external model is + * produced - maintitle of type String to store the main title of the result. It corresponds to the value of the first + * title in the resul to be dumped having classid equals to "main title" - subtitle of type String to store the subtitle + * of the result. It corresponds to the value of the first title in the resul to be dumped having classid equals to + * "subtitle" - description of type List to store the description of the result. It corresponds to the list of + * description.value in the result represented in the internal model - publicationdate of type String to store the + * pubblication date. It corresponds to dateofacceptance.value in the result represented in the internal model - + * publisher of type String to store information about the publisher. It corresponds to publisher.value of the result + * represented in the intrenal model - embargoenddate of type String to store the embargo end date. It corresponds to + * embargoenddate.value of the result represented in the internal model - source of type List See definition of + * Dublin Core field dc:source. It corresponds to the list of source.value in the result represented in the internal + * model - format of type List It corresponds to the list of format.value in the result represented in the + * internal model - contributor of type List to represent contributors for this result. It corresponds to the + * list of contributor.value in the result represented in the internal model - coverage of type String. It corresponds + * to the list of coverage.value in the result represented in the internal model - bestaccessright of type + * eu.dnetlib.dhp.schema.dump.oaf.AccessRight to store informatin about the openest access right associated to the + * manifestations of this research results. It corresponds to the same parameter in the result represented in the + * internal model - container of type eu.dnetlib.dhp.schema/dump.oaf.Container (only for result of type publication). It + * corresponds to the parameter journal of the result represented in the internal model - documentationUrl of type + * List (only for results of type software) to store the URLs to the software documentation. It corresponds to + * the list of documentationUrl.value of the result represented in the internal model - codeRepositoryUrl of type String + * (only for results of type software) to store the URL to the repository with the source code. It corresponds to + * codeRepositoryUrl.value of the result represented in the internal model - programmingLanguage of type String (only + * for results of type software) to store the programming language. It corresponds to programmingLanguaga.classid of the + * result represented in the internal model - contactperson of type List (only for results of type other) to + * store the contact person for this result. It corresponds to the list of contactperson.value of the result represented + * in the internal model - contactgroup of type List (only for results of type other) to store the information + * for the contact group. It corresponds to the list of contactgroup.value of the result represented in the internal + * model - tool of type List (only fro results of type other) to store information about tool useful for the + * interpretation and/or re-used of the research product. It corresponds to the list of tool.value in the result + * represented in the internal modelt - size of type String (only for results of type dataset) to store the size of the + * dataset. It corresponds to size.value in the result represented in the internal model - version of type String (only + * for results of type dataset) to store the version. It corresponds to version.value of the result represented in the + * internal model - geolocation fo type List (only for results of type + * dataset) to store geolocation information. For each geolocation element in the result represented in the internal + * model a GeoLocation in the external model il produced - id of type String to store the OpenAIRE id of the result. It + * corresponds to the id of the result represented in the internal model - originalId of type List to store the + * original ids of the result. It corresponds to the originalId of the result represented in the internal model - pid of + * type List to store the persistent identifiers for the result. For + * each pid in the results represented in the internal model one pid in the external model is produced. The value + * correspondence is: - scheme corresponds to pid.qualifier.classid of the result represented in the internal model - + * value corresponds to the pid.value of the result represented in the internal model - dateofcollection of type String + * to store information about the time OpenAIRE collected the record. It corresponds to dateofcollection of the result + * represented in the internal model - lasteupdatetimestamp of type String to store the timestamp of the last update of + * the record. It corresponds to lastupdatetimestamp of the resord represented in the internal model + * + */ +public class Result implements Serializable { + + private List author; + + // resulttype allows subclassing results into publications | datasets | software + @JsonSchema( + description = "Type of the result: one of 'publication', 'dataset', 'software', 'other' (see also https://api.openaire.eu/vocabularies/dnet:result_typologies)") + private String type; // resulttype + + // common fields + private Language language; + + @JsonSchema(description = "The list of countries associated to this result") + private List country; + + @JsonSchema(description = "Keywords associated to the result") + private List subjects; + + @JsonSchema( + description = "A name or title by which a scientific result is known. May be the title of a publication, of a dataset or the name of a piece of software.") + private String maintitle; + + @JsonSchema(description = "Explanatory or alternative name by which a scientific result is known.") + private String subtitle; + + private List description; + + @JsonSchema( + description = "Main date of the research product: typically the publication or issued date. In case of a research result with different versions with different dates, the date of the result is selected as the most frequent well-formatted date. If not available, then the most recent and complete date among those that are well-formatted. For statistics, the year is extracted and the result is counted only among the result of that year. Example: Pre-print date: 2019-02-03, Article date provided by repository: 2020-02, Article date provided by Crossref: 2020, OpenAIRE will set as date 2019-02-03, because it’s the most recent among the complete and well-formed dates. If then the repository updates the metadata and set a complete date (e.g. 2020-02-12), then this will be the new date for the result because it becomes the most recent most complete date. However, if OpenAIRE then collects the pre-print from another repository with date 2019-02-03, then this will be the “winning date” because it becomes the most frequent well-formatted date.") + private String publicationdate; // dateofacceptance; + + @JsonSchema( + description = "The name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource.") + private String publisher; + + @JsonSchema(description = "Date when the embargo ends and this result turns Open Access") + private String embargoenddate; + + @JsonSchema(description = "See definition of Dublin Core field dc:source") + private List source; + + private List format; + + @JsonSchema(description = "Contributors for the result") + private List contributor; + + private List coverage; + + @JsonSchema(description = "The openest of the access rights of this result.") + private BestAccessRight bestaccessright; + + @JsonSchema( + description = "Container has information about the conference or journal where the result has been presented or published") + private Container container;// Journal + + @JsonSchema(description = "Only for results with type 'software': URL to the software documentation") + private List documentationUrl; // software + + @JsonSchema(description = "Only for results with type 'software': the URL to the repository with the source code") + private String codeRepositoryUrl; // software + + @JsonSchema(description = "Only for results with type 'software': the programming language") + private String programmingLanguage; // software + + @JsonSchema( + description = "Only for results with type 'software': Information on the person responsible for providing further information regarding the resource") + private List contactperson; // orp + + @JsonSchema( + description = "Only for results with type 'software': Information on the group responsible for providing further information regarding the resource") + private List contactgroup; // orp + + @JsonSchema( + description = "Only for results with type 'other': tool useful for the interpretation and/or re-used of the research product") + private List tool; // orp + + @JsonSchema(description = "Only for results with type 'dataset': the declared size of the dataset") + private String size; // dataset + + @JsonSchema(description = "Version of the result") + private String version; // dataset + + @JsonSchema(description = "Geolocation information") + private List geolocation; // dataset + + @JsonSchema(description = "The OpenAIRE identifiers for this result") + private String id; + + @JsonSchema(description = "Identifiers of the record at the original sources") + private List originalId; + + @JsonSchema(description = "Persistent identifiers of the result") + private List pid; + + @JsonSchema(description = "When OpenAIRE collected the record the last time") + private String dateofcollection; + + @JsonSchema(description = "Timestamp of last update of the record in OpenAIRE") + private Long lastupdatetimestamp; + + public Long getLastupdatetimestamp() { + return lastupdatetimestamp; + } + + public void setLastupdatetimestamp(Long lastupdatetimestamp) { + this.lastupdatetimestamp = lastupdatetimestamp; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public List getOriginalId() { + return originalId; + } + + public void setOriginalId(List originalId) { + this.originalId = originalId; + } + + public List getPid() { + return pid; + } + + public void setPid(List pid) { + this.pid = pid; + } + + public String getDateofcollection() { + return dateofcollection; + } + + public void setDateofcollection(String dateofcollection) { + this.dateofcollection = dateofcollection; + } + + public List getAuthor() { + return author; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Container getContainer() { + return container; + } + + public void setContainer(Container container) { + this.container = container; + } + + public void setAuthor(List author) { + this.author = author; + } + + public Language getLanguage() { + return language; + } + + public void setLanguage(Language language) { + this.language = language; + } + + public List getCountry() { + return country; + } + + public void setCountry(List country) { + this.country = country; + } + + public List getSubjects() { + return subjects; + } + + public void setSubjects(List subjects) { + this.subjects = subjects; + } + + public String getMaintitle() { + return maintitle; + } + + public void setMaintitle(String maintitle) { + this.maintitle = maintitle; + } + + public String getSubtitle() { + return subtitle; + } + + public void setSubtitle(String subtitle) { + this.subtitle = subtitle; + } + + public List getDescription() { + return description; + } + + public void setDescription(List description) { + this.description = description; + } + + public String getPublicationdate() { + return publicationdate; + } + + public void setPublicationdate(String publicationdate) { + this.publicationdate = publicationdate; + } + + public String getPublisher() { + return publisher; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } + + public String getEmbargoenddate() { + return embargoenddate; + } + + public void setEmbargoenddate(String embargoenddate) { + this.embargoenddate = embargoenddate; + } + + public List getSource() { + return source; + } + + public void setSource(List source) { + this.source = source; + } + + public List getFormat() { + return format; + } + + public void setFormat(List format) { + this.format = format; + } + + public List getContributor() { + return contributor; + } + + public void setContributor(List contributor) { + this.contributor = contributor; + } + + public List getCoverage() { + return coverage; + } + + public void setCoverage(List coverage) { + this.coverage = coverage; + } + + public BestAccessRight getBestaccessright() { + return bestaccessright; + } + + public void setBestaccessright(BestAccessRight bestaccessright) { + this.bestaccessright = bestaccessright; + } + + public List getDocumentationUrl() { + return documentationUrl; + } + + public void setDocumentationUrl(List documentationUrl) { + this.documentationUrl = documentationUrl; + } + + public String getCodeRepositoryUrl() { + return codeRepositoryUrl; + } + + public void setCodeRepositoryUrl(String codeRepositoryUrl) { + this.codeRepositoryUrl = codeRepositoryUrl; + } + + public String getProgrammingLanguage() { + return programmingLanguage; + } + + public void setProgrammingLanguage(String programmingLanguage) { + this.programmingLanguage = programmingLanguage; + } + + public List getContactperson() { + return contactperson; + } + + public void setContactperson(List contactperson) { + this.contactperson = contactperson; + } + + public List getContactgroup() { + return contactgroup; + } + + public void setContactgroup(List contactgroup) { + this.contactgroup = contactgroup; + } + + public List getTool() { + return tool; + } + + public void setTool(List tool) { + this.tool = tool; + } + + public String getSize() { + return size; + } + + public void setSize(String size) { + this.size = size; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public List getGeolocation() { + return geolocation; + } + + public void setGeolocation(List geolocation) { + this.geolocation = geolocation; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/ResultCountry.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/ResultCountry.java new file mode 100644 index 0000000..324d382 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/ResultCountry.java @@ -0,0 +1,41 @@ + +package eu.dnetlib.dhp.oa.model; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * Represents the country associated to the generic result. It extends eu.dnetlib.dhp.schema.dump.oaf.Country with a + * provenance parameter of type eu.dnetlib.dhp.schema.dumo.oaf.Provenance. The country is not mapped if its value in the + * result reprensented in the internal format is Unknown. The value for this element correspond to: + * - code corresponds to the classid of eu.dnetlib.dhp.schema.oaf.Country + * - label corresponds to the classname of eu.dnetlib.dhp.schema.oaf.Country + * - provenance set only if the dataInfo associated to the Country of the result to be dumped is not null. In this case: + * - provenance corresponds to dataInfo.provenanceaction.classid (to be modified with datainfo.provenanceaction.classname) + * - trust corresponds to dataInfo.trust + */ + +public class ResultCountry extends Country { + + @JsonSchema(description = "Why this result is associated to the country.") + private Provenance provenance; + + public Provenance getProvenance() { + return provenance; + } + + public void setProvenance(Provenance provenance) { + this.provenance = provenance; + } + + public static ResultCountry newInstance(String code, String label, Provenance provenance) { + ResultCountry c = new ResultCountry(); + c.setProvenance(provenance); + c.setCode(code); + c.setLabel(label); + return c; + } + + public static ResultCountry newInstance(String code, String label, String provenance, String trust) { + return newInstance(code, label, Provenance.newInstance(provenance, trust)); + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/ResultPid.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/ResultPid.java new file mode 100644 index 0000000..991412f --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/ResultPid.java @@ -0,0 +1,44 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public class ResultPid implements Serializable { + @JsonSchema( + description = "The scheme of the persistent identifier for the result (i.e. doi). " + + "If the pid is here it means the information for the pid has been collected from an authority for " + + "that pid type (i.e. Crossref/Datacite for doi). The set of authoritative pid is: doi when collected from Crossref or Datacite " + + + "pmid when collected from EuroPubmed, arxiv when collected from arXiv, handle from the repositories") + private String scheme; + + @JsonSchema(description = "The value expressed in the scheme (i.e. 10.1000/182)") + private String value; + + public String getScheme() { + return scheme; + } + + public void setScheme(String scheme) { + this.scheme = scheme; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static ResultPid newInstance(String scheme, String value) { + ResultPid cf = new ResultPid(); + + cf.setScheme(scheme); + cf.setValue(value); + + return cf; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Subject.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Subject.java new file mode 100644 index 0000000..b7e1872 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Subject.java @@ -0,0 +1,40 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To represent keywords associated to the result. It has two parameters: + * - subject of type eu.dnetlib.dhp.schema.dump.oaf.SubjectSchemeValue to describe the subject. It mapped as: + * - schema it corresponds to qualifier.classid of the dumped subject + * - value it corresponds to the subject value + * - provenance of type eu.dnetlib.dhp.schema.dump.oaf.Provenance to represent the provenance of the subject. It is dumped only if dataInfo + * is not null. In this case: + * - provenance corresponds to dataInfo.provenanceaction.classname + * - trust corresponds to dataInfo.trust + */ +public class Subject implements Serializable { + private SubjectSchemeValue subject; + + @JsonSchema(description = "Why this subject is associated to the result") + private Provenance provenance; + + public SubjectSchemeValue getSubject() { + return subject; + } + + public void setSubject(SubjectSchemeValue subject) { + this.subject = subject; + } + + public Provenance getProvenance() { + return provenance; + } + + public void setProvenance(Provenance provenance) { + this.provenance = provenance; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/SubjectSchemeValue.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/SubjectSchemeValue.java new file mode 100644 index 0000000..a7e665d --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/SubjectSchemeValue.java @@ -0,0 +1,42 @@ + +package eu.dnetlib.dhp.oa.model; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public class SubjectSchemeValue implements Serializable { + @JsonSchema( + description = "OpenAIRE subject classification scheme (https://api.openaire.eu/vocabularies/dnet:subject_classification_typologies).") + private String scheme; + + @JsonSchema( + description = "The value for the subject in the selected scheme. When the scheme is 'keyword', it means that the subject is free-text (i.e. not a term from a controlled vocabulary).") + private String value; + + public String getScheme() { + return scheme; + } + + public void setScheme(String scheme) { + this.scheme = scheme; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static SubjectSchemeValue newInstance(String scheme, String value) { + SubjectSchemeValue cf = new SubjectSchemeValue(); + + cf.setScheme(scheme); + cf.setValue(value); + + return cf; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/CfHbKeyValue.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/CfHbKeyValue.java new file mode 100644 index 0000000..46ce417 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/CfHbKeyValue.java @@ -0,0 +1,47 @@ + +package eu.dnetlib.dhp.oa.model.community; + +import java.io.Serializable; + +import org.apache.commons.lang3.StringUtils; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public class CfHbKeyValue implements Serializable { + + @JsonSchema(description = "the OpenAIRE identifier of the data source") + private String key; + + @JsonSchema(description = "the name of the data source") + private String value; + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static CfHbKeyValue newInstance(String key, String value) { + CfHbKeyValue inst = new CfHbKeyValue(); + inst.key = key; + inst.value = value; + return inst; + } + + @JsonIgnore + public boolean isBlank() { + return StringUtils.isBlank(key) && StringUtils.isBlank(value); + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/CommunityInstance.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/CommunityInstance.java new file mode 100644 index 0000000..7e3a7cf --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/CommunityInstance.java @@ -0,0 +1,40 @@ + +package eu.dnetlib.dhp.oa.model.community; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +import eu.dnetlib.dhp.oa.model.Instance; + +/** + * It extends eu.dnetlib.dhp.dump.oaf.Instance with values related to the community dump. In the Result dump this + * information is not present because it is dumped as a set of relations between the result and the datasource. - + * hostedby of type eu.dnetlib.dhp.schema.dump.oaf.KeyValue to store the information about the source from which the + * instance can be viewed or downloaded. It is mapped against the hostedby parameter of the instance to be dumped and - + * key corresponds to hostedby.key - value corresponds to hostedby.value - collectedfrom of type + * eu.dnetlib.dhp.schema.dump.oaf.KeyValue to store the information about the source from which the instance has been + * collected. It is mapped against the collectedfrom parameter of the instance to be dumped and - key corresponds to + * collectedfrom.key - value corresponds to collectedfrom.value + */ +public class CommunityInstance extends Instance { + @JsonSchema(description = "Information about the source from which the instance can be viewed or downloaded.") + private CfHbKeyValue hostedby; + + @JsonSchema(description = "Information about the source from which the record has been collected") + private CfHbKeyValue collectedfrom; + + public CfHbKeyValue getHostedby() { + return hostedby; + } + + public void setHostedby(CfHbKeyValue hostedby) { + this.hostedby = hostedby; + } + + public CfHbKeyValue getCollectedfrom() { + return collectedfrom; + } + + public void setCollectedfrom(CfHbKeyValue collectedfrom) { + this.collectedfrom = collectedfrom; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/CommunityResult.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/CommunityResult.java new file mode 100644 index 0000000..88c2cc5 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/CommunityResult.java @@ -0,0 +1,70 @@ + +package eu.dnetlib.dhp.oa.model.community; + +import java.util.List; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +import eu.dnetlib.dhp.oa.model.Result; + +/** + * extends eu.dnetlib.dhp.schema.dump.oaf.Result with the following parameters: - projects of type + * List to store the list of projects related to the result. The + * information is added after the result is mapped to the external model - context of type + * List to store information about the RC RI related to the result. + * For each context in the result represented in the internal model one context in the external model is produced - + * collectedfrom of type List to store information about the sources from which + * the record has been collected. For each collectedfrom in the result represented in the internal model one + * collectedfrom in the external model is produced - instance of type + * List to store all the instances associated to the result. + * It corresponds to the same parameter in the result represented in the internal model + */ +public class CommunityResult extends Result { + + @JsonSchema(description = "List of projects (i.e. grants) that (co-)funded the production ofn the research results") + private List projects; + + @JsonSchema( + description = "Reference to a relevant research infrastructure, initiative or community (RI/RC) among those collaborating with OpenAIRE. Please see https://connect.openaire.eu") + private List context; + + @JsonSchema(description = "Information about the sources from which the record has been collected") + protected List collectedfrom; + + @JsonSchema( + description = "Each instance is one specific materialisation or version of the result. For example, you can have one result with three instance: one is the pre-print, one is the post-print, one is te published version") + private List instance; + + public List getInstance() { + return instance; + } + + public void setInstance(List instance) { + this.instance = instance; + } + + public List getCollectedfrom() { + return collectedfrom; + } + + public void setCollectedfrom(List collectedfrom) { + this.collectedfrom = collectedfrom; + } + + public List getProjects() { + return projects; + } + + public void setProjects(List projects) { + this.projects = projects; + } + + public List getContext() { + return context; + } + + public void setContext(List context) { + this.context = context; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Context.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Context.java new file mode 100644 index 0000000..90dd431 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Context.java @@ -0,0 +1,73 @@ + +package eu.dnetlib.dhp.oa.model.community; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +import eu.dnetlib.dhp.oa.model.Provenance; + +/** + * Reference to a relevant research infrastructure, initiative or community (RI/RC) among those collaborating with + * OpenAIRE. It extend eu.dnetlib.dhp.shema.dump.oaf.Qualifier with a parameter provenance of type + * List to store the provenances of the association between the result and + * the RC/RI. The values for this element correspond to: - code: it corresponds to the id of the context in the result + * to be mapped. If the context id refers to a RC/RI and contains '::' only the part of the id before the first "::" + * will be used as value for code - label it corresponds to the label associated to the id. The information id taken + * from the profile of the RC/RI - provenance it is set only if the dataInfo associated to the contenxt element of the + * result to be dumped is not null. For each dataInfo one instance of type eu.dnetlib.dhp.schema.dump.oaf.Provenance is + * instantiated if the element datainfo.provenanceaction is not null. In this case - provenance corresponds to + * dataInfo.provenanceaction.classname - trust corresponds to dataInfo.trust + */ +public class Context { + @JsonSchema(description = "Code identifying the RI/RC") + private String code; + + @JsonSchema(description = "Label of the RI/RC") + private String label; + + @JsonSchema(description = "Why this result is associated to the RI/RC.") + private List provenance; + + public List getProvenance() { + return provenance; + } + + public void setProvenance(List provenance) { + this.provenance = provenance; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + @Override + public int hashCode() { + final String p = Optional + .ofNullable(getProvenance()) + .map( + prov -> prov + .stream() + .map(Provenance::toString) + .collect(Collectors.joining())) + .orElse(""); + + return Objects.hash(getCode(), getLabel(), p); + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Funder.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Funder.java new file mode 100644 index 0000000..2099429 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Funder.java @@ -0,0 +1,24 @@ + +package eu.dnetlib.dhp.oa.model.community; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To store information about the funder funding the project related to the result. It has the following parameters: - + * shortName of type String to store the funder short name (e.c. AKA). - name of type String to store the funder name + * (e.c. Akademy of Finland) - fundingStream of type String to store the funding stream - jurisdiction of type String to + * store the jurisdiction of the funder + */ +public class Funder extends eu.dnetlib.dhp.oa.model.Funder { + + @JsonSchema(description = "Stream of funding (e.g. for European Commission can be H2020 or FP7)") + private String fundingStream; + + public String getFundingStream() { + return fundingStream; + } + + public void setFundingStream(String fundingStream) { + this.fundingStream = fundingStream; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Project.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Project.java new file mode 100644 index 0000000..421f772 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Project.java @@ -0,0 +1,58 @@ + +package eu.dnetlib.dhp.oa.model.community; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +import eu.dnetlib.dhp.oa.model.Provenance; + +/** + * To store information about the project related to the result. This information is not directly mapped from the result + * represented in the internal model because it is not there. The mapped result will be enriched with project + * information derived by relation between results and projects. Project extends eu.dnetlib.dhp.schema.dump.oaf.Project + * with the following parameters: - funder of type eu.dnetlib.dhp.schema.dump.oaf.community.Funder to store information + * about the funder funding the project - provenance of type eu.dnetlib.dhp.schema.dump.oaf.Provenance to store + * information about the. provenance of the association between the result and the project + */ +public class Project extends eu.dnetlib.dhp.oa.model.Project { + + @JsonSchema(description = "Information about the funder funding the project") + private Funder funder; + + private Provenance provenance; + + private Validated validated; + + public void setValidated(Validated validated) { + this.validated = validated; + } + + public Validated getValidated() { + return validated; + } + + public Provenance getProvenance() { + return provenance; + } + + public void setProvenance(Provenance provenance) { + this.provenance = provenance; + } + + public Funder getFunder() { + return funder; + } + + public void setFunder(Funder funders) { + this.funder = funders; + } + + public static Project newInstance(String id, String code, String acronym, String title, Funder funder) { + Project project = new Project(); + project.setAcronym(acronym); + project.setCode(code); + project.setFunder(funder); + project.setId(id); + project.setTitle(title); + return project; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Validated.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Validated.java new file mode 100644 index 0000000..015f282 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/community/Validated.java @@ -0,0 +1,39 @@ + +package eu.dnetlib.dhp.oa.model.community; + +import java.io.Serializable; + +/** + * To store information about the funder funding the project related to the result. It has the following parameters: - + * shortName of type String to store the funder short name (e.c. AKA). - name of type String to store the funder name + * (e.c. Akademy of Finland) - fundingStream of type String to store the funding stream - jurisdiction of type String to + * store the jurisdiction of the funder + */ +public class Validated implements Serializable { + + private String validationDate; + private Boolean validatedByFunder; + + public void setValidationDate(String validationDate) { + this.validationDate = validationDate; + } + + public String getValidationDate() { + return validationDate; + } + + public void setValidatedByFunder(Boolean validated) { + this.validatedByFunder = validated; + } + + public Boolean getValidatedByFunder() { + return validatedByFunder; + } + + public static Validated newInstance(Boolean validated, String validationDate) { + Validated v = new Validated(); + v.validatedByFunder = validated; + v.validationDate = validationDate; + return v; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Constants.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Constants.java new file mode 100644 index 0000000..8c92aff --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Constants.java @@ -0,0 +1,21 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +public class Constants implements Serializable { + // collectedFrom va con isProvidedBy -> becco da ModelSupport + + public static final String HOSTED_BY = "isHostedBy"; + public static final String HOSTS = "hosts"; + + // community result uso isrelatedto + + public static final String RESULT_ENTITY = "result"; + public static final String DATASOURCE_ENTITY = "datasource"; + public static final String CONTEXT_ENTITY = "context"; + + public static final String CONTEXT_ID = "60"; + public static final String CONTEXT_NS_PREFIX = "context____"; + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Datasource.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Datasource.java new file mode 100644 index 0000000..7984f87 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Datasource.java @@ -0,0 +1,346 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; +import java.util.List; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +import eu.dnetlib.dhp.oa.model.Container; + +/** + * To store information about the datasource OpenAIRE collects information from. It contains the following parameters: - + * id of type String to store the OpenAIRE id for the datasource. It corresponds to the parameter id of the datasource + * represented in the internal model - originalId of type List to store the list of original ids associated to + * the datasource. It corresponds to the parameter originalId of the datasource represented in the internal model. The + * null values are filtered out - pid of type List to store the + * persistent identifiers for the datasource. For each pid in the datasource represented in the internal model one pid + * in the external model is produced as : - schema corresponds to pid.qualifier.classid of the datasource represented in + * the internal model - value corresponds to pid.value of the datasource represented in the internal model - + * datasourceType of type eu.dnetlib.dhp.schema.dump.oaf.ControlledField to store the datasource type (e.g. + * pubsrepository::institutional, Institutional Repository) as in the dnet vocabulary dnet:datasource_typologies. It + * corresponds to datasourcetype of the datasource represented in the internal model and : - code corresponds to + * datasourcetype.classid - value corresponds to datasourcetype.classname - openairecompatibility of type String to + * store information about the OpenAIRE compatibility of the ingested results (which guidelines they are compliant to). + * It corresponds to openairecompatibility.classname of the datasource represented in the internal model - officialname + * of type Sgtring to store the official name of the datasource. It correspond to officialname.value of the datasource + * represented in the internal model - englishname of type String to store the English name of the datasource. It + * corresponds to englishname.value of the datasource represented in the internal model - websiteurl of type String to + * store the URL of the website of the datasource. It corresponds to websiteurl.value of the datasource represented in + * the internal model - logourl of type String to store the URL of the logo for the datasource. It corresponds to + * logourl.value of the datasource represented in the internal model - dateofvalidation of type String to store the data + * of validation against the guidelines for the datasource records. It corresponds to dateofvalidation.value of the + * datasource represented in the internal model - description of type String to store the description for the + * datasource. It corresponds to description.value of the datasource represented in the internal model + */ +public class Datasource implements Serializable { + @JsonSchema(description = "The OpenAIRE id of the data source") + private String id; // string + + @JsonSchema(description = "Original identifiers for the datasource") + private List originalId; // list string + + @JsonSchema(description = "Persistent identifiers of the datasource") + private List pid; // list + + @JsonSchema( + description = "The type of the datasource. See https://api.openaire.eu/vocabularies/dnet:datasource_typologies") + private DatasourceSchemeValue datasourcetype; // value + + @JsonSchema( + description = "OpenAIRE guidelines the data source comply with. See also https://guidelines.openaire.eu.") + private String openairecompatibility; // value + + @JsonSchema(description = "The official name of the datasource") + private String officialname; // string + + @JsonSchema(description = "The English name of the datasource") + private String englishname; // string + + private String websiteurl; // string + + private String logourl; // string + + @JsonSchema(description = "The date of last validation against the OpenAIRE guidelines for the datasource records") + private String dateofvalidation; // string + + private String description; // description + + @JsonSchema(description = "List of subjects associated to the datasource") + private List subjects; // List + + // opendoar specific fields (od*) + + @JsonSchema(description = "The languages present in the data source's content, as defined by OpenDOAR.") + private List languages; // odlanguages List + + @JsonSchema(description = "Types of content in the data source, as defined by OpenDOAR") + private List contenttypes; // odcontent types List + + // re3data fields + @JsonSchema(description = "Releasing date of the data source, as defined by re3data.org") + private String releasestartdate; // string + + @JsonSchema( + description = "Date when the data source went offline or stopped ingesting new research data. As defined by re3data.org") + private String releaseenddate; // string + + @JsonSchema( + description = "The URL of a mission statement describing the designated community of the data source. As defined by re3data.org") + private String missionstatementurl; // string + + @JsonSchema( + description = "Type of access to the data source, as defined by re3data.org. Possible values: " + + "{open, restricted, closed}") + private String accessrights; // databaseaccesstype string + + // {open, restricted or closed} + @JsonSchema(description = "Type of data upload. As defined by re3data.org: one of {open, restricted,closed}") + private String uploadrights; // datauploadtype string + + @JsonSchema( + description = "Access restrinctions to the data source, as defined by re3data.org. One of {feeRequired, registration, other}") + private String databaseaccessrestriction; // string + + @JsonSchema( + description = "Upload restrictions applied by the datasource, as defined by re3data.org. One of {feeRequired, registration, other}") + private String datauploadrestriction; // string + + @JsonSchema(description = "As defined by redata.org: 'yes' if the data source supports versioning, 'no' otherwise.") + private Boolean versioning; // boolean + + @JsonSchema( + description = "The URL of the data source providing information on how to cite its items. As defined by re3data.org.") + private String citationguidelineurl; // string + + // {yes, no, uknown} + @JsonSchema( + description = "The persistent identifier system that is used by the data source. As defined by re3data.org") + private String pidsystems; // string + + @JsonSchema( + description = "The certificate, seal or standard the data source complies with. As defined by re3data.org.") + private String certificates; // string + + @JsonSchema(description = "Policies of the data source, as defined in OpenDOAR.") + private List policies; // + + @JsonSchema(description = "Information about the journal, if this data source is of type Journal.") + private Container journal; // issn etc del Journal + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public List getOriginalId() { + return originalId; + } + + public void setOriginalId(List originalId) { + this.originalId = originalId; + } + + public List getPid() { + return pid; + } + + public void setPid(List pid) { + this.pid = pid; + } + + public DatasourceSchemeValue getDatasourcetype() { + return datasourcetype; + } + + public void setDatasourcetype(DatasourceSchemeValue datasourcetype) { + this.datasourcetype = datasourcetype; + } + + public String getOpenairecompatibility() { + return openairecompatibility; + } + + public void setOpenairecompatibility(String openairecompatibility) { + this.openairecompatibility = openairecompatibility; + } + + public String getOfficialname() { + return officialname; + } + + public void setOfficialname(String officialname) { + this.officialname = officialname; + } + + public String getEnglishname() { + return englishname; + } + + public void setEnglishname(String englishname) { + this.englishname = englishname; + } + + public String getWebsiteurl() { + return websiteurl; + } + + public void setWebsiteurl(String websiteurl) { + this.websiteurl = websiteurl; + } + + public String getLogourl() { + return logourl; + } + + public void setLogourl(String logourl) { + this.logourl = logourl; + } + + public String getDateofvalidation() { + return dateofvalidation; + } + + public void setDateofvalidation(String dateofvalidation) { + this.dateofvalidation = dateofvalidation; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public List getSubjects() { + return subjects; + } + + public void setSubjects(List subjects) { + this.subjects = subjects; + } + + public List getLanguages() { + return languages; + } + + public void setLanguages(List languages) { + this.languages = languages; + } + + public List getContenttypes() { + return contenttypes; + } + + public void setContenttypes(List contenttypes) { + this.contenttypes = contenttypes; + } + + public String getReleasestartdate() { + return releasestartdate; + } + + public void setReleasestartdate(String releasestartdate) { + this.releasestartdate = releasestartdate; + } + + public String getReleaseenddate() { + return releaseenddate; + } + + public void setReleaseenddate(String releaseenddate) { + this.releaseenddate = releaseenddate; + } + + public String getMissionstatementurl() { + return missionstatementurl; + } + + public void setMissionstatementurl(String missionstatementurl) { + this.missionstatementurl = missionstatementurl; + } + + public String getAccessrights() { + return accessrights; + } + + public void setAccessrights(String accessrights) { + this.accessrights = accessrights; + } + + public String getUploadrights() { + return uploadrights; + } + + public void setUploadrights(String uploadrights) { + this.uploadrights = uploadrights; + } + + public String getDatabaseaccessrestriction() { + return databaseaccessrestriction; + } + + public void setDatabaseaccessrestriction(String databaseaccessrestriction) { + this.databaseaccessrestriction = databaseaccessrestriction; + } + + public String getDatauploadrestriction() { + return datauploadrestriction; + } + + public void setDatauploadrestriction(String datauploadrestriction) { + this.datauploadrestriction = datauploadrestriction; + } + + public Boolean getVersioning() { + return versioning; + } + + public void setVersioning(Boolean versioning) { + this.versioning = versioning; + } + + public String getCitationguidelineurl() { + return citationguidelineurl; + } + + public void setCitationguidelineurl(String citationguidelineurl) { + this.citationguidelineurl = citationguidelineurl; + } + + public String getPidsystems() { + return pidsystems; + } + + public void setPidsystems(String pidsystems) { + this.pidsystems = pidsystems; + } + + public String getCertificates() { + return certificates; + } + + public void setCertificates(String certificates) { + this.certificates = certificates; + } + + public List getPolicies() { + return policies; + } + + public void setPolicies(List policiesr3) { + this.policies = policiesr3; + } + + public Container getJournal() { + return journal; + } + + public void setJournal(Container journal) { + this.journal = journal; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/DatasourcePid.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/DatasourcePid.java new file mode 100644 index 0000000..50eddbc --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/DatasourcePid.java @@ -0,0 +1,41 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public class DatasourcePid implements Serializable { + + @JsonSchema(description = "The scheme used to express the value ") + private String scheme; + + @JsonSchema(description = "The value expressed in the scheme ") + private String value; + + public String getScheme() { + return scheme; + } + + public void setScheme(String scheme) { + this.scheme = scheme; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static DatasourcePid newInstance(String scheme, String value) { + DatasourcePid cf = new DatasourcePid(); + + cf.setScheme(scheme); + cf.setValue(value); + + return cf; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/DatasourceSchemeValue.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/DatasourceSchemeValue.java new file mode 100644 index 0000000..a437403 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/DatasourceSchemeValue.java @@ -0,0 +1,41 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public // TODO change the DatasourceSchemaValue to DatasourceKeyValue. The scheme is always the dnet one. What we show + // here is the entry in the scheme (the key) and its understandable value +class DatasourceSchemeValue implements Serializable { + @JsonSchema(description = "The scheme used to express the value (i.e. pubsrepository::journal)") + private String scheme; + + @JsonSchema(description = "The value expressed in the scheme (Journal)") + private String value; + + public String getScheme() { + return scheme; + } + + public void setScheme(String scheme) { + this.scheme = scheme; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static DatasourceSchemeValue newInstance(String scheme, String value) { + DatasourceSchemeValue cf = new DatasourceSchemeValue(); + + cf.setScheme(scheme); + cf.setValue(value); + + return cf; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Funder.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Funder.java new file mode 100644 index 0000000..84c09d2 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Funder.java @@ -0,0 +1,23 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To store information about the funder funding the project related to the result. It extends + * eu.dnetlib.dhp.schema.dump.oaf.Funder with the following parameter: - - private + * eu.dnetdlib.dhp.schema.dump.oaf.graph.Fundings funding_stream to store the fundingstream + */ +public class Funder extends eu.dnetlib.dhp.oa.model.Funder { + + @JsonSchema(description = "Description of the funding stream") + private Fundings funding_stream; + + public Fundings getFunding_stream() { + return funding_stream; + } + + public void setFunding_stream(Fundings funding_stream) { + this.funding_stream = funding_stream; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Fundings.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Fundings.java new file mode 100644 index 0000000..b0330d7 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Fundings.java @@ -0,0 +1,38 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To store inforamtion about the funding stream. It has two parameters: - private String id to store the id of the + * fundings stream. The id is created by appending the shortname of the funder to the name of each level in the xml + * representing the fundng stream. For example: if the funder is the European Commission, the funding level 0 name is + * FP7, the funding level 1 name is SP3 and the funding level 2 name is PEOPLE then the id will be: EC::FP7::SP3::PEOPLE + * - private String description to describe the funding stream. It is created by concatenating the description of each + * funding level so for the example above the description would be: SEVENTH FRAMEWORK PROGRAMME - SP3-People - + * Marie-Curie Actions + */ +public class Fundings implements Serializable { + + @JsonSchema(description = "Id of the funding stream") + private String id; + private String description; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Granted.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Granted.java new file mode 100644 index 0000000..c5fb352 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Granted.java @@ -0,0 +1,61 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To describe the funded amount. It has the following parameters: - private String currency to store the currency of + * the fund - private float totalcost to store the total cost of the project - private float fundedamount to store the + * funded amount by the funder + */ +public class Granted implements Serializable { + @JsonSchema(description = "The currency of the granted amount (e.g. EUR)") + private String currency; + + @JsonSchema(description = "The total cost of the project") + private float totalcost; + + @JsonSchema(description = "The funded amount") + private float fundedamount; + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public float getTotalcost() { + return totalcost; + } + + public void setTotalcost(float totalcost) { + this.totalcost = totalcost; + } + + public float getFundedamount() { + return fundedamount; + } + + public void setFundedamount(float fundedamount) { + this.fundedamount = fundedamount; + } + + public static Granted newInstance(String currency, float totalcost, float fundedamount) { + Granted granted = new Granted(); + granted.currency = currency; + granted.totalcost = totalcost; + granted.fundedamount = fundedamount; + return granted; + } + + public static Granted newInstance(String currency, float fundedamount) { + Granted granted = new Granted(); + granted.currency = currency; + granted.fundedamount = fundedamount; + return granted; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/GraphResult.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/GraphResult.java new file mode 100644 index 0000000..9b95881 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/GraphResult.java @@ -0,0 +1,28 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.util.List; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +import eu.dnetlib.dhp.oa.model.Instance; +import eu.dnetlib.dhp.oa.model.Result; + +/** + * It extends the eu.dnetlib.dhp.schema.dump.oaf.Result with - instance of type + * List to store all the instances associated to the result. It corresponds to + * the same parameter in the result represented in the internal model + */ +public class GraphResult extends Result { + @JsonSchema( + description = "Each instance is one specific materialisation or version of the result. For example, you can have one result with three instance: one is the pre-print, one is the post-print, one is te published version") + private List instance; + + public List getInstance() { + return instance; + } + + public void setInstance(List instance) { + this.instance = instance; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/H2020Classification.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/H2020Classification.java new file mode 100644 index 0000000..96d1ed8 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/H2020Classification.java @@ -0,0 +1,82 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +/** + * To store information about the classification for the project. The classification depends on the programme. For example + * H2020-EU.3.4.5.3 can be classified as + * H2020-EU.3. => Societal Challenges (level1) + * H2020-EU.3.4. => Transport (level2) + * H2020-EU.3.4.5. => CLEANSKY2 (level3) + * H2020-EU.3.4.5.3. => IADP Fast Rotorcraft (level4) + * + * We decided to explicitly represent up to three levels in the classification. + * + * H2020Classification has the following parameters: + * - private Programme programme to store the information about the programme related to this classification + * - private String level1 to store the information about the level 1 of the classification (Priority or Pillar of the EC) + * - private String level2 to store the information about the level2 af the classification (Objectives (?)) + * - private String level3 to store the information about the level3 of the classification + * - private String classification to store the entire classification related to the programme + */ +public class H2020Classification implements Serializable { + private Programme programme; + + private String level1; + private String level2; + private String level3; + + private String classification; + + public Programme getProgramme() { + return programme; + } + + public void setProgramme(Programme programme) { + this.programme = programme; + } + + public String getLevel1() { + return level1; + } + + public void setLevel1(String level1) { + this.level1 = level1; + } + + public String getLevel2() { + return level2; + } + + public void setLevel2(String level2) { + this.level2 = level2; + } + + public String getLevel3() { + return level3; + } + + public void setLevel3(String level3) { + this.level3 = level3; + } + + public String getClassification() { + return classification; + } + + public void setClassification(String classification) { + this.classification = classification; + } + + public static H2020Classification newInstance(String programme_code, String programme_description, String level1, + String level2, String level3, String classification) { + H2020Classification h2020classification = new H2020Classification(); + h2020classification.programme = Programme.newInstance(programme_code, programme_description); + h2020classification.level1 = level1; + h2020classification.level2 = level2; + h2020classification.level3 = level3; + h2020classification.classification = classification; + return h2020classification; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Node.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Node.java new file mode 100644 index 0000000..cd2bb78 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Node.java @@ -0,0 +1,38 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +/** + * To represent the generic node in a relation. It has the following parameters: - private String id the openaire id of + * the entity in the relation - private String type the type of the entity in the relation. Consider the generic + * relation between a Result R and a Project P, the node representing R will have as id the id of R and as type result, + * while the node representing the project will have as id the id of the project and as type project + */ +public class Node implements Serializable { + private String id; + private String type; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public static Node newInstance(String id, String type) { + Node node = new Node(); + node.id = id; + node.type = type; + return node; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Organization.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Organization.java new file mode 100644 index 0000000..65211c8 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Organization.java @@ -0,0 +1,94 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; +import java.util.List; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +import eu.dnetlib.dhp.oa.model.Country; + +/** + * To represent the generic organizaiton. It has the following parameters: + * - private String legalshortname to store the legalshortname of the organizaiton + * - private String legalname to store the legal name of the organization + * - private String websiteurl to store the websiteurl of the organization + * - private List alternativenames to store the alternative names of the organization + * - private Country country to store the country of the organization + * - private String id to store the openaire id of the organization + * - private List pid to store the list of pids for the organization + */ +public class Organization implements Serializable { + private String legalshortname; + private String legalname; + private String websiteurl; + + @JsonSchema(description = "Alternative names that identify the organisation") + private List alternativenames; + + @JsonSchema(description = "The organisation country") + private Country country; + + @JsonSchema(description = "The OpenAIRE id for the organisation") + private String id; + + @JsonSchema(description = "Persistent identifiers for the organisation i.e. isni 0000000090326370") + private List pid; + + public String getLegalshortname() { + return legalshortname; + } + + public void setLegalshortname(String legalshortname) { + this.legalshortname = legalshortname; + } + + public String getLegalname() { + return legalname; + } + + public void setLegalname(String legalname) { + this.legalname = legalname; + } + + public String getWebsiteurl() { + return websiteurl; + } + + public void setWebsiteurl(String websiteurl) { + this.websiteurl = websiteurl; + } + + public List getAlternativenames() { + return alternativenames; + } + + public void setAlternativenames(List alternativenames) { + this.alternativenames = alternativenames; + } + + public Country getCountry() { + return country; + } + + public void setCountry(Country country) { + this.country = country; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public List getPid() { + return pid; + } + + public void setPid(List pid) { + this.pid = pid; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/OrganizationPid.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/OrganizationPid.java new file mode 100644 index 0000000..575f4c8 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/OrganizationPid.java @@ -0,0 +1,42 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +public + +class OrganizationPid implements Serializable { + @JsonSchema(description = "The scheme of the identifier (i.e. isni)") + private String scheme; + + @JsonSchema(description = "The value in the schema (i.e. 0000000090326370)") + private String value; + + public String getScheme() { + return scheme; + } + + public void setScheme(String scheme) { + this.scheme = scheme; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static OrganizationPid newInstance(String scheme, String value) { + OrganizationPid cf = new OrganizationPid(); + + cf.setScheme(scheme); + cf.setValue(value); + + return cf; + } + +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Programme.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Programme.java new file mode 100644 index 0000000..14c9f40 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Programme.java @@ -0,0 +1,41 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To store information about the ec programme for the project. It has the following parameters: - private String code + * to store the code of the programme - private String description to store the description of the programme + */ +public class Programme implements Serializable { + @JsonSchema(description = "The code of the programme") + private String code; + + @JsonSchema(description = "The description of the programme") + private String description; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public static Programme newInstance(String code, String description) { + Programme p = new Programme(); + p.code = code; + p.description = description; + return p; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Project.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Project.java new file mode 100644 index 0000000..67aa076 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Project.java @@ -0,0 +1,198 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; +import java.util.List; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * This is the class representing the Project in the model used for the dumps of the whole graph. At the moment the dump + * of the Projects differs from the other dumps because we do not create relations between Funders (Organization) and + * Projects but we put the information about the Funder within the Project representation. We also removed the + * collected from element from the Project. No relation between the Project and the Datasource entity from which it is + * collected will be created. We will never create relations between Project and Datasource. In case some relation will + * be extracted from the Project they will refer the Funder and will be of type ( organization -> funds -> project, + * project -> isFundedBy -> organization) We also removed the duration parameter because the most of times it is set to + * 0. It has the following parameters: + * - private String id to store the id of the project (OpenAIRE id) + * - private String websiteurl to store the websiteurl of the project + * - private String code to store the grant agreement of the project + * - private String acronym to store the acronym of the project + * - private String title to store the tile of the project + * - private String startdate to store the start date + * - private String enddate to store the end date + * - private String callidentifier to store the call indentifier + * - private String keywords to store the keywords + * - private boolean openaccessmandateforpublications to store if the project must accomplish to the open access mandate + * for publications. This value will be set to true if one of the field in the project represented in the internal model + * is set to true + * - private boolean openaccessmandatefordataset to store if the project must accomplish to the open access mandate for + * dataset. It is set to the value in the corresponding filed of the project represented in the internal model + * - private List subject to store the list of subjects of the project + * - private List funding to store the list of funder of the project + * - private String summary to store the summary of the project + * - private Granted granted to store the granted amount + * - private List h2020programme to store the list of programmes the project is related to + */ + +public class Project implements Serializable { + private String id; + + private String websiteurl; + private String code; + private String acronym; + private String title; + + private String startdate; + + private String enddate; + + private String callidentifier; + + private String keywords; + + private boolean openaccessmandateforpublications; + + private boolean openaccessmandatefordataset; + private List subject; + + @JsonSchema(description = "Funding information for the project") + private List funding; + + private String summary; + + @JsonSchema(description = "The money granted to the project") + private Granted granted; + + @JsonSchema(description = "The h2020 programme funding the project") + private List h2020programme; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getWebsiteurl() { + return websiteurl; + } + + public void setWebsiteurl(String websiteurl) { + this.websiteurl = websiteurl; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getAcronym() { + return acronym; + } + + public void setAcronym(String acronym) { + this.acronym = acronym; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getStartdate() { + return startdate; + } + + public void setStartdate(String startdate) { + this.startdate = startdate; + } + + public String getEnddate() { + return enddate; + } + + public void setEnddate(String enddate) { + this.enddate = enddate; + } + + public String getCallidentifier() { + return callidentifier; + } + + public void setCallidentifier(String callidentifier) { + this.callidentifier = callidentifier; + } + + public String getKeywords() { + return keywords; + } + + public void setKeywords(String keywords) { + this.keywords = keywords; + } + + public boolean isOpenaccessmandateforpublications() { + return openaccessmandateforpublications; + } + + public void setOpenaccessmandateforpublications(boolean openaccessmandateforpublications) { + this.openaccessmandateforpublications = openaccessmandateforpublications; + } + + public boolean isOpenaccessmandatefordataset() { + return openaccessmandatefordataset; + } + + public void setOpenaccessmandatefordataset(boolean openaccessmandatefordataset) { + this.openaccessmandatefordataset = openaccessmandatefordataset; + } + + public List getSubject() { + return subject; + } + + public void setSubject(List subject) { + this.subject = subject; + } + + public List getFunding() { + return funding; + } + + public void setFunding(List funding) { + this.funding = funding; + } + + public String getSummary() { + return summary; + } + + public void setSummary(String summary) { + this.summary = summary; + } + + public Granted getGranted() { + return granted; + } + + public void setGranted(Granted granted) { + this.granted = granted; + } + + public List getH2020programme() { + return h2020programme; + } + + public void setH2020programme(List h2020programme) { + this.h2020programme = h2020programme; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/RelType.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/RelType.java new file mode 100644 index 0000000..ea85187 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/RelType.java @@ -0,0 +1,39 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +/** + * To represent the semantics of the generic relation between two entities. It has the following parameters: - private + * String name to store the semantics of the relation (i.e. isAuthorInstitutionOf). It corresponds to the relclass + * parameter in the relation represented in the internal model represented in the internal model - private String type + * to store the type of the relation (i.e. affiliation). It corresponds to the subreltype parameter of the relation + * represented in theinternal model + */ +public class RelType implements Serializable { + private String name; // relclass + private String type; // subreltype + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public static RelType newInstance(String name, String type) { + RelType rel = new RelType(); + rel.name = name; + rel.type = type; + return rel; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Relation.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Relation.java new file mode 100644 index 0000000..9f3832d --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/Relation.java @@ -0,0 +1,99 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; +import java.util.Objects; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +import eu.dnetlib.dhp.oa.model.Provenance; + +/** + * To represent the gereric relation between two entities. It has the following parameters: - private Node source to + * represent the entity source of the relation - private Node target to represent the entity target of the relation - + * private RelType reltype to represent the semantics of the relation - private Provenance provenance to represent the + * provenance of the relation + */ +public class Relation implements Serializable { + @JsonSchema(description = "The node source in the relation") + private Node source; + + @JsonSchema(description = "The node target in the relation") + private Node target; + + @JsonSchema(description = "To represent the semantics of a relation between two entities") + private RelType reltype; + + @JsonSchema(description = "The reason why OpenAIRE holds the relation ") + private Provenance provenance; + + @JsonSchema( + description = "True if the relation is related to a project and it has been collected from an authoritative source (i.e. the funder)") + private boolean validated; + + @JsonSchema(description = "The date when the relation was collected from OpenAIRE") + private String validationDate; + + public Node getSource() { + return source; + } + + public void setSource(Node source) { + this.source = source; + } + + public Node getTarget() { + return target; + } + + public void setTarget(Node target) { + this.target = target; + } + + public RelType getReltype() { + return reltype; + } + + public void setReltype(RelType reltype) { + this.reltype = reltype; + } + + public Provenance getProvenance() { + return provenance; + } + + public void setProvenance(Provenance provenance) { + this.provenance = provenance; + } + + public void setValidated(boolean validate) { + this.validated = validate; + } + + public boolean getValidated() { + return validated; + } + + public void setValidationDate(String validationDate) { + this.validationDate = validationDate; + } + + public String getValidationDate() { + return validationDate; + } + + @Override + public int hashCode() { + + return Objects.hash(source.getId(), target.getId(), reltype.getType() + ":" + reltype.getName()); + } + + public static Relation newInstance(Node source, Node target, RelType reltype, Provenance provenance) { + Relation relation = new Relation(); + relation.source = source; + relation.target = target; + relation.reltype = reltype; + relation.provenance = provenance; + return relation; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/ResearchCommunity.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/ResearchCommunity.java new file mode 100644 index 0000000..f40001b --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/ResearchCommunity.java @@ -0,0 +1,24 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.util.List; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To represent RC entities. It extends eu.dnetlib.dhp.dump.oaf.grap.ResearchInitiative by adding the parameter subject + * to store the list of subjects related to the community + */ +public class ResearchCommunity extends ResearchInitiative { + @JsonSchema( + description = "Only for research communities: the list of the subjects associated to the research community") + private List subject; + + public List getSubject() { + return subject; + } + + public void setSubject(List subject) { + this.subject = subject; + } +} diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/ResearchInitiative.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/ResearchInitiative.java new file mode 100644 index 0000000..7a82401 --- /dev/null +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/graph/ResearchInitiative.java @@ -0,0 +1,89 @@ + +package eu.dnetlib.dhp.oa.model.graph; + +import java.io.Serializable; + +import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; + +/** + * To represent entity of type RC/RI. It has the following parameters, which are mostly derived by the profile + * - private + * String id to store the openaire id for the entity. Is has as code 00 and will be created as + * 00|context_____::md5(originalId) private + * String originalId to store the id of the context as provided in the profile + * (i.e. mes) + * - private String name to store the name of the context (got from the label attribute in the context + * definition) + * - private String type to store the type of the context (i.e.: research initiative or research community) + * - private String description to store the description of the context as given in the profile + * -private String + * zenodo_community to store the zenodo community associated to the context (main zenodo community) + */ +public class ResearchInitiative implements Serializable { + @JsonSchema(description = "The OpenAIRE id for the community/research infrastructure") + private String id; // openaireId + + @JsonSchema(description = "The acronym of the community") + private String acronym; // context id + + @JsonSchema(description = "The long name of the community") + private String name; // context name + + @JsonSchema(description = "One of {Research Community, Research infrastructure}") + private String type; // context type: research initiative or research community + + @JsonSchema(description = "Description of the research community/research infrastructure") + private String description; + + @JsonSchema( + description = "The URL of the Zenodo community associated to the Research community/Research infrastructure") + private String zenodo_community; + + public String getZenodo_community() { + return zenodo_community; + } + + public void setZenodo_community(String zenodo_community) { + this.zenodo_community = zenodo_community; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String label) { + this.name = label; + } + + public String getAcronym() { + return acronym; + } + + public void setAcronym(String acronym) { + this.acronym = acronym; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/dump-schema/src/main/resources/jsonschemas/community_infrastructure_schema.json b/dump-schema/src/main/resources/jsonschemas/community_infrastructure_schema.json new file mode 100644 index 0000000..727432a --- /dev/null +++ b/dump-schema/src/main/resources/jsonschemas/community_infrastructure_schema.json @@ -0,0 +1,35 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "acronym": { + "type": "string", + "description": "The acronym of the community" + }, + "description": { + "type": "string", + "description": "Description of the research community/research infrastructure" + }, + "id": { + "type": "string", + "description": "OpenAIRE id of the research community/research infrastructure" + }, + "name": { + "type": "string", + "description": "The long name of the community" + }, + "subject": { + "description": "Only for research communities: the list of the subjects associated to the research community", + "type": "array", + "items": {"type": "string"} + }, + "type": { + "type": "string", + "description": "One of {Research Community, Research infrastructure}" + }, + "zenodo_community": { + "type": "string", + "description": "The URL of the Zenodo community associated to the Research community/Research infrastructure" + } + } +} \ No newline at end of file diff --git a/dump-schema/src/main/resources/jsonschemas/datasource_schema.json b/dump-schema/src/main/resources/jsonschemas/datasource_schema.json new file mode 100644 index 0000000..c416f23 --- /dev/null +++ b/dump-schema/src/main/resources/jsonschemas/datasource_schema.json @@ -0,0 +1,192 @@ +{ + "$schema":"http://json-schema.org/draft-07/schema#", + "definitions": { + "ControlledField": { + "type": "object", + "properties": { + "scheme": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "description": "To represent the information described by a scheme and a value in that scheme (i.e. pid)" + } + }, + "type":"object", + "properties": { + "accessrights": { + "type": "string", + "description": "Type of access to the data source, as defined by re3data.org. Possible values: {open, restricted, closed}" + }, + "certificates": { + "type": "string", + "description": "The certificate, seal or standard the data source complies with. As defined by re3data.org." + }, + "citationguidelineurl": { + "type": "string", + "description":"The URL of the data source providing information on how to cite its items. As defined by re3data.org." + }, + "contenttypes": { + "description": "Types of content in the data source, as defined by OpenDOAR", + "type": "array", + "items": { + "type": "string" + } + }, + "databaseaccessrestriction": { + "type": "string", + "description": "Access restrinctions to the data source, as defined by re3data.org. One of {feeRequired, registration, other}" + }, + "datasourcetype": { + "allOf": [ + { + "$ref": "#/definitions/ControlledField" + }, + { + "description": "The type of the datasource. See https://api.openaire.eu/vocabularies/dnet:datasource_typologies" + } + ] + }, + "datauploadrestriction": { + "type": "string", + "description": "Upload restrictions applied by the datasource, as defined by re3data.org. One of {feeRequired, registration, other}" + }, + "dateofvalidation": { + "type": "string", + "description": "The date of last validation against the OpenAIRE guidelines for the datasource records" + }, + "description": { + "type": "string" + }, + "englishname": { + "type": "string", + "description": "The English name of the datasource" + }, + "id": { + "type": "string", + "description": "The OpenAIRE id of the data source" + }, + "journal": { + "type": "object", + "properties": { + "conferencedate": { + "type": "string" + }, + "conferenceplace": { + "type": "string" + }, + "edition": { + "type": "string" + }, + "ep": { + "type": "string", + "description": "End page" + }, + "iss": { + "type": "string", + "description": "Issue number" + }, + "issnLinking": { + "type": "string" + }, + "issnOnline": { + "type": "string" + }, + "issnPrinted": { + "type": "string" + }, + "name": { + "type": "string" + }, + "sp": { + "type": "string", + "description": "Start page" + }, + "vol": { + "type": "string", + "description": "Volume" + } + }, + "description": "Information about the journal, if this data source is of type Journal." + }, + "languages": { + "description": "The languages present in the data source's content, as defined by OpenDOAR.", + "type": "array", + "items": { + "type": "string" + } + }, + "logourl": { + "type": "string" + }, + "missionstatementurl": { + "type": "string", + "description":"The URL of a mission statement describing the designated community of the data source. As defined by re3data.org" + }, + "officialname": { + "type": "string", + "description": "The official name of the datasource" + }, + "openairecompatibility": { + "type": "string", + "description": "OpenAIRE guidelines the data source comply with. See also https://guidelines.openaire.eu." + }, + "originalId": { + "description": "Original identifiers for the datasource" + "type": "array", + "items": { + "type": "string" + } + }, + "pid": { + "description": "Persistent identifiers of the datasource", + "type": "array", + "items": { + "allOf": [ + { + "$ref": "#/definitions/ControlledField" + } + ] + } + }, + "pidsystems": { + "type": "string", + "description": "The persistent identifier system that is used by the data source. As defined by re3data.org" + }, + "policies": { + "description": "Policies of the data source, as defined in OpenDOAR.", + "type": "array", + "items": { + "type": "string" + } + }, + "releaseenddate": { + "type": "string", + "description": "Date when the data source went offline or stopped ingesting new research data. As defined by re3data.org" + }, + "releasestartdate": { + "type": "string", + "description": "Releasing date of the data source, as defined by re3data.org" + }, + "subjects": { + "description": "List of subjects associated to the datasource", + "type": "array", + "items": { + "type": "string" + } + }, + "uploadrights": { + "type": "string", + "description": "Type of data upload. As defined by re3data.org: one of {open, restricted,closed}" + }, + "versioning": { + "type": "boolean", + "description": "As defined by redata.org: 'yes' if the data source supports versioning, 'no' otherwise." + }, + "websiteurl": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/dump-schema/src/main/resources/jsonschemas/eosc_result_schema.json b/dump-schema/src/main/resources/jsonschemas/eosc_result_schema.json new file mode 100644 index 0000000..7e2b5b7 --- /dev/null +++ b/dump-schema/src/main/resources/jsonschemas/eosc_result_schema.json @@ -0,0 +1,496 @@ +{ + "$schema" : "http://json-schema.org/draft-07/schema#", + "definitions" : { + "Provenance" : { + "type" : "object", + "properties" : { + "provenance" : { + "type" : "string" + }, + "trust" : { + "type" : "string" + } + } + }, + "ResultPid" : { + "type" : "object", + "properties" : { + "scheme" : { + "type" : "string", + "description" : "The scheme of the persistent identifier for the result (i.e. doi). If the pid is here it means the information for the pid has been collected from an authority for that pid type (i.e. Crossref/Datacite for doi). The set of authoritative pid is: doi when collected from Crossref or Datacite pmid when collected from EuroPubmed, arxiv when collected from arXiv, handle from the repositories" + }, + "value" : { + "type" : "string", + "description" : "The value expressed in the scheme (i.e. 10.1000/182)" + } + } + } + }, + "type" : "object", + "properties" : { + "author" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "fullname" : { + "type" : "string" + }, + "name" : { + "type" : "string" + }, + "pid" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "object", + "properties" : { + "scheme" : { + "type" : "string", + "description" : "The author's pid scheme. OpenAIRE currently supports 'ORCID'" + }, + "value" : { + "type" : "string", + "description" : "The author's pid value in that scheme (i.e. 0000-1111-2222-3333)" + } + } + }, + "provenance" : { + "allOf" : [ { + "$ref" : "#/definitions/Provenance" + }, { + "description" : "The reason why the pid was associated to the author" + } ] + } + }, + "description" : "The author's persistent identifiers" + }, + "rank" : { + "type" : "integer" + }, + "surname" : { + "type" : "string" + } + } + } + }, + "bestaccessright" : { + "type" : "object", + "properties" : { + "code" : { + "type" : "string", + "description" : "COAR access mode code: http://vocabularies.coar-repositories.org/documentation/access_rights/" + }, + "label" : { + "type" : "string", + "description" : "Label for the access mode" + }, + "scheme" : { + "type" : "string", + "description" : "Scheme of reference for access right code. Always set to COAR access rights vocabulary: http://vocabularies.coar-repositories.org/documentation/access_rights/" + } + }, + "description" : "The openest of the access rights of this result." + }, + "codeRepositoryUrl" : { + "type" : "string", + "description" : "Only for results with type 'software': the URL to the repository with the source code" + }, + "contactgroup" : { + "description" : "Only for results with type 'software': Information on the group responsible for providing further information regarding the resource", + "type" : "array", + "items" : { + "type" : "string", + "description" : "Only for results with type 'software': Information on the group responsible for providing further information regarding the resource" + } + }, + "contactperson" : { + "description" : "Only for results with type 'software': Information on the person responsible for providing further information regarding the resource", + "type" : "array", + "items" : { + "type" : "string", + "description" : "Only for results with type 'software': Information on the person responsible for providing further information regarding the resource" + } + }, + "container" : { + "type" : "object", + "properties" : { + "conferencedate" : { + "type" : "string" + }, + "conferenceplace" : { + "type" : "string" + }, + "edition" : { + "type" : "string", + "description" : "Edition of the journal or conference proceeding" + }, + "ep" : { + "type" : "string", + "description" : "End page" + }, + "iss" : { + "type" : "string", + "description" : "Journal issue number" + }, + "issnLinking" : { + "type" : "string" + }, + "issnOnline" : { + "type" : "string" + }, + "issnPrinted" : { + "type" : "string" + }, + "name" : { + "type" : "string", + "description" : "Name of the journal or conference" + }, + "sp" : { + "type" : "string", + "description" : "Start page" + }, + "vol" : { + "type" : "string", + "description" : "Volume" + } + }, + "description" : "Container has information about the conference or journal where the result has been presented or published" + }, + "contributor" : { + "description" : "Contributors for the result", + "type" : "array", + "items" : { + "type" : "string", + "description" : "Contributors for the result" + } + }, + "country" : { + "description" : "The list of countries associated to this result", + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "code" : { + "type" : "string", + "description" : "ISO 3166-1 alpha-2 country code (i.e. IT)" + }, + "label" : { + "type" : "string", + "description" : "The label for that code (i.e. Italy)" + }, + "provenance" : { + "allOf" : [ { + "$ref" : "#/definitions/Provenance" + }, { + "description" : "Why this result is associated to the country." + } ] + } + }, + "description" : "The list of countries associated to this result" + } + }, + "coverage" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "dateofcollection" : { + "type" : "string", + "description" : "When OpenAIRE collected the record the last time" + }, + "description" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "documentationUrl" : { + "description" : "Only for results with type 'software': URL to the software documentation", + "type" : "array", + "items" : { + "type" : "string", + "description" : "Only for results with type 'software': URL to the software documentation" + } + }, + "embargoenddate" : { + "type" : "string", + "description" : "Date when the embargo ends and this result turns Open Access" + }, + "eoscIF" : { + "type" : "object", + "properties" : { + "code" : { + "type" : "string", + "description" : "EOSC-IF local code. Later on it could be populated with a PID (e.g. DOI), but for the time being we stick to a more loose definition." + }, + "label" : { + "type" : "string", + "description" : "EOSC-IF label" + }, + "semanticRelation" : { + "type" : "string", + "description" : "EOSC-IF semantic relation (e.g. compliesWith)" + }, + "url" : { + "type" : "string", + "description" : "EOSC-IF url to the guidelines" + } + }, + "description" : "Describes a reference to the EOSC Interoperability Framework (IF) Guidelines" + }, + "format" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "geolocation" : { + "description" : "Geolocation information", + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "box" : { + "type" : "string" + }, + "place" : { + "type" : "string" + }, + "point" : { + "type" : "string" + } + }, + "description" : "Geolocation information" + } + }, + "id" : { + "type" : "string", + "description" : "The OpenAIRE identifiers for this result" + }, + "instance" : { + "description" : "Each instance is one specific materialisation or version of the result. For example, you can have one result with three instance: one is the pre-print, one is the post-print, one is te published version", + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "accessright" : { + "type" : "object", + "properties" : { + "code" : { + "type" : "string", + "description" : "COAR access mode code: http://vocabularies.coar-repositories.org/documentation/access_rights/" + }, + "label" : { + "type" : "string", + "description" : "Label for the access mode" + }, + "openAccessRoute" : { + "type" : "string", + "enum" : [ "gold", "green", "hybrid", "bronze" ] + }, + "scheme" : { + "type" : "string", + "description" : "Scheme of reference for access right code. Always set to COAR access rights vocabulary: http://vocabularies.coar-repositories.org/documentation/access_rights/" + } + }, + "description" : "The accessRights for this materialization of the result" + }, + "alternateIdentifier" : { + "description" : "All the identifiers other than pids forged by an authorithy for the pid type (i.e. Crossref for DOIs", + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "scheme" : { + "type" : "string", + "description" : "The scheme of the identifier. It can be a persistent identifier (i.e. doi). If it is present in the alternate identifiers it means it has not been forged by an authority for that pid. For example we collect metadata from an institutional repository that provides as identifier for the result also the doi" + }, + "value" : { + "type" : "string", + "description" : "The value expressed in the scheme" + } + }, + "description" : "All the identifiers other than pids forged by an authorithy for the pid type (i.e. Crossref for DOIs" + } + }, + "articleprocessingcharge" : { + "type" : "object", + "properties" : { + "amount" : { + "type" : "string" + }, + "currency" : { + "type" : "string" + } + }, + "description" : "The money spent to make this book or article available in Open Access. Source for this information is the OpenAPC initiative." + }, + "license" : { + "type" : "string" + }, + "measures" : { + "description" : "Measures computed for this instance, for example Bip!Finder ones", + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "key" : { + "type" : "string", + "description" : "The measure (i.e. popularity)" + }, + "value" : { + "type" : "string", + "description" : "The value for that measure" + } + }, + "description" : "Measures computed for this instance, for example Bip!Finder ones" + } + }, + "pid" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/ResultPid" + } + }, + "publicationdate" : { + "type" : "string", + "description" : "Date of the research product" + }, + "refereed" : { + "type" : "string", + "description" : "If this instance has been peer-reviewed or not. Allowed values are peerReviewed, nonPeerReviewed, UNKNOWN (as defined in https://api.openaire.eu/vocabularies/dnet:review_levels)" + }, + "type" : { + "type" : "string", + "description" : "The specific sub-type of this instance (see https://api.openaire.eu/vocabularies/dnet:result_typologies following the links)" + }, + "url" : { + "description" : "URLs to the instance. They may link to the actual full-text or to the landing page at the hosting source. ", + "type" : "array", + "items" : { + "type" : "string", + "description" : "URLs to the instance. They may link to the actual full-text or to the landing page at the hosting source. " + } + } + }, + "description" : "Each instance is one specific materialisation or version of the result. For example, you can have one result with three instance: one is the pre-print, one is the post-print, one is te published version" + } + }, + "language" : { + "type" : "object", + "properties" : { + "code" : { + "type" : "string", + "description" : "alpha-3/ISO 639-2 code of the language" + }, + "label" : { + "type" : "string", + "description" : "Language label in English" + } + } + }, + "lastupdatetimestamp" : { + "type" : "integer", + "description" : "Timestamp of last update of the record in OpenAIRE" + }, + "maintitle" : { + "type" : "string", + "description" : "A name or title by which a scientific result is known. May be the title of a publication, of a dataset or the name of a piece of software." + }, + "originalId" : { + "description" : "Identifiers of the record at the original sources", + "type" : "array", + "items" : { + "type" : "string", + "description" : "Identifiers of the record at the original sources" + } + }, + "pid" : { + "description" : "Persistent identifiers of the result", + "type" : "array", + "items" : { + "allOf" : [ { + "$ref" : "#/definitions/ResultPid" + }, { + "description" : "Persistent identifiers of the result" + } ] + } + }, + "programmingLanguage" : { + "type" : "string", + "description" : "Only for results with type 'software': the programming language" + }, + "publicationdate" : { + "type" : "string", + "description" : "Main date of the research product: typically the publication or issued date. In case of a research result with different versions with different dates, the date of the result is selected as the most frequent well-formatted date. If not available, then the most recent and complete date among those that are well-formatted. For statistics, the year is extracted and the result is counted only among the result of that year. Example: Pre-print date: 2019-02-03, Article date provided by repository: 2020-02, Article date provided by Crossref: 2020, OpenAIRE will set as date 2019-02-03, because it’s the most recent among the complete and well-formed dates. If then the repository updates the metadata and set a complete date (e.g. 2020-02-12), then this will be the new date for the result because it becomes the most recent most complete date. However, if OpenAIRE then collects the pre-print from another repository with date 2019-02-03, then this will be the “winning date” because it becomes the most frequent well-formatted date." + }, + "publisher" : { + "type" : "string", + "description" : "The name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource." + }, + "size" : { + "type" : "string", + "description" : "Only for results with type 'dataset': the declared size of the dataset" + }, + "source" : { + "description" : "See definition of Dublin Core field dc:source", + "type" : "array", + "items" : { + "type" : "string", + "description" : "See definition of Dublin Core field dc:source" + } + }, + "subjects" : { + "description" : "Keywords associated to the result", + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "provenance" : { + "allOf" : [ { + "$ref" : "#/definitions/Provenance" + }, { + "description" : "Why this subject is associated to the result" + } ] + }, + "subject" : { + "type" : "object", + "properties" : { + "scheme" : { + "type" : "string", + "description" : "OpenAIRE subject classification scheme (https://api.openaire.eu/vocabularies/dnet:subject_classification_typologies)." + }, + "value" : { + "type" : "string", + "description" : "The value for the subject in the selected scheme. When the scheme is 'keyword', it means that the subject is free-text (i.e. not a term from a controlled vocabulary)." + } + } + } + }, + "description" : "Keywords associated to the result" + } + }, + "subtitle" : { + "type" : "string", + "description" : "Explanatory or alternative name by which a scientific result is known." + }, + "tool" : { + "description" : "Only for results with type 'other': tool useful for the interpretation and/or re-used of the research product", + "type" : "array", + "items" : { + "type" : "string", + "description" : "Only for results with type 'other': tool useful for the interpretation and/or re-used of the research product" + } + }, + "type" : { + "type" : "string", + "description" : "Type of the result: one of 'publication', 'dataset', 'software', 'other' (see also https://api.openaire.eu/vocabularies/dnet:result_typologies)" + }, + "version" : { + "type" : "string", + "description" : "Version of the result" + } + } +} diff --git a/dump-schema/src/main/resources/jsonschemas/organization_schema.json b/dump-schema/src/main/resources/jsonschemas/organization_schema.json new file mode 100644 index 0000000..16afa38 --- /dev/null +++ b/dump-schema/src/main/resources/jsonschemas/organization_schema.json @@ -0,0 +1,57 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "alternativenames": { + "description": "Alternative names that identify the organisation", + "type": "array", + "items": { + "type": "string" + } + }, + "country": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The organisation country code" + }, + "label": { + "type": "string", + "description": "The organisation country label" + } + }, + "description": "The country of the organisation" + }, + "id": { + "type": "string", + "description": "The OpenAIRE id for the organisation" + }, + "legalname": { + "type": "string" + }, + "legalshortname": { + "type": "string" + }, + "pid": { + "description": "Persistent identifiers for the organisation i.e. isni 0000000090326370", + "type": "array", + "items": { + "type": "object", + "properties": { + "scheme": { + "type": "string", + "description": "The scheme of the identifier (i.e. isni)" + }, + "value": { + "type": "string", + "description": "the value in the schema (i.e. 0000000090326370)" + } + } + } + }, + "websiteurl": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/dump-schema/src/main/resources/jsonschemas/project_schema.json b/dump-schema/src/main/resources/jsonschemas/project_schema.json new file mode 100644 index 0000000..c811872 --- /dev/null +++ b/dump-schema/src/main/resources/jsonschemas/project_schema.json @@ -0,0 +1,119 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "acronym": { + "type": "string" + }, + "callidentifier": { + "type": "string" + }, + "code": { + "type": "string", + "description": "The grant agreement number" + }, + "enddate": { + "type": "string" + }, + "funding": { + "description": "Funding information for the project", + "type": "array", + "items": { + "type": "object", + "properties": { + "funding_stream": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Description of the funding stream" + }, + "id": { + "type": "string", + "description": "Id of the funding stream" + } + } + }, + "jurisdiction": { + "type": "string", + "description": "The jurisdiction of the funder (i.e. EU)" + }, + "name": { + "type": "string", + "description": "The name of the funder (European Commission)" + }, + "shortName": { + "type": "string", + "description": "The short name of the funder (EC)" + } + } + } + }, + "granted": { + "type": "object", + "properties": { + "currency": { + "type": "string", + "description": "The currency of the granted amount (e.g. EUR)" + }, + "fundedamount": { + "type": "number", + "description": "The funded amount" + }, + "totalcost": { + "type": "number", + "description": "The total cost of the project" + } + }, + "description": "The money granted to the project" + }, + "h2020programme": { + "description": "The h2020 programme funding the project", + "type": "array", + "items": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code of the programme" + }, + "description": { + "type": "string", + "description": "The description of the programme" + } + } + } + }, + "id": { + "type": "string", + "description": "OpenAIRE id for the project" + }, + "keywords": { + "type": "string" + }, + "openaccessmandatefordataset": { + "type": "boolean" + }, + "openaccessmandateforpublications": { + "type": "boolean" + }, + "startdate": { + "type": "string" + }, + "subject": { + "type": "array", + "items": { + "type": "string" + } + }, + "summary": { + "type": "string" + }, + "title": { + "type": "string" + }, + "websiteurl": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/dump-schema/src/main/resources/jsonschemas/relation_schema.json b/dump-schema/src/main/resources/jsonschemas/relation_schema.json new file mode 100644 index 0000000..98134a0 --- /dev/null +++ b/dump-schema/src/main/resources/jsonschemas/relation_schema.json @@ -0,0 +1,68 @@ +{ + "$schema":"http://json-schema.org/draft-07/schema#", + "definitions": { + "Node": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The OpenAIRE id of the entity" + }, + "type": { + "type": "string", + "description": "The type of the entity (i.e. organisation)" + } + } + } + }, + "type":"object", + "properties": { + "provenance": { + "type": "object", + "properties": { + "provenance": { + "type": "string", + "description": "The reason why OpenAIRE holds the relation " + }, + "trust": { + "type": "string", + "description": "The trust of the relation in the range of [0,1]. Where greater the number, more the trust. Harvested relationships have typically a high trust (0.9). The trust of inferred relationship is calculated by the inference algorithm that generated them, as described in https://graph.openaire.eu/about#architecture (Enrichment --> Mining)" + } + } + }, + "reltype": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The semantics of the relation (i.e. isAuthorInstitutionOf). " + }, + "type": { + "type": "string", + "description": "the type of the relation (i.e. affiliation)" + } + }, + "description": "To represent the semantics of a relation between two entities" + }, + "source": { + "allOf": [ + {"$ref": "#/definitions/Node"}, + {"description": "The node source in the relation"} + ] + }, + "target": { + "allOf": [ + {"$ref": "#/definitions/Node"}, + {"description": "The node target in the relation"} + ] + }, + "validated":{ + "type":"boolean", + "description":"True if the relation is related to a project and it has been collected from an authoritative source (i.e. the funder)" + }, + "validationDate":{ + "type":"string", + "description":"The date when the relation was collected from OpenAIRE" + } + } +} \ No newline at end of file diff --git a/dump-schema/src/main/resources/jsonschemas/result_schema.json b/dump-schema/src/main/resources/jsonschemas/result_schema.json new file mode 100644 index 0000000..1a2e065 --- /dev/null +++ b/dump-schema/src/main/resources/jsonschemas/result_schema.json @@ -0,0 +1,448 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "ControlledField": { + "type": "object", + "properties": { + "scheme": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "description": "To represent the information described by a scheme and a value in that scheme (i.e. pid)" + }, + "Provenance": { + "type": "object", + "properties": { + "provenance": { + "type": "string", + "description": "The process that produced/provided the information" + }, + "trust": { + "type": "string" + } + }, + "description": "Indicates the process that produced (or provided) the information, and the trust associated to the information" + } + }, + "type": "object", + "properties": { + "author": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fullname": { + "type": "string" + }, + "name": { + "type": "string" + }, + "pid": { + "type": "object", + "properties": { + "id": { + "allOf": [ + {"$ref": "#/definitions/ControlledField"}, + {"description": "The author's id and scheme. OpenAIRE currently supports 'ORCID'"} + ] + }, + "provenance": { + "allOf": [ + {"$ref": "#/definitions/Provenance"}, + {"description": "Provenance of author's pid"} + ] + } + } + }, + "rank": { + "type": "integer" + }, + "surname": { + "type": "string" + } + } + } + }, + "bestaccessright":{ + "type":"object", + "properties":{ + "code": { + "type": "string", + "description": "COAR access mode code: http://vocabularies.coar-repositories.org/documentation/access_rights/" + }, + "label": { + "type": "string", + "description": "Label for the access mode" + }, + "scheme": { + "type": "string", + "description": "Scheme of reference for access right code. Always set to COAR access rights vocabulary: http://vocabularies.coar-repositories.org/documentation/access_rights/" + } + } + }, + "codeRepositoryUrl": { + "type": "string", + "description": "Only for results with type 'software': the URL to the repository with the source code" + }, + "contactgroup": { + "description": "Only for results with type 'software': Information on the group responsible for providing further information regarding the resource", + "type": "array", + "items": { + "type": "string" + } + }, + "contactperson": { + "description": "Only for results with type 'software': Information on the person responsible for providing further information regarding the resource", + "type": "array", + "items": { + "type": "string" + } + }, + "container": { + "type": "object", + "properties": { + "conferencedate": { + "type": "string" + }, + "conferenceplace": { + "type": "string" + }, + "edition": { + "type": "string", + "description": "Edition of the journal or conference proceeding" + }, + "ep": { + "type": "string", + "description": "End page" + }, + "iss": { + "type": "string", + "description": "Journal issue" + }, + "issnLinking": { + "type": "string" + }, + "issnOnline": { + "type": "string" + }, + "issnPrinted": { + "type": "string" + }, + "name": { + "type": "string", + "description": "Name of the journal or conference" + }, + "sp": { + "type": "string", + "description": "start page" + }, + "vol": { + "type": "string" + } + }, + "description": "Container has information about the conference or journal where the result has been presented or published" + }, + "contributor": { + "type": "array", + "items": { + "type": "string", + "description": "Contributors for the result" + } + }, + "country": { + "type": "array", + "items": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "ISO 3166-1 alpha-2 country code" + }, + "label": { + "type": "string" + }, + "provenance": { + "allOf": [ + {"$ref": "#/definitions/Provenance"}, + {"description": "Why this result is associated to the country."} + ] + } + } + } + }, + "coverage": { + "type": "array", + "items": { + "type": "string" + } + }, + "dateofcollection": { + "type": "string", + "description": "When OpenAIRE collected the record the last time" + }, + "description": { + "type": "array", + "items": { + "type": "string" + } + }, + "documentationUrl": { + "description": "Only for results with type 'software': URL to the software documentation", + "type": "array", + "items": { + "type": "string" + } + }, + "embargoenddate": { + "type": "string", + "description": "Date when the embargo ends and this result turns Open Access" + }, + "format": { + "type": "array", + "items": { + "type": "string" + } + }, + "geolocation": { + "description": "Geolocation information", + "type": "array", + "items": { + "type": "object", + "properties": { + "box": { + "type": "string" + }, + "place": { + "type": "string" + }, + "point": { + "type": "string" + } + } + } + }, + "id": { + "type": "string", + "description": "OpenAIRE Identifier" + }, + "instance":{ + "description":"Each instance is one specific materialisation or version of the result. For example, you can have one result with three instance: one is the pre-print, one is the post-print, one is te published version", + "type":"array", + "items":{ + "type":"object", + "properties":{ + "accessright":{ + "type":"object", + "properties":{ + "code": { + "type": "string", + "description": "COAR access mode code: http://vocabularies.coar-repositories.org/documentation/access_rights/" + }, + "label": { + "type": "string", + "description": "Label for the access mode" + }, + "openAccessRoute":{ + "type":"string", + "enum":[ + "gold", + "green", + "hybrid", + "bronze" + ], + "description":"The type of OpenAccess applied to the result" + }, + "scheme": { + "type": "string", + "description": "Scheme of reference for access right code. Always set to COAR access rights vocabulary: http://vocabularies.coar-repositories.org/documentation/access_rights/" + } + } + }, + "alternateIdentifier":{ + "type":"array", + "items":{ + "allOf":[ + { + "$ref":"#/definitions/ControlledField" + }, + { + "description":"All the identifiers other than pids forged by an authorithy for the pid type (i.e. Crossref for DOIs" + } + ] + } + }, + "articleprocessingcharge":{ + "description": "The money spent to make this book or article available in Open Access. Source for this information is the OpenAPC initiative.", + "type":"object", + "properties":{ + "amount":{ + "type":"string" + }, + "currency":{ + "type":"string" + } + } + }, + "license":{ + "type":"string" + }, + "measures":{ + + "type":"array", + "items":{ + "type":"object", + "properties":{ + "key":{ + "type":"string", + "description":"The measure" + }, + "value":{ + "type":"string", + "description":"The value for the measure" + } + }, + "description":"Measures computed for this instance, for example Bip!Finder ones" + } + }, + "pid":{ + "description":"The set of persistent identifiers associated to this instance that have been collected from an authority for the pid type (i.e. Crossref/Datacite for doi)", + "type":"array", + "items":{ + "allOf":[ + { + "$ref":"#/definitions/ControlledField" + }, + { + "description":"The persistent identifier associated to the result" + } + ] + } + }, + "publicationdate":{ + "type":"string", + "description": "Date of the research product" + }, + "refereed":{ + "description": "If this instance has been peer-reviewed or not. Allowed values are peerReviewed, nonPeerReviewed, UNKNOWN (as defined in https://api.openaire.eu/vocabularies/dnet:review_levels)", + "type":"string" + }, + "type":{ + "type":"string", + "description":"The specific sub-type of this instance (see https://api.openaire.eu/vocabularies/dnet:result_typologies following the links)" + }, + "url":{ + "description":"URLs to the instance. They may link to the actual full-text or to the landing page at the hosting source. ", + "type":"array", + "items":{ + "type":"string" + } + } + } + } + }, + "language": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "alpha-3/ISO 639-2 code of the language" + }, + "label": { + "type": "string", + "description": "Language label in English" + } + } + }, + "lastupdatetimestamp": { + "type": "integer", + "description": "Timestamp of last update of the record in OpenAIRE" + }, + "maintitle": { + "type": "string", + "descriptio": "A name or title by which a scientific result is known. May be the title of a publication, of a dataset or the name of a piece of software." + }, + "subtitle": { + "type": "string", + "descriptio": "Explanatory or alternative name by which a scientific result is known." + }, + "originalId": { + "description": "Identifiers of the record at the original sources", + "type": "array", + "items": { + "type": "string" + } + }, + "pid": { + "description": "Persistent identifiers of the result", + "type": "array", + "items": { + "allOf": [ + {"$ref": "#/definitions/ControlledField"}, + {"description": "scheme: list of available schemes are at https://api.openaire.eu/vocabularies/dnet:pid_types, value: the PID of the result. Note: the result will have a pid associated only if it was collected from an authority for that pid type. For example a doi will be among the pids for one result if the result metadata were collected from Crossref or Datacite. In all the other cases, the doi will be present among the alteranteIdentifiers for the result "} + ] + } + }, + "programmingLanguage": { + "type": "string", + "description": "Only for results with type 'software': the programming language" + }, + "publicationdate": { + "type": "string", + "description": "Main date of the research product: typically the publication or issued date. In case of a research result with different versions with different dates, the date of the result is selected as the most frequent well-formatted date. If not available, then the most recent and complete date among those that are well-formatted. For statistics, the year is extracted and the result is counted only among the result of that year. Example: Pre-print date: 2019-02-03, Article date provided by repository: 2020-02, Article date provided by Crossref: 2020, OpenAIRE will set as date 2019-02-03, because it’s the most recent among the complete and well-formed dates. If then the repository updates the metadata and set a complete date (e.g. 2020-02-12), then this will be the new date for the result because it becomes the most recent most complete date. However, if OpenAIRE then collects the pre-print from another repository with date 2019-02-03, then this will be the “winning date” because it becomes the most frequent well-formatted date." + }, + "publisher": { + "type": "string", + "description": "The name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource." + }, + "size": { + "type": "string", + "description": "Only for results with type 'dataset': the declared size of the dataset" + }, + "source": { + "description": "See definition of Dublin Core field dc:source", + "type": "array", + "items": { + "type": "string" + } + }, + "subjects": { + "description": "Keywords associated to the result", + "type": "array", + "items": { + "type": "object", + "properties": { + "provenance": { + "allOf": [ + {"$ref": "#/definitions/Provenance"}, + {"description": "Why this subject is associated to the result"} + ] + }, + "subject": { + "allOf": [ + {"$ref": "#/definitions/ControlledField"}, + {"description": "OpenAIRE subject classification scheme (https://api.openaire.eu/vocabularies/dnet:subject_classification_typologies) and value. When the scheme is 'keyword', it means that the subject is free-text (i.e. not a term from a controlled vocabulary)."} + ] + } + } + } + }, + "tool": { + "description": "Only for results with type 'other': tool useful for the interpretation and/or re-used of the research product", + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "string", + "description": "Type of the result: one of 'publication', 'dataset', 'software', 'other' (see also https://api.openaire.eu/vocabularies/dnet:result_typologies)" + }, + "version": { + "type": "string", + "description": "Version of the result" + } + } +} \ No newline at end of file diff --git a/dump-schema/src/test/java/GenerateJsonSchema.java b/dump-schema/src/test/java/GenerateJsonSchema.java new file mode 100644 index 0000000..7fe8076 --- /dev/null +++ b/dump-schema/src/test/java/GenerateJsonSchema.java @@ -0,0 +1,71 @@ +import java.io.IOException; + +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.imifou.jsonschema.module.addon.AddonModule; +import com.github.victools.jsonschema.generator.*; + +import eu.dnetlib.dhp.ExecCreateSchemas; +import eu.dnetlib.dhp.eosc.model.EoscResult; +import eu.dnetlib.dhp.oa.model.graph.GraphResult; + +//@Disabled +class GenerateJsonSchema { + + @Test + void generateSchema() { + SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder(SchemaVersion.DRAFT_7, + OptionPreset.PLAIN_JSON) + .with(Option.SCHEMA_VERSION_INDICATOR) + .without(Option.NONPUBLIC_NONSTATIC_FIELDS_WITHOUT_GETTERS); + configBuilder.forFields().withDescriptionResolver(field -> "Description of " + field.getDeclaredName()); + SchemaGeneratorConfig config = configBuilder.build(); + SchemaGenerator generator = new SchemaGenerator(config); + JsonNode jsonSchema = generator.generateSchema(GraphResult.class); + + System.out.println(jsonSchema.toString()); + } + + @Test + void generateSchema2() { + + ObjectMapper objectMapper = new ObjectMapper(); + AddonModule module = new AddonModule(); + SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder(objectMapper, + SchemaVersion.DRAFT_7, OptionPreset.PLAIN_JSON) + .with(module) + .with(Option.SCHEMA_VERSION_INDICATOR) + .without(Option.NONPUBLIC_NONSTATIC_FIELDS_WITHOUT_GETTERS); + SchemaGeneratorConfig config = configBuilder.build(); + SchemaGenerator generator = new SchemaGenerator(config); + JsonNode jsonSchema = generator.generateSchema(GraphResult.class); + + System.out.println(jsonSchema.toString()); + } + + @Test + void generateSchema3() throws JsonProcessingException { + + ObjectMapper objectMapper = new ObjectMapper(); + AddonModule module = new AddonModule(); + SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder(objectMapper, + SchemaVersion.DRAFT_7, OptionPreset.PLAIN_JSON) + .with(module) + .with(Option.SCHEMA_VERSION_INDICATOR) + .without(Option.NONPUBLIC_NONSTATIC_FIELDS_WITHOUT_GETTERS); + SchemaGeneratorConfig config = configBuilder.build(); + SchemaGenerator generator = new SchemaGenerator(config); + JsonNode jsonSchema = generator.generateSchema(EoscResult.class); + + System.out.println(new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(jsonSchema)); + } + + @Test + void generateJsonSchema3() throws IOException { + + ExecCreateSchemas.main(new String[] {}); + } +} diff --git a/dump/pom.xml b/dump/pom.xml new file mode 100644 index 0000000..bf70e61 --- /dev/null +++ b/dump/pom.xml @@ -0,0 +1,61 @@ + + + + dhp-graph-dump + eu.dnetlib.dhp + 1.2.5-SNAPSHOT + + 4.0.0 + + dump + + + 8 + 8 + + + + + + org.apache.spark + spark-core_2.11 + + + + org.apache.spark + spark-sql_2.11 + + + + dom4j + dom4j + + + + jaxen + jaxen + + + + eu.dnetlib.dhp + dhp-schemas + + + + + eu.dnetlib.dhp + dhp-common + ${project.version} + + + eu.dnetlib.dhp + dump-schema + 1.2.5-SNAPSHOT + + + + + + \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/Constants.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/Constants.java similarity index 99% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/Constants.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/Constants.java index 6116763..06f7d79 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/Constants.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/Constants.java @@ -43,7 +43,7 @@ public class Constants { } public enum DUMPTYPE { - COMPLETE("complete"), COMMUNITY("community"), FUNDER("funder"); + COMPLETE("complete"), COMMUNITY("community"), FUNDER("funder"), EOSC("eosc"); private final String type; diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/DumpProducts.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/DumpProducts.java similarity index 85% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/DumpProducts.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/DumpProducts.java index a714cea..a8aa703 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/DumpProducts.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/DumpProducts.java @@ -18,8 +18,12 @@ import org.apache.spark.sql.SaveMode; import org.apache.spark.sql.SparkSession; import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap; +import eu.dnetlib.dhp.oa.graph.dump.exceptions.CardinalityTooHighException; import eu.dnetlib.dhp.oa.graph.dump.exceptions.NoAvailableEntityTypeException; -import eu.dnetlib.dhp.schema.oaf.*; +import eu.dnetlib.dhp.oa.model.Result; +import eu.dnetlib.dhp.schema.oaf.Context; +import eu.dnetlib.dhp.schema.oaf.DataInfo; +import eu.dnetlib.dhp.schema.oaf.OafEntity; /** * It fires the execution of the actual dump for result entities. If the dump is for RC/RI products its checks for each @@ -29,7 +33,7 @@ public class DumpProducts implements Serializable { public void run(Boolean isSparkSessionManaged, String inputPath, String outputPath, String communityMapPath, Class inputClazz, - Class outputClazz, + Class outputClazz, String dumpType) { SparkConf conf = new SparkConf(); @@ -44,7 +48,7 @@ public class DumpProducts implements Serializable { }); } - public static void execDump( + public static void execDump( SparkSession spark, String inputPath, String outputPath, @@ -66,9 +70,9 @@ public class DumpProducts implements Serializable { } - private static O execMap(I value, + private static O execMap(I value, CommunityMap communityMap, - String dumpType) throws NoAvailableEntityTypeException { + String dumpType) throws NoAvailableEntityTypeException, CardinalityTooHighException { Optional odInfo = Optional.ofNullable(value.getDataInfo()); if (odInfo.isPresent()) { diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/MakeTar.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/MakeTar.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/MakeTar.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/MakeTar.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/QueryInformationSystem.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/QueryInformationSystem.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/QueryInformationSystem.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/QueryInformationSystem.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/ResultMapper.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/ResultMapper.java similarity index 91% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/ResultMapper.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/ResultMapper.java index aad3a87..9d28a1d 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/ResultMapper.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/ResultMapper.java @@ -7,31 +7,37 @@ import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; +import eu.dnetlib.dhp.eosc.model.EoscInteroperabilityFramework; +import eu.dnetlib.dhp.eosc.model.EoscResult; +import eu.dnetlib.dhp.oa.graph.dump.exceptions.CardinalityTooHighException; import eu.dnetlib.dhp.oa.graph.dump.exceptions.NoAvailableEntityTypeException; +import eu.dnetlib.dhp.oa.model.*; +import eu.dnetlib.dhp.oa.model.AccessRight; +import eu.dnetlib.dhp.oa.model.Author; +import eu.dnetlib.dhp.oa.model.GeoLocation; +import eu.dnetlib.dhp.oa.model.Instance; +import eu.dnetlib.dhp.oa.model.Measure; +import eu.dnetlib.dhp.oa.model.OpenAccessRoute; +import eu.dnetlib.dhp.oa.model.Result; +import eu.dnetlib.dhp.oa.model.community.CfHbKeyValue; +import eu.dnetlib.dhp.oa.model.community.CommunityInstance; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.community.Context; +import eu.dnetlib.dhp.oa.model.graph.GraphResult; import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.dump.oaf.*; -import eu.dnetlib.dhp.schema.dump.oaf.AccessRight; -import eu.dnetlib.dhp.schema.dump.oaf.Author; -import eu.dnetlib.dhp.schema.dump.oaf.GeoLocation; -import eu.dnetlib.dhp.schema.dump.oaf.Instance; -import eu.dnetlib.dhp.schema.dump.oaf.Measure; -import eu.dnetlib.dhp.schema.dump.oaf.OpenAccessRoute; -import eu.dnetlib.dhp.schema.dump.oaf.Result; -import eu.dnetlib.dhp.schema.dump.oaf.community.CfHbKeyValue; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityInstance; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; -import eu.dnetlib.dhp.schema.dump.oaf.community.Context; -import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; import eu.dnetlib.dhp.schema.oaf.*; public class ResultMapper implements Serializable { public static Result map( - E in, Map communityMap, String dumpType) throws NoAvailableEntityTypeException { + E in, Map communityMap, String dumpType) + throws NoAvailableEntityTypeException, CardinalityTooHighException { Result out; if (Constants.DUMPTYPE.COMPLETE.getType().equals(dumpType)) { out = new GraphResult(); + } else if (Constants.DUMPTYPE.EOSC.getType().equals(dumpType)) { + out = new EoscResult(); } else { out = new CommunityResult(); } @@ -223,7 +229,23 @@ public class ResultMapper implements Serializable { out.setType(input.getResulttype().getClassid()); - if (!Constants.DUMPTYPE.COMPLETE.getType().equals(dumpType)) { + if (Constants.DUMPTYPE.EOSC.getType().equals(dumpType)) { + if (Optional.ofNullable(input.getEoscifguidelines()).isPresent()) { + List gei = input.getEoscifguidelines(); + if (gei.size() > 1) { + throw new CardinalityTooHighException( + "EOSC IF in the result has cardinality greater than one. Change dump!"); + } + if (gei.size() == 1) { + EoscInteroperabilityFramework eif = new EoscInteroperabilityFramework(); + eif.setCode(gei.get(0).getCode()); + eif.setLabel(gei.get(0).getLabel()); + eif.setUrl(gei.get(0).getUrl()); + eif.setSemanticRelation(gei.get(0).getSemanticRelation()); + ((EoscResult) out).setEoscIF(eif); + } + } + } else if (!Constants.DUMPTYPE.COMPLETE.getType().equals(dumpType)) { ((CommunityResult) out) .setCollectedfrom( input diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/SaveCommunityMap.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/SaveCommunityMap.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/SaveCommunityMap.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/SaveCommunityMap.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/SendToZenodoHDFS.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/SendToZenodoHDFS.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/SendToZenodoHDFS.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/SendToZenodoHDFS.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/Utils.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/Utils.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/Utils.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/Utils.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/CommunityMap.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/CommunityMap.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/CommunityMap.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/CommunityMap.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/CommunitySplit.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/CommunitySplit.java similarity index 95% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/CommunitySplit.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/CommunitySplit.java index ee6341f..647f1fe 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/CommunitySplit.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/CommunitySplit.java @@ -14,8 +14,8 @@ import org.apache.spark.sql.SaveMode; import org.apache.spark.sql.SparkSession; import eu.dnetlib.dhp.oa.graph.dump.Utils; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; -import eu.dnetlib.dhp.schema.dump.oaf.community.Context; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.community.Context; /** * This class splits the dumped results according to the research community - research initiative/infrastructure they diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/ResultProject.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/ResultProject.java similarity index 90% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/ResultProject.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/ResultProject.java index 300af62..599393a 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/ResultProject.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/ResultProject.java @@ -4,7 +4,7 @@ package eu.dnetlib.dhp.oa.graph.dump.community; import java.io.Serializable; import java.util.List; -import eu.dnetlib.dhp.schema.dump.oaf.community.Project; +import eu.dnetlib.dhp.oa.model.community.Project; public class ResultProject implements Serializable { private String resultId; diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkDumpCommunityProducts.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkDumpCommunityProducts.java similarity index 96% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkDumpCommunityProducts.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkDumpCommunityProducts.java index 7ab8a75..052df7b 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkDumpCommunityProducts.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkDumpCommunityProducts.java @@ -10,7 +10,7 @@ import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.DumpProducts; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; import eu.dnetlib.dhp.schema.oaf.Result; /** diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkPrepareResultProject.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkPrepareResultProject.java similarity index 96% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkPrepareResultProject.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkPrepareResultProject.java index 410feea..079e708 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkPrepareResultProject.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkPrepareResultProject.java @@ -27,11 +27,11 @@ import org.xml.sax.SAXException; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Utils; +import eu.dnetlib.dhp.oa.model.Provenance; +import eu.dnetlib.dhp.oa.model.community.Funder; +import eu.dnetlib.dhp.oa.model.community.Project; +import eu.dnetlib.dhp.oa.model.community.Validated; import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.dump.oaf.Provenance; -import eu.dnetlib.dhp.schema.dump.oaf.community.Funder; -import eu.dnetlib.dhp.schema.dump.oaf.community.Project; -import eu.dnetlib.dhp.schema.dump.oaf.community.Validated; import eu.dnetlib.dhp.schema.oaf.DataInfo; import eu.dnetlib.dhp.schema.oaf.Field; import eu.dnetlib.dhp.schema.oaf.Relation; diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkSplitForCommunity.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkSplitForCommunity.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkSplitForCommunity.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkSplitForCommunity.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkUpdateProjectInfo.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkUpdateProjectInfo.java similarity index 97% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkUpdateProjectInfo.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkUpdateProjectInfo.java index 39ae320..706f513 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkUpdateProjectInfo.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/community/SparkUpdateProjectInfo.java @@ -20,7 +20,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Utils; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; import scala.Tuple2; public class SparkUpdateProjectInfo implements Serializable { diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Constants.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Constants.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Constants.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Constants.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/ContextInfo.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/ContextInfo.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/ContextInfo.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/ContextInfo.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextEntities.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextEntities.java similarity index 98% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextEntities.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextEntities.java index c422c3b..0356bd4 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextEntities.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextEntities.java @@ -21,7 +21,7 @@ import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Utils; -import eu.dnetlib.dhp.schema.dump.oaf.graph.ResearchInitiative; +import eu.dnetlib.dhp.oa.model.graph.ResearchInitiative; import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException; /** diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextRelation.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextRelation.java similarity index 98% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextRelation.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextRelation.java index 03f53de..3706529 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextRelation.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateContextRelation.java @@ -23,8 +23,8 @@ import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Utils; import eu.dnetlib.dhp.oa.graph.dump.exceptions.MyRuntimeException; +import eu.dnetlib.dhp.oa.model.graph.*; import eu.dnetlib.dhp.schema.common.ModelSupport; -import eu.dnetlib.dhp.schema.dump.oaf.graph.*; import eu.dnetlib.dhp.schema.oaf.Datasource; import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException; diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpGraphEntities.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpGraphEntities.java similarity index 98% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpGraphEntities.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpGraphEntities.java index c9de866..43a569a 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpGraphEntities.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpGraphEntities.java @@ -21,11 +21,11 @@ import org.dom4j.io.SAXReader; import eu.dnetlib.dhp.oa.graph.dump.DumpProducts; import eu.dnetlib.dhp.oa.graph.dump.Utils; +import eu.dnetlib.dhp.oa.model.*; +import eu.dnetlib.dhp.oa.model.graph.*; +import eu.dnetlib.dhp.oa.model.graph.Funder; +import eu.dnetlib.dhp.oa.model.graph.Project; import eu.dnetlib.dhp.schema.common.ModelSupport; -import eu.dnetlib.dhp.schema.dump.oaf.*; -import eu.dnetlib.dhp.schema.dump.oaf.graph.*; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Funder; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Project; import eu.dnetlib.dhp.schema.oaf.Field; import eu.dnetlib.dhp.schema.oaf.Journal; import eu.dnetlib.dhp.schema.oaf.OafEntity; @@ -461,7 +461,7 @@ public class DumpGraphEntities implements Serializable { .json(outputPath); } - private static eu.dnetlib.dhp.schema.dump.oaf.graph.Organization mapOrganization( + private static eu.dnetlib.dhp.oa.model.graph.Organization mapOrganization( eu.dnetlib.dhp.schema.oaf.Organization org) { if (org.getDataInfo().getDeletedbyinference()) return null; diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Extractor.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Extractor.java similarity index 96% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Extractor.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Extractor.java index cb4e42a..fa55fd1 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Extractor.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Extractor.java @@ -14,11 +14,11 @@ import org.apache.spark.sql.SparkSession; import eu.dnetlib.dhp.oa.graph.dump.Utils; import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap; +import eu.dnetlib.dhp.oa.model.Provenance; +import eu.dnetlib.dhp.oa.model.graph.Node; +import eu.dnetlib.dhp.oa.model.graph.RelType; +import eu.dnetlib.dhp.oa.model.graph.Relation; import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.dump.oaf.Provenance; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Node; -import eu.dnetlib.dhp.schema.dump.oaf.graph.RelType; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Relation; import eu.dnetlib.dhp.schema.oaf.KeyValue; import eu.dnetlib.dhp.schema.oaf.Result; diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/MergedRels.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/MergedRels.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/MergedRels.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/MergedRels.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/OrganizationMap.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/OrganizationMap.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/OrganizationMap.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/OrganizationMap.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Process.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Process.java similarity index 90% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Process.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Process.java index e1cb0e7..07511a9 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Process.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/Process.java @@ -10,10 +10,10 @@ import org.apache.commons.lang3.StringUtils; import eu.dnetlib.dhp.oa.graph.dump.Constants; import eu.dnetlib.dhp.oa.graph.dump.Utils; import eu.dnetlib.dhp.oa.graph.dump.exceptions.MyRuntimeException; +import eu.dnetlib.dhp.oa.model.Provenance; +import eu.dnetlib.dhp.oa.model.graph.*; import eu.dnetlib.dhp.schema.common.ModelConstants; import eu.dnetlib.dhp.schema.common.ModelSupport; -import eu.dnetlib.dhp.schema.dump.oaf.Provenance; -import eu.dnetlib.dhp.schema.dump.oaf.graph.*; /** * It process the ContextInfo information to produce a new Context Entity or a set of Relations between the generic @@ -65,7 +65,7 @@ public class Process implements Serializable { .newInstance( Node .newInstance( - contextId, eu.dnetlib.dhp.schema.dump.oaf.graph.Constants.CONTEXT_ENTITY), + contextId, eu.dnetlib.dhp.oa.model.graph.Constants.CONTEXT_ENTITY), Node.newInstance(ds, nodeType), RelType.newInstance(ModelConstants.IS_RELATED_TO, ModelConstants.RELATIONSHIP), Provenance @@ -80,7 +80,7 @@ public class Process implements Serializable { Node.newInstance(ds, nodeType), Node .newInstance( - contextId, eu.dnetlib.dhp.schema.dump.oaf.graph.Constants.CONTEXT_ENTITY), + contextId, eu.dnetlib.dhp.oa.model.graph.Constants.CONTEXT_ENTITY), RelType.newInstance(ModelConstants.IS_RELATED_TO, ModelConstants.RELATIONSHIP), Provenance .newInstance( diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/QueryInformationSystem.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/QueryInformationSystem.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/QueryInformationSystem.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/QueryInformationSystem.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkCollectAndSave.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkCollectAndSave.java similarity index 97% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkCollectAndSave.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkCollectAndSave.java index 1c98ea6..c89d5ca 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkCollectAndSave.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkCollectAndSave.java @@ -16,8 +16,8 @@ import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Utils; -import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Relation; +import eu.dnetlib.dhp.oa.model.graph.GraphResult; +import eu.dnetlib.dhp.oa.model.graph.Relation; /** * Reads all the entities of the same type (Relation / Results) and saves them in the same folder diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkDumpEntitiesJob.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkDumpEntitiesJob.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkDumpEntitiesJob.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkDumpEntitiesJob.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkDumpRelationJob.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkDumpRelationJob.java similarity index 90% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkDumpRelationJob.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkDumpRelationJob.java index e7880fe..1c99505 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkDumpRelationJob.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkDumpRelationJob.java @@ -22,10 +22,10 @@ import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Utils; +import eu.dnetlib.dhp.oa.model.Provenance; +import eu.dnetlib.dhp.oa.model.graph.Node; +import eu.dnetlib.dhp.oa.model.graph.RelType; import eu.dnetlib.dhp.schema.common.ModelSupport; -import eu.dnetlib.dhp.schema.dump.oaf.Provenance; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Node; -import eu.dnetlib.dhp.schema.dump.oaf.graph.RelType; import eu.dnetlib.dhp.schema.oaf.DataInfo; import eu.dnetlib.dhp.schema.oaf.Relation; @@ -81,8 +81,8 @@ public class SparkDumpRelationJob implements Serializable { Dataset relations = Utils.readPath(spark, inputPath, Relation.class); relations .filter((FilterFunction) r -> !removeSet.contains(r.getRelClass())) - .map((MapFunction) relation -> { - eu.dnetlib.dhp.schema.dump.oaf.graph.Relation relNew = new eu.dnetlib.dhp.schema.dump.oaf.graph.Relation(); + .map((MapFunction) relation -> { + eu.dnetlib.dhp.oa.model.graph.Relation relNew = new eu.dnetlib.dhp.oa.model.graph.Relation(); relNew .setSource( Node @@ -124,7 +124,7 @@ public class SparkDumpRelationJob implements Serializable { return relNew; - }, Encoders.bean(eu.dnetlib.dhp.schema.dump.oaf.graph.Relation.class)) + }, Encoders.bean(eu.dnetlib.dhp.oa.model.graph.Relation.class)) .write() .option("compression", "gzip") .mode(SaveMode.Overwrite) diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkExtractRelationFromEntities.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkExtractRelationFromEntities.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkExtractRelationFromEntities.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkExtractRelationFromEntities.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkOrganizationRelation.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkOrganizationRelation.java similarity index 89% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkOrganizationRelation.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkOrganizationRelation.java index 270e8a9..d0ae79d 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkOrganizationRelation.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkOrganizationRelation.java @@ -23,11 +23,11 @@ import com.google.gson.Gson; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Utils; import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap; +import eu.dnetlib.dhp.oa.model.Provenance; +import eu.dnetlib.dhp.oa.model.graph.Node; +import eu.dnetlib.dhp.oa.model.graph.RelType; import eu.dnetlib.dhp.schema.common.ModelConstants; import eu.dnetlib.dhp.schema.common.ModelSupport; -import eu.dnetlib.dhp.schema.dump.oaf.Provenance; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Node; -import eu.dnetlib.dhp.schema.dump.oaf.graph.RelType; import eu.dnetlib.dhp.schema.oaf.Relation; /** @@ -89,7 +89,7 @@ public class SparkOrganizationRelation implements Serializable { relationDataset.createOrReplaceTempView("relation"); - List relList = new ArrayList<>(); + List relList = new ArrayList<>(); Dataset mergedRelsDataset = spark .sql( @@ -122,7 +122,7 @@ public class SparkOrganizationRelation implements Serializable { })); spark - .createDataset(relList, Encoders.bean(eu.dnetlib.dhp.schema.dump.oaf.graph.Relation.class)) + .createDataset(relList, Encoders.bean(eu.dnetlib.dhp.oa.model.graph.Relation.class)) .write() .mode(SaveMode.Overwrite) .option("compression", "gzip") @@ -131,7 +131,7 @@ public class SparkOrganizationRelation implements Serializable { @NotNull private static Consumer getMergedRelsConsumer(OrganizationMap organizationMap, - List relList, CommunityMap communityMap) { + List relList, CommunityMap communityMap) { return mergedRels -> { String oId = mergedRels.getOrganizationId(); organizationMap @@ -146,14 +146,14 @@ public class SparkOrganizationRelation implements Serializable { }; } - private static void addRelations(List relList, String community, + private static void addRelations(List relList, String community, String organization) { String id = Utils.getContextId(community); log.info("create relation for organization: {}", organization); relList .add( - eu.dnetlib.dhp.schema.dump.oaf.graph.Relation + eu.dnetlib.dhp.oa.model.graph.Relation .newInstance( Node.newInstance(id, Constants.CONTEXT_ENTITY), Node.newInstance(organization, ModelSupport.idPrefixEntity.get(organization.substring(0, 2))), @@ -165,7 +165,7 @@ public class SparkOrganizationRelation implements Serializable { relList .add( - eu.dnetlib.dhp.schema.dump.oaf.graph.Relation + eu.dnetlib.dhp.oa.model.graph.Relation .newInstance( Node.newInstance(organization, ModelSupport.idPrefixEntity.get(organization.substring(0, 2))), Node.newInstance(id, Constants.CONTEXT_ENTITY), diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkSelectValidRelationsJob.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkSelectValidRelationsJob.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkSelectValidRelationsJob.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/complete/SparkSelectValidRelationsJob.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscRelationsStep2.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscRelationsStep2.java similarity index 85% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscRelationsStep2.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscRelationsStep2.java index 27dcaa0..72422f4 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscRelationsStep2.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscRelationsStep2.java @@ -6,12 +6,9 @@ import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; import java.io.Serializable; import java.util.Optional; -import javax.rmi.CORBA.Util; - import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; import org.apache.spark.api.java.function.FilterFunction; -import org.apache.spark.api.java.function.MapFunction; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.SparkSession; import org.slf4j.Logger; @@ -19,10 +16,8 @@ import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Utils; -import eu.dnetlib.dhp.oa.graph.dump.community.SparkPrepareResultProject; -import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; +import eu.dnetlib.dhp.oa.model.graph.GraphResult; import eu.dnetlib.dhp.schema.oaf.Relation; -import scala.Tuple2; /** * @author miriam.baglioni @@ -83,8 +78,6 @@ public class SelectEoscRelationsStep2 implements Serializable { (FilterFunction) r -> !r.getDataInfo().getDeletedbyinference() && !r.getDataInfo().getInvisible()); -// relations.joinWith(results, relations.col("source").equalTo(results.col("id")), "left") -// .map((MapFunction, eu.dnetlib.dhp.schema.dump.oaf.Relation) ); } } diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscResultsJobStep1.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscResultsJobStep1.java similarity index 98% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscResultsJobStep1.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscResultsJobStep1.java index b62bb54..75d7e7a 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscResultsJobStep1.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/eosc/SelectEoscResultsJobStep1.java @@ -20,7 +20,7 @@ import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Constants; import eu.dnetlib.dhp.oa.graph.dump.ResultMapper; import eu.dnetlib.dhp.oa.graph.dump.Utils; -import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; +import eu.dnetlib.dhp.oa.model.graph.GraphResult; import eu.dnetlib.dhp.schema.oaf.Result; /** diff --git a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/CardinalityTooHighException.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/CardinalityTooHighException.java new file mode 100644 index 0000000..0a4f25b --- /dev/null +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/CardinalityTooHighException.java @@ -0,0 +1,29 @@ + +package eu.dnetlib.dhp.oa.graph.dump.exceptions; + +public class CardinalityTooHighException extends Exception { + public CardinalityTooHighException() { + super(); + } + + public CardinalityTooHighException( + final String message, + final Throwable cause, + final boolean enableSuppression, + final boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + public CardinalityTooHighException(final String message, final Throwable cause) { + super(message, cause); + } + + public CardinalityTooHighException(final String message) { + super(message); + } + + public CardinalityTooHighException(final Throwable cause) { + super(cause); + } + +} diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/MyRuntimeException.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/MyRuntimeException.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/MyRuntimeException.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/MyRuntimeException.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/NoAvailableEntityTypeException.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/NoAvailableEntityTypeException.java similarity index 100% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/NoAvailableEntityTypeException.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/exceptions/NoAvailableEntityTypeException.java diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkDumpFunderResults.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkDumpFunderResults.java similarity index 96% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkDumpFunderResults.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkDumpFunderResults.java index d03abf6..a5b9575 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkDumpFunderResults.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkDumpFunderResults.java @@ -20,9 +20,9 @@ import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Utils; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; -import eu.dnetlib.dhp.schema.dump.oaf.community.Funder; -import eu.dnetlib.dhp.schema.dump.oaf.community.Project; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.community.Funder; +import eu.dnetlib.dhp.oa.model.community.Project; /** * Splits the dumped results by funder and stores them in a folder named as the funder nsp (for all the funders, but the EC diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkResultLinkedToProject.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkResultLinkedToProject.java similarity index 98% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkResultLinkedToProject.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkResultLinkedToProject.java index 3840b73..476ca09 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkResultLinkedToProject.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/funderresults/SparkResultLinkedToProject.java @@ -23,7 +23,7 @@ import eu.dnetlib.dhp.oa.graph.dump.ResultMapper; import eu.dnetlib.dhp.oa.graph.dump.Utils; import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap; import eu.dnetlib.dhp.oa.graph.dump.community.ResultProject; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; import eu.dnetlib.dhp.schema.oaf.Result; import scala.Tuple2; diff --git a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectsSubsetSparkJob.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectsSubsetSparkJob.java similarity index 98% rename from src/main/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectsSubsetSparkJob.java rename to dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectsSubsetSparkJob.java index 38eb3cb..fb94eba 100644 --- a/src/main/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectsSubsetSparkJob.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectsSubsetSparkJob.java @@ -19,7 +19,7 @@ import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.Utils; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Project; +import eu.dnetlib.dhp.oa.model.graph.Project; import scala.Tuple2; public class ProjectsSubsetSparkJob implements Serializable { diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_complete_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/eosc_select_result_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_complete_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/eosc_select_result_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/oozie_app/config-default.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/eoscdump/oozie_app/config-default.xml similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/oozie_app/config-default.xml rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/eoscdump/oozie_app/config-default.xml diff --git a/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/eoscdump/oozie_app/workflow.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/eoscdump/oozie_app/workflow.xml new file mode 100644 index 0000000..449d659 --- /dev/null +++ b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/eoscdump/oozie_app/workflow.xml @@ -0,0 +1,231 @@ + + + + sourcePath + the source path + + + outputPath + the output path + + + accessToken + the access token used for the deposition in Zenodo + + + connectionUrl + the connection url for Zenodo + + + metadata + the metadata associated to the deposition + + + depositionType + the type of deposition we want to perform. "new" for brand new deposition, "version" for a new version of a published deposition (in this case the concept record id must be provided), "upload" to upload content to an open deposition for which we already have the deposition id (in this case the deposition id should be provided) + + + conceptRecordId + for new version, the id of the record for the old deposition + + + depositionId + the depositionId of a deposition open that has to be added content + + + sparkDriverMemory + memory for driver process + + + sparkExecutorMemory + memory for individual executor + + + sparkExecutorCores + number of cores used by single executor + + + oozieActionShareLibForSpark2 + oozie action sharelib for spark 2.* + + + spark2ExtraListeners + com.cloudera.spark.lineage.NavigatorAppListener + spark 2.* extra listeners classname + + + spark2SqlQueryExecutionListeners + com.cloudera.spark.lineage.NavigatorQueryListener + spark 2.* sql query execution listeners classname + + + spark2YarnHistoryServerAddress + spark 2.* yarn history server address + + + spark2EventLogDir + spark 2.* event log dir location + + + + ${jobTracker} + ${nameNode} + + + mapreduce.job.queuename + ${queueName} + + + oozie.launcher.mapred.job.queue.name + ${oozieLauncherQueueName} + + + oozie.action.sharelib.for.spark + ${oozieActionShareLibForSpark2} + + + + + + Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}] + + + + + + + + + + + + yarn + cluster + Dump Publication For EOSC + eu.dnetlib.dhp.oa.graph.dump.eosc.SelectEoscResultsJobStep1 + dump-${projectVersion}.jar + + --executor-memory=${sparkExecutorMemory} + --executor-cores=${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + --conf spark.sql.warehouse.dir=${sparkSqlWarehouseDir} + + --sourcePath${sourcePath}/publication + --resultTableNameeu.dnetlib.dhp.schema.oaf.Publication + --outputPath${workingDir}/tar/publication + --communityMapPathnoneed + + + + + + + yarn + cluster + Dump Dataset For EOSC + eu.dnetlib.dhp.oa.graph.dump.eosc.SelectEoscResultsJobStep1 + dump-${projectVersion}.jar + + --executor-memory=${sparkExecutorMemory} + --executor-cores=${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + --conf spark.sql.warehouse.dir=${sparkSqlWarehouseDir} + + --sourcePath${sourcePath}/dataset + --resultTableNameeu.dnetlib.dhp.schema.oaf.Dataset + --outputPath${workingDir}/tar/dataset + --communityMapPathnoneed + + + + + + + yarn + cluster + Dump ORP For EOSC + eu.dnetlib.dhp.oa.graph.dump.eosc.SelectEoscResultsJobStep1 + dump-${projectVersion}.jar + + --executor-memory=${sparkExecutorMemory} + --executor-cores=${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + --conf spark.sql.warehouse.dir=${sparkSqlWarehouseDir} + + --sourcePath${sourcePath}/otherresearchproduct + --resultTableNameeu.dnetlib.dhp.schema.oaf.OtherResearchProduct + --outputPath${workingDir}/tar/otherresearchproduct + --communityMapPathnoneed + + + + + + + yarn + cluster + Dump Software For EOSC + eu.dnetlib.dhp.oa.graph.dump.eosc.SelectEoscResultsJobStep1 + dump-${projectVersion}.jar + + --executor-memory=${sparkExecutorMemory} + --executor-cores=${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + --conf spark.sql.warehouse.dir=${sparkSqlWarehouseDir} + + --sourcePath${sourcePath}/software + --resultTableNameeu.dnetlib.dhp.schema.oaf.Software + --outputPath${workingDir}/tar/software + --communityMapPathnoneed + + + + + + + + + + + eu.dnetlib.dhp.oa.graph.dump.MakeTar + --hdfsPath${outputPath} + --nameNode${nameNode} + --sourcePath${workingDir}/tar + + + + + + + + eu.dnetlib.dhp.oa.graph.dump.SendToZenodoHDFS + --hdfsPath${outputPath} + --nameNode${nameNode} + --accessToken${accessToken} + --connectionUrl${connectionUrl} + --metadata${metadata} + --conceptRecordId${conceptRecordId} + --depositionType${depositionType} + --depositionId${depositionId} + + + + + + \ No newline at end of file diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/funder_result_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/funder_result_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/funder_result_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/funder_result_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_cm_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_cm_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_cm_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_cm_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_collect_and_save.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_collect_and_save.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_collect_and_save.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_collect_and_save.json diff --git a/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_complete_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_complete_parameters.json new file mode 100644 index 0000000..a59a5ce --- /dev/null +++ b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_complete_parameters.json @@ -0,0 +1,30 @@ +[ + + { + "paramName":"s", + "paramLongName":"sourcePath", + "paramDescription": "the path of the sequencial file to read", + "paramRequired": true + }, + { + "paramName": "out", + "paramLongName": "outputPath", + "paramDescription": "the path used to store temporary output files", + "paramRequired": true + }, + { + "paramName": "ssm", + "paramLongName": "isSparkSessionManaged", + "paramDescription": "true if the spark session is managed, false otherwise", + "paramRequired": false + }, + { + "paramName":"tn", + "paramLongName":"resultTableName", + "paramDescription": "the name of the result table we are currently working on", + "paramRequired": true + } +] + + + diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_entity_parameter.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_entity_parameter.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_entity_parameter.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_entity_parameter.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_maketar_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_maketar_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_maketar_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_maketar_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_organization_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_organization_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_organization_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_organization_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameter_select_relation.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameter_select_relation.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameter_select_relation.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameter_select_relation.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameters_link_prj.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameters_link_prj.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameters_link_prj.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_parameters_link_prj.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_relationdump_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_relationdump_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_relationdump_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/input_relationdump_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_input_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_input_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_input_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_input_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_prep_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_prep_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_prep_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_prep_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_subset_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_subset_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_subset_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/project_subset_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/config-default.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/oozie_app/config-default.xml similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/config-default.xml rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/oozie_app/config-default.xml diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/oozie_app/workflow.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/oozie_app/workflow.xml similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/oozie_app/workflow.xml rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/oozie_app/workflow.xml diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/split_parameters.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/split_parameters.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/split_parameters.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/split_parameters.json diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/upload_zenodo.json b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/upload_zenodo.json similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/upload_zenodo.json rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/upload_zenodo.json diff --git a/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/config-default.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/config-default.xml new file mode 100644 index 0000000..d262cb6 --- /dev/null +++ b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/config-default.xml @@ -0,0 +1,30 @@ + + + jobTracker + yarnRM + + + nameNode + hdfs://nameservice1 + + + oozie.use.system.libpath + true + + + hiveMetastoreUris + thrift://iis-cdh5-test-m3.ocean.icm.edu.pl:9083 + + + hiveJdbcUrl + jdbc:hive2://iis-cdh5-test-m3.ocean.icm.edu.pl:10000 + + + hiveDbName + openaire + + + oozie.launcher.mapreduce.user.classpath.first + true + + diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/import.txt b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/import.txt similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/import.txt rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/import.txt diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/workflow.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/workflow.xml similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/workflow.xml rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/main/oozie_app/workflow.xml diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/community/oozie_app/config-default.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/community/oozie_app/config-default.xml similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/community/oozie_app/config-default.xml rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/community/oozie_app/config-default.xml diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/community/oozie_app/workflow.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/community/oozie_app/workflow.xml similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/community/oozie_app/workflow.xml rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/community/oozie_app/workflow.xml diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/complete/oozie_app/config-default.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/complete/oozie_app/config-default.xml similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/complete/oozie_app/config-default.xml rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/complete/oozie_app/config-default.xml diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/complete/oozie_app/workflow.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/complete/oozie_app/workflow.xml similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/complete/oozie_app/workflow.xml rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/complete/oozie_app/workflow.xml diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/funder/oozie_app/config-default.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/funder/oozie_app/config-default.xml similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/funder/oozie_app/config-default.xml rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/funder/oozie_app/config-default.xml diff --git a/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/funder/oozie_app/workflow.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/funder/oozie_app/workflow.xml similarity index 100% rename from src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/funder/oozie_app/workflow.xml rename to dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/wf/subworkflows/funder/oozie_app/workflow.xml diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/DumpJobTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/DumpJobTest.java similarity index 99% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/DumpJobTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/DumpJobTest.java index fede9d1..1c8eca5 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/DumpJobTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/DumpJobTest.java @@ -26,11 +26,11 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap; +import eu.dnetlib.dhp.oa.model.Instance; +import eu.dnetlib.dhp.oa.model.OpenAccessRoute; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.graph.GraphResult; import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.dump.oaf.Instance; -import eu.dnetlib.dhp.schema.dump.oaf.OpenAccessRoute; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; -import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; import eu.dnetlib.dhp.schema.oaf.Dataset; import eu.dnetlib.dhp.schema.oaf.OtherResearchProduct; import eu.dnetlib.dhp.schema.oaf.Publication; diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/GenerateJsonSchema.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/GenerateJsonSchema.java similarity index 93% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/GenerateJsonSchema.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/GenerateJsonSchema.java index 19f4faa..a23f184 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/GenerateJsonSchema.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/GenerateJsonSchema.java @@ -6,7 +6,7 @@ import org.junit.jupiter.api.Test; import com.fasterxml.jackson.databind.JsonNode; import com.github.victools.jsonschema.generator.*; -import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; +import eu.dnetlib.dhp.oa.model.graph.GraphResult; //@Disabled class GenerateJsonSchema { diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/MakeTarTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/MakeTarTest.java similarity index 100% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/MakeTarTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/MakeTarTest.java diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/PrepareResultProjectJobTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/PrepareResultProjectJobTest.java similarity index 100% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/PrepareResultProjectJobTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/PrepareResultProjectJobTest.java diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/QueryInformationSystemTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/QueryInformationSystemTest.java similarity index 100% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/QueryInformationSystemTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/QueryInformationSystemTest.java diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/SplitForCommunityTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/SplitForCommunityTest.java similarity index 98% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/SplitForCommunityTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/SplitForCommunityTest.java index 4209caa..a3506b5 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/SplitForCommunityTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/SplitForCommunityTest.java @@ -21,7 +21,7 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.dhp.oa.graph.dump.community.CommunitySplit; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; public class SplitForCommunityTest { diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/UpdateProjectInfoTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/UpdateProjectInfoTest.java similarity index 98% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/UpdateProjectInfoTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/UpdateProjectInfoTest.java index e8dc050..b352d5f 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/UpdateProjectInfoTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/UpdateProjectInfoTest.java @@ -25,8 +25,8 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.dhp.oa.graph.dump.community.SparkUpdateProjectInfo; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; -import eu.dnetlib.dhp.schema.dump.oaf.community.Project; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.community.Project; public class UpdateProjectInfoTest { diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/ZenodoUploadTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/ZenodoUploadTest.java similarity index 100% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/ZenodoUploadTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/ZenodoUploadTest.java diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateEntityTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateEntityTest.java similarity index 99% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateEntityTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateEntityTest.java index e7f91cb..37ba576 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateEntityTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateEntityTest.java @@ -27,8 +27,8 @@ import org.mockito.junit.jupiter.MockitoExtension; import com.google.gson.Gson; -import eu.dnetlib.dhp.schema.dump.oaf.graph.ResearchCommunity; -import eu.dnetlib.dhp.schema.dump.oaf.graph.ResearchInitiative; +import eu.dnetlib.dhp.oa.model.graph.ResearchCommunity; +import eu.dnetlib.dhp.oa.model.graph.ResearchInitiative; import eu.dnetlib.dhp.utils.DHPUtils; import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException; import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateRelationTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateRelationTest.java similarity index 99% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateRelationTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateRelationTest.java index d2343d2..487e820 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateRelationTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/CreateRelationTest.java @@ -11,8 +11,8 @@ import org.junit.jupiter.api.Test; import com.google.gson.Gson; +import eu.dnetlib.dhp.oa.model.graph.Relation; import eu.dnetlib.dhp.schema.common.ModelSupport; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Relation; import eu.dnetlib.dhp.schema.oaf.Datasource; import eu.dnetlib.dhp.schema.oaf.Project; import eu.dnetlib.dhp.utils.DHPUtils; diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpOrganizationProjectDatasourceTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpOrganizationProjectDatasourceTest.java similarity index 74% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpOrganizationProjectDatasourceTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpOrganizationProjectDatasourceTest.java index 80b5fd8..4ff5382 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpOrganizationProjectDatasourceTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpOrganizationProjectDatasourceTest.java @@ -82,18 +82,18 @@ public class DumpOrganizationProjectDatasourceTest { final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - JavaRDD tmp = sc + JavaRDD tmp = sc .textFile(workingDir.toString() + "/dump") - .map(item -> OBJECT_MAPPER.readValue(item, eu.dnetlib.dhp.schema.dump.oaf.graph.Organization.class)); + .map(item -> OBJECT_MAPPER.readValue(item, eu.dnetlib.dhp.oa.model.graph.Organization.class)); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(eu.dnetlib.dhp.schema.dump.oaf.graph.Organization.class)); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(eu.dnetlib.dhp.oa.model.graph.Organization.class)); Assertions.assertEquals(15, verificationDataset.count()); verificationDataset .foreach( - (ForeachFunction) o -> System.out + (ForeachFunction) o -> System.out .println(OBJECT_MAPPER.writeValueAsString(o))); } @@ -111,18 +111,18 @@ public class DumpOrganizationProjectDatasourceTest { final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - JavaRDD tmp = sc + JavaRDD tmp = sc .textFile(workingDir.toString() + "/dump") - .map(item -> OBJECT_MAPPER.readValue(item, eu.dnetlib.dhp.schema.dump.oaf.graph.Project.class)); + .map(item -> OBJECT_MAPPER.readValue(item, eu.dnetlib.dhp.oa.model.graph.Project.class)); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(eu.dnetlib.dhp.schema.dump.oaf.graph.Project.class)); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(eu.dnetlib.dhp.oa.model.graph.Project.class)); Assertions.assertEquals(12, verificationDataset.count()); verificationDataset .foreach( - (ForeachFunction) o -> System.out + (ForeachFunction) o -> System.out .println(OBJECT_MAPPER.writeValueAsString(o))); } @@ -139,18 +139,18 @@ public class DumpOrganizationProjectDatasourceTest { final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - JavaRDD tmp = sc + JavaRDD tmp = sc .textFile(workingDir.toString() + "/dump") - .map(item -> OBJECT_MAPPER.readValue(item, eu.dnetlib.dhp.schema.dump.oaf.graph.Datasource.class)); + .map(item -> OBJECT_MAPPER.readValue(item, eu.dnetlib.dhp.oa.model.graph.Datasource.class)); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(eu.dnetlib.dhp.schema.dump.oaf.graph.Datasource.class)); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(eu.dnetlib.dhp.oa.model.graph.Datasource.class)); Assertions.assertEquals(5, verificationDataset.count()); verificationDataset .foreach( - (ForeachFunction) o -> System.out + (ForeachFunction) o -> System.out .println(OBJECT_MAPPER.writeValueAsString(o))); } diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpRelationTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpRelationTest.java similarity index 99% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpRelationTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpRelationTest.java index 86ae83d..a768ab1 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpRelationTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/DumpRelationTest.java @@ -24,7 +24,7 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Relation; +import eu.dnetlib.dhp.oa.model.graph.Relation; public class DumpRelationTest { diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/ExtractRelationFromEntityTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/ExtractRelationFromEntityTest.java similarity index 98% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/ExtractRelationFromEntityTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/ExtractRelationFromEntityTest.java index 68a82c2..2e670eb 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/ExtractRelationFromEntityTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/ExtractRelationFromEntityTest.java @@ -21,7 +21,7 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Relation; +import eu.dnetlib.dhp.oa.model.graph.Relation; public class ExtractRelationFromEntityTest { diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/FunderParsingTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/FunderParsingTest.java similarity index 98% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/FunderParsingTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/FunderParsingTest.java index eb5919f..05e822d 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/FunderParsingTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/FunderParsingTest.java @@ -6,7 +6,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.xml.sax.SAXException; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Funder; +import eu.dnetlib.dhp.oa.model.graph.Funder; class FunderParsingTest { diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/QueryInformationSystemTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/QueryInformationSystemTest.java similarity index 100% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/QueryInformationSystemTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/QueryInformationSystemTest.java diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/RelationFromOrganizationTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/RelationFromOrganizationTest.java similarity index 99% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/RelationFromOrganizationTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/RelationFromOrganizationTest.java index 50a9f26..b9a0814 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/RelationFromOrganizationTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/RelationFromOrganizationTest.java @@ -21,7 +21,7 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Relation; +import eu.dnetlib.dhp.oa.model.graph.Relation; public class RelationFromOrganizationTest { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/SelectRelationTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/SelectRelationTest.java similarity index 93% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/SelectRelationTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/SelectRelationTest.java index 8162269..d430376 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/SelectRelationTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/complete/SelectRelationTest.java @@ -79,8 +79,6 @@ public class SelectRelationTest { "-sourcePath", sourcePath }); -// dumpCommunityProducts.exec(MOCK_IS_LOOK_UP_URL,Boolean.FALSE, workingDir.toString()+"/dataset",sourcePath,"eu.dnetlib.dhp.schema.oaf.Dataset","eu.dnetlib.dhp.schema.dump.oaf.Dataset"); - final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); JavaRDD tmp = sc diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/ResultLinkedToProjectTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/ResultLinkedToProjectTest.java similarity index 98% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/ResultLinkedToProjectTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/ResultLinkedToProjectTest.java index 5dabe5b..a26772f 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/ResultLinkedToProjectTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/ResultLinkedToProjectTest.java @@ -21,7 +21,7 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.dhp.oa.graph.dump.funderresults.SparkResultLinkedToProject; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; public class ResultLinkedToProjectTest { diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/SplitPerFunderTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/SplitPerFunderTest.java similarity index 98% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/SplitPerFunderTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/SplitPerFunderTest.java index 17472c5..eed07ae 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/SplitPerFunderTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/funderresult/SplitPerFunderTest.java @@ -22,7 +22,7 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.dhp.oa.graph.dump.funderresults.SparkDumpFunderResults; -import eu.dnetlib.dhp.schema.dump.oaf.community.CommunityResult; +import eu.dnetlib.dhp.oa.model.community.CommunityResult; public class SplitPerFunderTest { diff --git a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectSubsetTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectSubsetTest.java similarity index 98% rename from src/test/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectSubsetTest.java rename to dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectSubsetTest.java index a9c290b..ffbe8ce 100644 --- a/src/test/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectSubsetTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/projectssubset/ProjectSubsetTest.java @@ -20,7 +20,7 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.schema.dump.oaf.graph.Project; +import eu.dnetlib.dhp.oa.model.graph.Project; public class ProjectSubsetTest { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/preparedInfo b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/preparedInfo similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/preparedInfo rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/preparedInfo diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/preparedInfoValidated b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/preparedInfoValidated similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/preparedInfoValidated rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/preparedInfoValidated diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/publication_extendedmodel b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/publication_extendedmodel similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/publication_extendedmodel rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/publication_extendedmodel diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/software.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/software.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/software.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/addProjectInfo/software.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/communityMapPath/communitymap.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/communityMapPath/communitymap.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/communityMapPath/communitymap.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/communityMapPath/communitymap.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/communityMapPath/communitymapservices.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/communityMapPath/communitymapservices.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/communityMapPath/communitymapservices.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/communityMapPath/communitymapservices.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/datasource/datasource.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/datasource/datasource.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/datasource/datasource.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/datasource/datasource.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/organization/organization.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/organization/organization.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/organization/organization.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/organization/organization.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/project/project.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/project/project.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/project/project.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/project/project.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/relation/relation b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/relation/relation similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/relation/relation rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/complete/relation/relation diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/communityMapPath/communityMap b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/communityMapPath/communityMap similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/communityMapPath/communityMap rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/communityMapPath/communityMap diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/dataset b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/dataset similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/dataset rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/dataset diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/otherresearchproduct b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/otherresearchproduct similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/otherresearchproduct rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/otherresearchproduct diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/project b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/project similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/project rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/project diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/publication b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/publication similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/publication rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/publication diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/software b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/software similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/software rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/ext/software diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/dataset b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/dataset similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/dataset rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/dataset diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/otherresearchproduct b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/otherresearchproduct similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/otherresearchproduct rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/otherresearchproduct diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/project b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/project similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/project rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/project diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/publication b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/publication similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/publication rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/publication diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/software b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/software similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/software rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/extendeddump/software diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/fundersList/list b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/fundersList/list similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/fundersList/list rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/fundersList/list diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/papers.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/papers.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/papers.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/papers.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/project b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/project similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/project rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/project diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/relation b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/relation similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/relation rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/match/relation diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/papers.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/papers.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/papers.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/papers.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/project b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/project similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/project rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/project diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/relation b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/relation similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/relation rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/nomatch/relation diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/preparedInfo/resultProject b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/preparedInfo/resultProject similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/preparedInfo/resultProject rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/funderresource/preparedInfo/resultProject diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/allnew/projects b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/allnew/projects similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/allnew/projects rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/allnew/projects diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/matchOne/projects b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/matchOne/projects similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/matchOne/projects rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/matchOne/projects diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/projectId b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/projectId similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/projectId rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/projectsubset/projectId diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/relation/relation b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/relation/relation similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/relation/relation rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/relation/relation diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/relation/relation_validated b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/relation/relation_validated similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/relation/relation_validated rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/relation/relation_validated diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset_cleaned b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset_cleaned similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset_cleaned rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset_cleaned diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset_extendedinstance b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset_extendedinstance similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset_extendedinstance rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/dataset_extendedinstance diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/orp.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/orp.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/orp.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/orp.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/orp_extendedinstance b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/orp_extendedinstance similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/orp_extendedinstance rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/orp_extendedinstance diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication_extendedinstance b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication_extendedinstance similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication_extendedinstance rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication_extendedinstance diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication_pca b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication_pca similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication_pca rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/publication_pca diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/singelRecord_pub.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/singelRecord_pub.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/singelRecord_pub.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/singelRecord_pub.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/software.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/software.json similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/software.json rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/software.json diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/software_extendedinstance b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/software_extendedinstance similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/software_extendedinstance rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultDump/software_extendedinstance diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match/project b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match/project similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match/project rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match/project diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match/relation b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match/relation similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match/relation rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match/relation diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_one/project b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_one/project similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_one/project rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_one/project diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_one/relation b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_one/relation similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_one/relation rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_one/relation diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_validatedRels/project b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_validatedRels/project similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_validatedRels/project rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_validatedRels/project diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_validatedRels/relation b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_validatedRels/relation similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_validatedRels/relation rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/match_validatedRels/relation diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/no_match/project b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/no_match/project similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/no_match/project rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/no_match/project diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/no_match/relation b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/no_match/relation similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/no_match/relation rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/resultProject/no_match/relation diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/dataset b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/dataset similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/dataset rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/dataset diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/datasource b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/datasource similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/datasource rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/datasource diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/organization b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/organization similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/organization rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/organization diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/otherresearchproduct b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/otherresearchproduct similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/otherresearchproduct rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/otherresearchproduct diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/project b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/project similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/project rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/project diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/publication b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/publication similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/publication rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/publication diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/relation b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/relation similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/relation rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/relation diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/software b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/software similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/software rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/selectrelations/software diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/dataset b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/dataset similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/dataset rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/dataset diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/orp b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/orp similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/orp rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/orp diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/publication b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/publication similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/publication rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/publication diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/software b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/software similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/software rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/splitForCommunity/software diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/dh-ch b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/dh-ch similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/dh-ch rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/dh-ch diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/egi b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/egi similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/egi rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/egi diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/ni b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/ni similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/ni rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/ni diff --git a/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/science-innovation-policy b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/science-innovation-policy similarity index 100% rename from src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/science-innovation-policy rename to dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/zenodo/science-innovation-policy diff --git a/pom.xml b/pom.xml index a8e68f5..3446ab3 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,12 @@ - 4.0.0 + 4.0.0 + pom + + dump-schema + dump + eu.dnetlib.dhp @@ -90,40 +95,14 @@ - - - - - org.apache.spark - spark-core_2.11 - - - - org.apache.spark - spark-sql_2.11 - - - - dom4j - dom4j - - - - jaxen - jaxen - - - - eu.dnetlib.dhp - dhp-schemas - - - - eu.dnetlib.dhp - dhp-common - ${project.version} - - - + + 1.2.1 + 4.13.0 + 2.9.6 + 5.6.1 + 3.5 + 11.0.2 + [2.12.2-SCHEMA-NO-DUMP] + \ No newline at end of file