From 3c4c4e8ce007c0ffca719ff186befdae19391ef4 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Sat, 16 Mar 2024 08:44:10 +0100 Subject: [PATCH] [SKG-IF] tries to make the process finish. need to change the strategy --- .../dnetlib/dhp/skgif/model/MinProduct.java | 9 + .../SelectConnectedEntities.java | 142 +++++--- .../dhp/oa/graph/dump/skgif/DumpResult.java | 344 +++++++++++++++--- .../oa/graph/dump/skgif/EmitFromEntities.java | 139 +++---- .../dhp/oa/graph/dump/skgif/Utils.java | 3 + .../dump/skgif/beans/EncloseMinElement.java | 1 + .../graph/dump/skgif/oozie_app/workflow.xml | 123 ++++++- .../oa/graph/dump/skgif/DumpResultTest.java | 56 +++ ...4e76-c662-4a0e-bc26-a2779b0dc259-c000.json | 32 ++ ...6-c662-4a0e-bc26-a2779b0dc259-c000.json.gz | Bin 2394 -> 0 bytes ...fd20-3909-42ee-88dc-5ec33eff050d-c000.json | 44 +++ ...0-3909-42ee-88dc-5ec33eff050d-c000.json.gz | Bin 2288 -> 0 bytes ...d3a3-b306-457d-b39d-1e46b4f3f00b-c000.json | 40 ++ ...3-b306-457d-b39d-1e46b4f3f00b-c000.json.gz | Bin 3313 -> 0 bytes ...c42e-0911-493f-90a4-5517475c8c49-c000.json | 20 + ...e-0911-493f-90a4-5517475c8c49-c000.json.gz | Bin 1959 -> 0 bytes ...a3f4-176a-4fde-9a5c-746b4e9624a3-c000.json | 32 ++ ...4-176a-4fde-9a5c-746b4e9624a3-c000.json.gz | Bin 1868 -> 0 bytes ...d208-b8b9-4fa6-8898-444f4172f408-c000.json | 34 ++ ...8-b8b9-4fa6-8898-444f4172f408-c000.json.gz | Bin 2336 -> 0 bytes ...87dd-9c95-49fc-9efc-0feee839fa0b-c000.json | 44 +++ ...d-9c95-49fc-9efc-0feee839fa0b-c000.json.gz | Bin 2294 -> 0 bytes ...f272-7aab-4f7d-807d-cac431cfa416-c000.json | 54 +++ ...2-7aab-4f7d-807d-cac431cfa416-c000.json.gz | Bin 3071 -> 0 bytes .../workingDirApiExample/minProduct/paort0 | 32 ++ .../workingDirApiExample/minProduct/part1 | 20 + .../workingDirApiExample/minProduct/part3 | 32 ++ .../workingDirApiExample/minProduct/part4 | 54 +++ 28 files changed, 1070 insertions(+), 185 deletions(-) create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-2e174e76-c662-4a0e-bc26-a2779b0dc259-c000.json delete mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-2e174e76-c662-4a0e-bc26-a2779b0dc259-c000.json.gz create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-3828fd20-3909-42ee-88dc-5ec33eff050d-c000.json delete mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-3828fd20-3909-42ee-88dc-5ec33eff050d-c000.json.gz create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-5c1cd3a3-b306-457d-b39d-1e46b4f3f00b-c000.json delete mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-5c1cd3a3-b306-457d-b39d-1e46b4f3f00b-c000.json.gz create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-7879c42e-0911-493f-90a4-5517475c8c49-c000.json delete mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-7879c42e-0911-493f-90a4-5517475c8c49-c000.json.gz create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-b06ba3f4-176a-4fde-9a5c-746b4e9624a3-c000.json delete mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-b06ba3f4-176a-4fde-9a5c-746b4e9624a3-c000.json.gz create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-b720d208-b8b9-4fa6-8898-444f4172f408-c000.json delete mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-b720d208-b8b9-4fa6-8898-444f4172f408-c000.json.gz create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-d82887dd-9c95-49fc-9efc-0feee839fa0b-c000.json delete mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-d82887dd-9c95-49fc-9efc-0feee839fa0b-c000.json.gz create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-fcd5f272-7aab-4f7d-807d-cac431cfa416-c000.json delete mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-fcd5f272-7aab-4f7d-807d-cac431cfa416-c000.json.gz create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minProduct/paort0 create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minProduct/part1 create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minProduct/part3 create mode 100644 dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minProduct/part4 diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/skgif/model/MinProduct.java b/dump-schema/src/main/java/eu/dnetlib/dhp/skgif/model/MinProduct.java index 7126918..3884629 100644 --- a/dump-schema/src/main/java/eu/dnetlib/dhp/skgif/model/MinProduct.java +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/skgif/model/MinProduct.java @@ -13,6 +13,15 @@ public class MinProduct implements Serializable { private String doi; private String pmcid; private String arxivid; + private String pmid; + + public String getPmid() { + return pmid; + } + + public void setPmid(String pmid) { + this.pmid = pmid; + } public String getLocal_identifier() { return local_identifier; diff --git a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/filterentities/SelectConnectedEntities.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/filterentities/SelectConnectedEntities.java index 0de1541..efc6cf2 100644 --- a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/filterentities/SelectConnectedEntities.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/filterentities/SelectConnectedEntities.java @@ -17,6 +17,8 @@ import org.apache.spark.api.java.function.FlatMapFunction; import org.apache.spark.api.java.function.MapFunction; import org.apache.spark.sql.*; import org.apache.spark.sql.Dataset; +import org.apache.spark.sql.types.DataType; +import org.apache.spark.sql.types.StructType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -103,63 +105,56 @@ public class SelectConnectedEntities implements Serializable { Utils .getFunderName(p.getFundingtree().get(0).getValue()) .equalsIgnoreCase("European Commission")); + Dataset datasources = Utils .readPath(spark, inputPath + "datasource", Datasource.class) .filter((FilterFunction) d -> !d.getDataInfo().getDeletedbyinference()); // select relations having source in the set of identifiers selected for eosc - Dataset resultSource = resultIds - .joinWith(relation, resultIds.col("value").equalTo(relation.col("source"))) - .map((MapFunction, Relation>) t2 -> t2._2(), Encoders.bean(Relation.class)); - - // write relations having source and target in the set - resultIds - .joinWith(resultSource, resultIds.col("value").equalTo(resultSource.col("target"))) - .map((MapFunction, Relation>) t2 -> t2._2(), Encoders.bean(Relation.class)) + Dataset relationSource = relation + .join(resultIds, resultIds.col("value").equalTo(relation.col("source")), "left_semi"); + relationSource + .join(resultIds, resultIds.col("value").equalTo(relation.col("target")), "left_semi") .write() .option("compression", "gzip") .mode(SaveMode.Overwrite) - .json(workingDir + "relation"); - - // write relations between results and organizations - resultSource - .joinWith(organizations, resultSource.col("target").equalTo(organizations.col("id"))) - .map((MapFunction, Relation>) t2 -> t2._1(), Encoders.bean(Relation.class)) + .json(workingDir + "resultrelation"); +// +// // write relations between results and organizations + relationSource + .joinWith(organizations, relation.col("target").equalTo(organizations.col("id")), "left_semi") .write() - .mode(SaveMode.Append) + .mode(SaveMode.Overwrite) .option("compression", "gzip") - .json(workingDir + "relation"); + .json(workingDir + "organizaitonrelation"); - resultSource - .joinWith(projects, resultSource.col("target").equalTo(projects.col("id"))) - .map((MapFunction, Relation>) t2 -> t2._1(), Encoders.bean(Relation.class)) + relationSource + .joinWith(projects, relation.col("target").equalTo(projects.col("id")), "left_semi") .write() - .mode(SaveMode.Append) + .mode(SaveMode.Overwrite) .option("compression", "gzip") - .json(workingDir + "relation"); + .json(workingDir + "projectrelation"); // write organizations linked to results in the set - resultSource - .joinWith(organizations, resultSource.col("target").equalTo(organizations.col("id"))) - .map( - (MapFunction, Organization>) t2 -> t2._2(), - Encoders.bean(Organization.class)) + + organizations + .join(relationSource, relationSource.col("target").equalTo(organizations.col("id")), "left_semi") .write() .mode(SaveMode.Overwrite) .option("compression", "gzip") .json(workingDir + "organization"); // write projects linked to results in the set - resultSource - .joinWith(projects, resultSource.col("target").equalTo(projects.col("id"))) - .map((MapFunction, Project>) t2 -> t2._2(), Encoders.bean(Project.class)) + projects + .join(relationSource, relationSource.col("target").equalTo(projects.col("id"))) .write() - .mode(SaveMode.Append) + .mode(SaveMode.Overwrite) .option("compression", "gzip") .json(workingDir + "project"); // read the results and select all the distinct instance.hostedbykey Dataset datasourceReferencedIds = spark.emptyDataset(Encoders.STRING()); + for (EntityType entity : ModelSupport.entityTypes.keySet()) if (ModelSupport.isResult(entity)) { Class resultClazz = ModelSupport.entityTypes.get(entity); @@ -171,45 +166,88 @@ public class SelectConnectedEntities implements Serializable { (FlatMapFunction) r -> r .getInstance() .stream() - .flatMap(i -> Stream.of(i.getHostedby().getKey(), i.getCollectedfrom().getKey())) + .filter(i -> i.getHostedby() != null && i.getHostedby().getKey() != null) + .map(i -> i.getHostedby().getKey()) + .collect(Collectors.toList()) + .iterator(), + Encoders.STRING())); + datasourceReferencedIds = datasourceReferencedIds + .union( + Utils + .readPath(spark, workingDir + entity.name(), resultClazz) + .flatMap( + (FlatMapFunction) r -> r + .getInstance() + .stream() + .filter(i -> i.getCollectedfrom() != null && i.getCollectedfrom().getKey() != null) + .map(i -> i.getCollectedfrom().getKey()) .collect(Collectors.toList()) .iterator(), Encoders.STRING())); } datasourceReferencedIds = datasourceReferencedIds.distinct(); // join with the datasources and write the datasource in the join - datasourceReferencedIds - .joinWith(datasources, datasourceReferencedIds.col("value").equalTo(datasources.col("id"))) - .map((MapFunction, Datasource>) t2 -> t2._2(), Encoders.bean(Datasource.class)) + datasources + .joinWith( + datasourceReferencedIds, datasourceReferencedIds.col("value").equalTo(datasources.col("id")), + "left_semi") .write() .mode(SaveMode.Overwrite) .option("compression", "gzip") .json(workingDir + "datasource"); // selecting relations between organizations and projects in the selected set - Dataset organizationSbs = Utils.readPath(spark, workingDir + "organization", Organization.class); - Dataset projectSbs = Utils.readPath(spark, workingDir + "project", Project.class); - Dataset orgSourceRels = organizationSbs - .joinWith(relation, organizationSbs.col("id").equalTo(relation.col("source"))) - .map((MapFunction, Relation>) t2 -> t2._2(), Encoders.bean(Relation.class)); - orgSourceRels - .joinWith(projectSbs, orgSourceRels.col("target").equalTo(projectSbs.col("id"))) - .map((MapFunction, Relation>) t2 -> t2._1(), Encoders.bean(Relation.class)) + StructType tp = StructType.fromDDL("`id` STRING"); + Dataset organizationSbs = spark + .read() + .schema(tp) + .json(workingDir + "organization") + .select("id"); + + Dataset projectSbs = spark + .read() + .schema(tp) + .json(workingDir + "project") + .select("id"); +// + Dataset tmpRel; + tmpRel = relation + .join( + organizationSbs, organizationSbs + .col("id") + .equalTo(relation.col("source")), + "left_semi"); + tmpRel + .join(projectSbs, tmpRel.col("target").equalTo(projectSbs.col("id")), "left_semi") .write() - .mode(SaveMode.Append) + .mode(SaveMode.Overwrite) .option("compression", "gzip") - .json(workingDir + "relation"); + .json(workingDir + "orgprojelation"); // selecting relations between datasources and organizations in the selected set - Dataset datasourceSbs = Utils.readPath(spark, workingDir + "datasource", Datasource.class); - Dataset dsSourceRels = datasourceSbs - .joinWith(relation, datasourceSbs.col("id").as("dsId").equalTo(relation.col("source"))) - .map((MapFunction, Relation>) t2 -> t2._2(), Encoders.bean(Relation.class)); - dsSourceRels - .joinWith(organizationSbs, dsSourceRels.col("target").equalTo(organizations.col("id").as("orgId"))) - .map((MapFunction, Relation>) t2 -> t2._1(), Encoders.bean(Relation.class)) + Dataset datasourceSbs = spark + .read() + .schema(tp) + .json(workingDir + "datasource") + .select("id"); + + tmpRel = relation + .join(datasourceSbs, datasourceSbs.col("id").equalTo(relation.col("source")), "left_semi"); + tmpRel + .join(organizationSbs, tmpRel.col("target").equalTo(organizationSbs.col("id")), "left_semi") .write() - .mode(SaveMode.Append) + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingDir + "datsorgrelation"); + + Utils + .readPath(spark, workingDir + "resultrelation", Relation.class) + .union(Utils.readPath(spark, workingDir + "organizaitonrelation", Relation.class)) + .union(Utils.readPath(spark, workingDir + "projectrelation", Relation.class)) + .union(Utils.readPath(spark, workingDir + "orgprojelation", Relation.class)) + .union(Utils.readPath(spark, workingDir + "datsorgrelation", Relation.class)) + .write() + .mode(SaveMode.Overwrite) .option("compression", "gzip") .json(workingDir + "relation"); diff --git a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/DumpResult.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/DumpResult.java index b0f862e..fea0a48 100644 --- a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/DumpResult.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/DumpResult.java @@ -2,6 +2,7 @@ package eu.dnetlib.dhp.oa.graph.dump.skgif; import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; +import static eu.dnetlib.dhp.oa.graph.dump.skgif.ResultMapper.map; import java.io.Serializable; import java.util.*; @@ -9,12 +10,15 @@ import java.util.stream.Collectors; import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; +import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.function.FilterFunction; import org.apache.spark.api.java.function.MapFunction; import org.apache.spark.api.java.function.MapGroupsFunction; +import org.apache.spark.rdd.RDD; import org.apache.spark.sql.*; import org.apache.spark.sql.Dataset; -import org.jetbrains.annotations.NotNull; +import org.apache.spark.sql.types.DataTypes; +import org.apache.spark.sql.types.StructType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,10 +28,8 @@ import eu.dnetlib.dhp.schema.common.EntityType; import eu.dnetlib.dhp.schema.common.ModelSupport; import eu.dnetlib.dhp.schema.oaf.*; import eu.dnetlib.dhp.schema.oaf.Datasource; -import eu.dnetlib.dhp.schema.oaf.Organization; import eu.dnetlib.dhp.skgif.model.*; import eu.dnetlib.dhp.skgif.model.AccessRight; -import eu.dnetlib.dhp.utils.DHPUtils; import scala.Tuple2; /** @@ -323,7 +325,7 @@ public class DumpResult implements Serializable { results .joinWith(prr, results.col("id").equalTo(prr.col("resultId")), "left") .map((MapFunction, ResearchProduct>) t2 -> { - ResearchProduct rp = ResultMapper.map(t2._1()); + ResearchProduct rp = map(t2._1()); if (Optional.ofNullable(t2._2()).isPresent()) { if (Optional.ofNullable(t2._2().getRelated_products()).isPresent()) rp.setRelated_products(t2._2().getRelated_products()); @@ -357,47 +359,283 @@ public class DumpResult implements Serializable { } private static void selectRelations(SparkSession spark, String inputPath, String workingDir) { - Dataset relation = Utils - .readPath( - spark, - inputPath + "relation", Relation.class) - .filter( - (FilterFunction) r -> !r.getDataInfo().getDeletedbyinference() && - !r.getDataInfo().getInvisible()) - .filter( - (FilterFunction) r -> r - .getRelClass() - .equalsIgnoreCase(RelationType.RESULT_AFFILIATIED_TO_ORGANIZATION.label) || - r.getRelClass().equalsIgnoreCase(RelationType.RESULT_OUTCOME_FUNDING.label) || - r.getRelClass().equalsIgnoreCase(RelationType.SUPPLEMENT.label) || - r.getRelClass().equalsIgnoreCase(RelationType.DOCUMENTS.label) || - r.getRelClass().equalsIgnoreCase(RelationType.PART.label) || - r.getRelClass().equalsIgnoreCase(RelationType.VERSION.label) || - r.getRelClass().equalsIgnoreCase(RelationType.CITATION.label)); + List relationsProducts = Arrays + .asList( + RelationType.CITATION.label, + // RelationType.RESULT_AFFILIATIED_TO_ORGANIZATION.label, + RelationType.SUPPLEMENT.label, + // RelationType.RESULT_OUTCOME_FUNDING.label, + RelationType.DOCUMENTS.label, + RelationType.PART.label, + RelationType.VERSION.label); - Dataset encloseMinEntity = Utils - .readPath(spark, workingDir + "minEntity", EncloseMinElement.class); + // relationsProducts +// .stream() +// .forEach(r -> buildRelationPerProducts(spark, inputPath, workingDir, r)); +// buildRelationPerAffiliation( +// spark, inputPath, workingDir, RelationType.RESULT_AFFILIATIED_TO_ORGANIZATION.label); + buildRelationPerGrant(spark, inputPath, workingDir, RelationType.RESULT_OUTCOME_FUNDING.label); - relation - .joinWith(encloseMinEntity, relation.col("target").equalTo(encloseMinEntity.col("enclosedEntityId"))) - .map((MapFunction, EncloseMinElement>) t2 -> { - EncloseMinElement eme = t2._2(); - eme.setResultId(t2._1().getSource()); - eme.setSemantics(t2._1().getRelClass()); - return eme; - }, Encoders.bean(EncloseMinElement.class)) - .groupByKey((MapFunction) eme -> eme.getResultId(), Encoders.STRING()) - .mapGroups((MapGroupsFunction) (k, v) -> { - RelationPerProduct rpp = new RelationPerProduct(); - rpp.setResultId(k); - insertEnclosedElement(rpp, v.next()); - v.forEachRemaining(e -> insertEnclosedElement(rpp, e)); - return rpp; - }, Encoders.bean(RelationPerProduct.class)) + RDD temp = spark + .read() + .schema(Encoders.bean(RelationPerProduct.class).schema()) + .json(workingDir + "aggrelation_temp") + .as(Encoders.bean(RelationPerProduct.class)) + .toJavaRDD() + .mapToPair(v -> new Tuple2<>(v.getResultId(), v)) + .reduceByKey((a, b) -> { + mergeRelationPerProduct(a, b); + return a; + }) + .map(v -> v._2()) + .rdd(); + + spark + .createDataset(temp, Encoders.bean(RelationPerProduct.class)) .write() .mode(SaveMode.Overwrite) .option("compression", "gzip") .json(workingDir + "/aggrelation"); + + } + + private static void buildRelationPerGrant(SparkSession spark, String inputPath, String workingDir, + String relationType) { + log.info("Relation: {}", relationType); + final StructType relationstructureSchema = new StructType() + .add( + "dataInfo", new StructType() + .add("deletedbyinference", DataTypes.BooleanType)) + .add("source", DataTypes.StringType) + .add("target", DataTypes.StringType) + .add("relClass", DataTypes.StringType); + + final StructType grantSchema = new StructType() + .add( + "local_identifier", DataTypes.StringType) + + .add("funder", DataTypes.StringType) + .add("code", DataTypes.StringType) + .add("title", DataTypes.StringType) + + ; + + Dataset relation = spark + .read() + .schema(relationstructureSchema) + .json(inputPath + "relation") + .filter( + "datainfo.deletedbyinference != true and " + + "relclass == '" + relationType + "'") + .drop("dataInfo"); + + Dataset minProduct = spark + .read() + .schema(grantSchema) + .json(workingDir + "minGrant"); + + relation + .joinWith( + minProduct, relation.col("target").equalTo(minProduct.col("local_identifier"))) + .selectExpr("_1.source as sourceResult", "_1.relClass as relClass", "_2.*") + .groupByKey((MapFunction) r -> r.getAs("sourceResult"), Encoders.STRING()) + .mapGroups((MapGroupsFunction) (k, it) -> { + RelationPerProduct rpp = new RelationPerProduct(); + rpp.setResultId(k); + rpp.setRelatedProduct(new HashMap<>()); + updateRelevantGrant(rpp, it.next()); + it.forEachRemaining(r -> updateRelevantGrant(rpp, r)); + return rpp; + }, Encoders.bean(RelationPerProduct.class)) + // .show(false); + .write() + .mode(SaveMode.Append) + .option("compression", "gzip") + .json(workingDir + "aggrelation_temp"); + } + + private static void updateRelevantGrant(RelationPerProduct rpp, Row next) { + if (!Optional.ofNullable(rpp.getFunding()).isPresent()) + rpp.setFunding(new ArrayList<>()); + MinGrant mo = new MinGrant(); + mo.setLocal_identifier(next.getAs("local_identifier")); + mo.setTitle(next.getAs("title")); + mo.setFunder(next.getAs("fundet")); + mo.setCode(next.getAs("code")); + + rpp.getFunding().add(mo); + } + + private static void buildRelationPerAffiliation(SparkSession spark, String inputPath, String workingDir, + String relationType) { + log.info("Relation: {}", relationType); + final StructType relationstructureSchema = new StructType() + .add( + "dataInfo", new StructType() + .add("deletedbyinference", DataTypes.BooleanType)) + .add("source", DataTypes.StringType) + .add("target", DataTypes.StringType) + .add("relClass", DataTypes.StringType); + + final StructType orgSchema = new StructType() + .add( + "local_identifier", DataTypes.StringType) + + .add("name", DataTypes.StringType) + .add("ror", DataTypes.StringType) + .add("isni", DataTypes.StringType) + .add("fundRef", DataTypes.StringType) + .add("rinGold", DataTypes.StringType) + .add("wikidata", DataTypes.StringType); + + Dataset relation = spark + .read() + .schema(relationstructureSchema) + .json(inputPath + "relation") + .filter( + "datainfo.deletedbyinference != true and " + + "relclass == '" + relationType + "'") + .drop("dataInfo"); + + Dataset minOrganization = spark + .read() + .schema(orgSchema) + .json(workingDir + "minOrganization"); + + relation + .joinWith( + minOrganization, relation.col("target").equalTo(minOrganization.col("local_identifier"))) + .selectExpr("_1.source as sourceResult", "_1.relClass as relClass", "_2.*") + .groupByKey((MapFunction) r -> r.getAs("sourceResult"), Encoders.STRING()) + .mapGroups((MapGroupsFunction) (k, it) -> { + RelationPerProduct rpp = new RelationPerProduct(); + rpp.setResultId(k); + rpp.setRelatedProduct(new HashMap<>()); + updateRelevantOrganization(rpp, it.next()); + it.forEachRemaining(r -> updateRelevantOrganization(rpp, r)); + return rpp; + }, Encoders.bean(RelationPerProduct.class)) + // .show(false); + .write() + .mode(SaveMode.Append) + .option("compression", "gzip") + .json(workingDir + "aggrelation_temp"); + } + + private static void updateRelevantOrganization(RelationPerProduct rpp, Row next) { + if (!Optional.ofNullable(rpp.getOrganizations()).isPresent()) + rpp.setOrganizations(new ArrayList<>()); + MinOrganization mo = new MinOrganization(); + mo.setLocal_identifier(next.getAs("local_identifier")); + mo.setIsni(next.getAs("isni")); + mo.setRor(next.getAs("ror")); + mo.setName(next.getAs("name")); + mo.setWikidata(next.getAs("wikidata")); + mo.setFundRef(next.getAs("fundRef")); + mo.setRinGold(next.getAs("rinGold")); + + rpp.getOrganizations().add(mo); + } + + private static void buildRelationPerProducts(SparkSession spark, String inputPath, String workingDir, + String relationType) { + log.info("Relation: {}", relationType); + final StructType relationstructureSchema = new StructType() + .add( + "dataInfo", new StructType() + .add("deletedbyinference", DataTypes.BooleanType)) + .add("source", DataTypes.StringType) + .add("target", DataTypes.StringType) + .add("relClass", DataTypes.StringType); + + final StructType productSchema = new StructType() + .add( + "local_identifier", DataTypes.StringType) + + .add("title", DataTypes.StringType) + .add("doi", DataTypes.StringType) + .add("pmcid", DataTypes.StringType) + .add("arxivid", DataTypes.StringType) + .add("pmid", DataTypes.StringType); + + Dataset relation = spark + .read() + .schema(relationstructureSchema) + .json(inputPath + "relation") + .filter( + "datainfo.deletedbyinference != true and " + + "relclass == '" + relationType + "'") + .drop("dataInfo"); + + Dataset minProduct = spark + .read() + .schema(productSchema) + .json(workingDir + "minProduct"); + + relation + .joinWith( + minProduct, relation.col("target").equalTo(minProduct.col("local_identifier"))) + .selectExpr("_1.source as sourceResult", "_1.relClass as relClass", "_2.*") + .groupByKey((MapFunction) r -> r.getAs("sourceResult"), Encoders.STRING()) + .mapGroups((MapGroupsFunction) (k, it) -> { + RelationPerProduct rpp = new RelationPerProduct(); + rpp.setResultId(k); + rpp.setRelatedProduct(new HashMap<>()); + updateRelatedProduct(rpp, it.next()); + it.forEachRemaining(r -> updateRelatedProduct(rpp, r)); + return rpp; + }, Encoders.bean(RelationPerProduct.class)) + // .show(false); + .write() + .mode(SaveMode.Append) + .option("compression", "gzip") + .json(workingDir + "aggrelation_temp"); +// .map((MapFunction, RelationPerProduct>) t2 -> { +// RelationPerProduct rpp = new RelationPerProduct(); +// t2._2().setResultId(t2._1().getAs("source")); +// t2._2().setSemantics(t2._1().getAs("relClass")); +// insertEnclosedElement(rpp, t2._2()); +// rpp.setResultId(t2._1().getAs("source")); +// return rpp; +// }, Encoders.bean(RelationPerProduct.class)) +// .filter(Objects::nonNull) +// .toJavaRDD() +// .mapToPair(value -> new Tuple2<>(value.getResultId(), value)) +// .reduceByKey((a, b) -> { +// mergeRelationPerProduct(a, b); +// return a; +// }) +// +// .map(value -> value._2) +// .rdd(), +// Encoders.bean(RelationPerProduct.class)) +//// .saveAsTextFile(workingDir + "/aggrelation", GzipCodec.class); +//// .groupByKey((MapFunction) eme -> eme.getResultId(), Encoders.STRING()) +//// .mapGroups((MapGroupsFunction) (k, v) -> { +//// RelationPerProduct rpp = new RelationPerProduct(); +//// rpp.setResultId(k); +//// insertEnclosedElement(rpp, v.next()); +//// v.forEachRemaining(e -> insertEnclosedElement(rpp, e)); +//// return rpp; +//// }, Encoders.bean(RelationPerProduct.class)) +// .write() +// .mode(SaveMode.Append) +// .option("compression", "gzip") +// .json(workingDir + "/aggrelation_temp"); + } + + private static void updateRelatedProduct(RelationPerProduct rpp, Row next) { + String key = next.getAs("relClass"); + if (!rpp.getRelatedProduct().keySet().contains(key)) + rpp.getRelatedProduct().put(key, new ArrayList<>()); + MinProduct mp = new MinProduct(); + mp.setLocal_identifier(next.getAs("local_identifier")); + mp.setTitle(next.getAs("title")); + mp.setPmid(next.getAs("pmid")); + mp.setArxivid(next.getAs("arxivid")); + mp.setPmcid(next.getAs("pmcid")); + mp.setDoi(next.getAs("doi")); + rpp.getRelatedProduct().get(key).add(mp); } private static void insertEnclosedElement(RelationPerProduct rpp, EncloseMinElement element) { @@ -414,19 +652,21 @@ public class DumpResult implements Serializable { } - private static Dataset getMinProduct(SparkSession spark, String inputPath, - Class clazz) { - return Utils - .readPath(spark, inputPath, clazz) - .filter( - (FilterFunction) r -> !r.getDataInfo().getDeletedbyinference() && - !r.getDataInfo().getInvisible()) - .map((MapFunction) r -> { - EncloseMinElement eme = new EncloseMinElement(); - eme.setEnclosedEntityId(r.getId()); - eme.setMinProduct(Utils.getMinProduct(r)); - return eme; - }, Encoders.bean(EncloseMinElement.class)); + private static void mergeRelationPerProduct(RelationPerProduct rpp1, RelationPerProduct rpp2) { + if (Optional.ofNullable(rpp2.getOrganizations()).isPresent()) + rpp1.getOrganizations().addAll(rpp2.getOrganizations()); + if (Optional.ofNullable(rpp2.getFunding()).isPresent()) + rpp1.getFunding().addAll(rpp2.getFunding()); + if (Optional.ofNullable(rpp2.getRelatedProduct()).isPresent()) { + Map> temp = rpp2.getRelatedProduct(); + for (String key : temp.keySet()) { + if (!rpp1.getRelatedProduct().containsKey(key)) + rpp1.getRelatedProduct().put(key, new ArrayList<>()); + for (MinProduct mp : rpp2.getRelatedProduct().get(key)) + rpp1.getRelatedProduct().get(key).add(mp); + } + } + } } diff --git a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/EmitFromEntities.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/EmitFromEntities.java index 212978f..2a8e0f7 100644 --- a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/EmitFromEntities.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/EmitFromEntities.java @@ -13,10 +13,9 @@ import org.apache.spark.api.java.function.FilterFunction; import org.apache.spark.api.java.function.FlatMapFunction; import org.apache.spark.api.java.function.MapFunction; import org.apache.spark.api.java.function.MapGroupsFunction; +import org.apache.spark.sql.*; import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Encoders; -import org.apache.spark.sql.SaveMode; -import org.apache.spark.sql.SparkSession; +import org.apache.spark.sql.types.StructType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,6 +23,7 @@ import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.oa.graph.dump.skgif.beans.EmitPerManifestation; import eu.dnetlib.dhp.oa.graph.dump.skgif.beans.EncloseMinElement; import eu.dnetlib.dhp.schema.common.EntityType; +import eu.dnetlib.dhp.schema.common.ModelConstants; import eu.dnetlib.dhp.schema.common.ModelSupport; import eu.dnetlib.dhp.schema.oaf.*; import eu.dnetlib.dhp.schema.oaf.Datasource; @@ -83,16 +83,17 @@ public class EmitFromEntities implements Serializable { Utils .readPath(spark, inputPath + "project", Project.class) .filter((FilterFunction) p -> !p.getDataInfo().getDeletedbyinference()) - .map((MapFunction) p -> { - EncloseMinElement eme = new EncloseMinElement(); - eme.setEnclosedEntityId(p.getId()); - eme.setMinGrant(Utils.getMinGrant(p)); - return eme; - }, Encoders.bean(EncloseMinElement.class)) + .map((MapFunction) p -> { +// EncloseMinElement eme = new EncloseMinElement(); +// eme.setEnclosedEntityId(p.getId()); +// eme.setMinGrant(Utils.getMinGrant(p)); +// return eme; + return Utils.getMinGrant(p); + }, Encoders.bean(MinGrant.class)) .write() - .mode(SaveMode.Append) + .mode(SaveMode.Overwrite) .option("compression", "gzip") - .json(workingDir + "/minEntity"); + .json(workingDir + "/minGrant"); } @@ -100,39 +101,56 @@ public class EmitFromEntities implements Serializable { Utils .readPath(spark, inputPath + "organization", Organization.class) .filter((FilterFunction) o -> !o.getDataInfo().getDeletedbyinference()) - .map((MapFunction) o -> { - EncloseMinElement eme = new EncloseMinElement(); - eme.setMinOrganization(Utils.getMinOrganization(o)); - eme.setEnclosedEntityId(o.getId()); - return eme; - }, - Encoders.bean(EncloseMinElement.class)) + .map( + (MapFunction) o -> { + // EncloseMinElement eme = new EncloseMinElement(); + return Utils.getMinOrganization(o); +// eme.setMinOrganization(Utils.getMinOrganization(o)); +// eme.setEnclosedEntityId(o.getId()); +// return eme; + }, + Encoders.bean(MinOrganization.class)) .write() - .mode(SaveMode.Append) + .mode(SaveMode.Overwrite) .option("compression", "gzip") - .json(workingDir + "/minEntity"); + .json(workingDir + "/minOrganization"); } private static void emitFromDatasource(SparkSession spark, String inputPath, String workingDir) { +// StructType daSchema = StructType +// .fromDDL("`id` STRING, `dataInfo` STRUCT<`deletedbyinference`:BOOLEAN,`invisible`:BOOLEAN>, `officialname` STRUCT<`value` STRING>"); +// spark +// .read() +// .schema(Encoders.bean(Datasource.class).schema()) +// .json(inputPath + "datasource") +// .filter( +// "dataInfo.deletedbyinference != true " ) +// .selectExpr("id as enclosedEntity", " as minDatasource" ) +// .select(new Column("id").as("minDatasource.local_identifier"), new Column("officialname.value").as("minDatasource.name"), new Column("id").as("enclosedEntityId")) +// .write() +// .mode(SaveMode.Append) +// .option("compression","gzip") +// .json(workingDir + "/minEntity"); + Utils .readPath(spark, inputPath + "datasource", Datasource.class) .filter((FilterFunction) d -> !d.getDataInfo().getDeletedbyinference()) - .map((MapFunction) d -> { - EncloseMinElement eme = new EncloseMinElement(); - eme - .setMinDatsource( - MinVenue - .newInstance( - // Utils.getIdentifier(Prefixes.DATASOURCE, d.getId()), - // d.getOfficialname().getValue())); - d.getId(), d.getOfficialname().getValue())); - eme.setEnclosedEntityId(d.getId()); - return eme; - }, Encoders.bean(EncloseMinElement.class)) + .map((MapFunction) d -> { +// EncloseMinElement eme = new EncloseMinElement(); +// eme +// .setMinDatsource( + return MinVenue + .newInstance( + // Utils.getIdentifier(Prefixes.DATASOURCE, d.getId()), + // d.getOfficialname().getValue())); + d.getId(), d.getOfficialname().getValue());// ); + // eme.setEnclosedEntityId(d.getId()); + // return eme; + }, Encoders.bean(MinVenue.class)) .write() - .mode(SaveMode.Append) + .mode(SaveMode.Overwrite) .option("compression", "gzip") - .json(workingDir + "/minEntity"); + .json(workingDir + "/minDatasource"); Utils .readPath(spark, inputPath + "datasource", Datasource.class) @@ -142,36 +160,36 @@ public class EmitFromEntities implements Serializable { .getEoscdatasourcetype() .getClassid() .equalsIgnoreCase("Journal archive")) - .map((MapFunction) d -> { - EncloseMinElement eme = new EncloseMinElement(); - eme.setEnclosedEntityId(d.getId()); + .map((MapFunction) d -> { +// EncloseMinElement eme = new EncloseMinElement(); +// eme.setEnclosedEntityId(d.getId()); if (Optional.ofNullable(d.getJournal()).isPresent() && Optional.ofNullable(d.getJournal().getIssnPrinted()).isPresent()) { - eme - .setMinVenue( - MinVenue - .newInstance( - Utils.getIdentifier(Prefixes.VENUE, d.getJournal().getIssnPrinted()), - d.getOfficialname().getValue())); - return eme; + // eme + // .setMinVenue( + return MinVenue + .newInstance( + Utils.getIdentifier(Prefixes.VENUE, d.getJournal().getIssnPrinted()), + d.getOfficialname().getValue());// ); + // return eme; } if (Optional.ofNullable(d.getJournal()).isPresent() && Optional.ofNullable(d.getJournal().getIssnOnline()).isPresent()) { - eme - .setMinVenue( - MinVenue - .newInstance( - Utils.getIdentifier(Prefixes.VENUE, d.getJournal().getIssnOnline()), - d.getOfficialname().getValue())); - return eme; +// eme +// .setMinVenue( + return MinVenue + .newInstance( + Utils.getIdentifier(Prefixes.VENUE, d.getJournal().getIssnOnline()), + d.getOfficialname().getValue());// ); + // return eme; } return null; - }, Encoders.bean(EncloseMinElement.class)) + }, Encoders.bean(MinVenue.class)) .filter(Objects::nonNull) .write() - .mode(SaveMode.Append) + .mode(SaveMode.Overwrite) .option("compression", "gzip") - .json(workingDir + "/minEntity"); + .json(workingDir + "/minVenue"); } @@ -186,23 +204,20 @@ public class EmitFromEntities implements Serializable { } private static void emitMinProduct(SparkSession spark, String inputPath, String workingDir) { - Utils.removeOutputDir(spark, workingDir + "minEntity"); + Utils.removeOutputDir(spark, workingDir + "minProduct"); ModelSupport.entityTypes.keySet().forEach(e -> { if (ModelSupport.isResult(e)) { Class resultClazz = ModelSupport.entityTypes.get(e); Utils .readPath(spark, inputPath + e.name(), resultClazz) - .map((MapFunction) p -> { - EncloseMinElement eme = new EncloseMinElement(); - eme.setMinProduct(Utils.getMinProduct(p)); - eme.setEnclosedEntityId(p.getId()); - return eme; - }, Encoders.bean(EncloseMinElement.class)) + .map( + (MapFunction) p -> Utils.getMinProduct(p), + Encoders.bean(MinProduct.class)) .write() .mode(SaveMode.Append) .option("compression", "gzip") - .json(workingDir + "/minEntity"); + .json(workingDir + "/minProduct"); } diff --git a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/Utils.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/Utils.java index 7c9fb62..beb70e4 100644 --- a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/Utils.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/Utils.java @@ -155,6 +155,9 @@ public class Utils implements Serializable { case "arxiv": mp.setArxivid(pid.getValue()); break; + case "pmid": + mp.setPmid(pid.getValue()); + break; } } diff --git a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/beans/EncloseMinElement.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/beans/EncloseMinElement.java index 4557ec7..899a94b 100644 --- a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/beans/EncloseMinElement.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/skgif/beans/EncloseMinElement.java @@ -85,4 +85,5 @@ public class EncloseMinElement implements Serializable { public void setMinProduct(MinProduct minProduct) { this.minProduct = minProduct; } + } diff --git a/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/oozie_app/workflow.xml b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/oozie_app/workflow.xml index 20595aa..0107cee 100644 --- a/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/oozie_app/workflow.xml +++ b/dump/src/main/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/oozie_app/workflow.xml @@ -62,7 +62,7 @@ - + @@ -218,19 +218,90 @@ --filterPath${filterPath} - + - + ${jobTracker} ${nameNode} - ${nameNode}/user/miriam.baglioni/oa/graph/dump/temp/graph/* - ${nameNode}/${workingDir}/graph/ + ${nameNode}/user/miriam.baglioni/oa/graph/dump/temp/graph/publication + ${nameNode}/${workingDir}/graph/publication + + + + + + + ${jobTracker} + ${nameNode} + ${nameNode}/user/miriam.baglioni/oa/graph/dump/temp/graph/dataset + ${nameNode}/${workingDir}/graph/dataset + + + + + + + ${jobTracker} + ${nameNode} + ${nameNode}/user/miriam.baglioni/oa/graph/dump/temp/graph/otherresearchproduct + ${nameNode}/${workingDir}/graph/otherresearchproduct + + + + + + + ${jobTracker} + ${nameNode} + ${nameNode}/user/miriam.baglioni/oa/graph/dump/temp/graph/software + ${nameNode}/${workingDir}/graph/software + + + + + + + ${jobTracker} + ${nameNode} + ${nameNode}/user/miriam.baglioni/oa/graph/dump/temp/graph/datasource + ${nameNode}/${workingDir}/graph/datasource + + + + + + + ${jobTracker} + ${nameNode} + ${nameNode}/user/miriam.baglioni/oa/graph/dump/temp/graph/project + ${nameNode}/${workingDir}/graph/project + + + + + + + ${jobTracker} + ${nameNode} + ${nameNode}/user/miriam.baglioni/oa/graph/dump/temp/graph/organization + ${nameNode}/${workingDir}/graph/organization + + + + + + + ${jobTracker} + ${nameNode} + ${nameNode}/user/miriam.baglioni/oa/graph/dump/temp/graph/relation + ${nameNode}/${workingDir}/graph/relation + yarn @@ -248,9 +319,11 @@ --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} --conf spark.sql.warehouse.dir=${sparkSqlWarehouseDir} - --sourcePath${workingDir}/graph/ - --workingDir${workingDir}/ + + --outputPath${outputPath} + --workingDir/user/miriam.baglioni/oa/graph/dump/temp/working_dir/ + --sourcePath/user/miriam.baglioni/oa/graph/dump/temp/working_dir/graph/ @@ -263,18 +336,22 @@ eu.dnetlib.dhp.oa.graph.dump.skgif.DumpResult dump-${projectVersion}.jar - --executor-memory=${sparkExecutorMemory} - --executor-cores=${sparkExecutorCores} + --executor-cores=4 + --executor-memory=8G --driver-memory=${sparkDriverMemory} + --conf spark.executor.memoryOverhead=5G --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} + --conf spark.sql.shuffle.partitions=15000 - --sourcePath${workingDir}/graph/ + + --sourcePath/user/miriam.baglioni/oa/graph/dump/temp/working_dir/graph/ --outputPath${outputPath} - --workingDir${workingDir}/ + + --workingDir/user/miriam.baglioni/oa/graph/dump/temp/working_dir/ @@ -296,9 +373,11 @@ --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} --conf spark.sql.warehouse.dir=${sparkSqlWarehouseDir} - --sourcePath${workingDir}/graph/ + + --sourcePath/user/miriam.baglioni/oa/graph/dump/temp/working_dir/graph/ --outputPath${outputPath} - --workingDir${workingDir}/ + + --workingDir/user/miriam.baglioni/oa/graph/dump/temp/working_dir/ @@ -320,9 +399,11 @@ --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} --conf spark.sql.warehouse.dir=${sparkSqlWarehouseDir} - --sourcePath${workingDir}/graph/ + + --sourcePath/user/miriam.baglioni/oa/graph/dump/temp/working_dir/graph/ --outputPath${outputPath} - --workingDir${workingDir}/ + + --workingDir/user/miriam.baglioni/oa/graph/dump/temp/working_dir/ @@ -345,9 +426,11 @@ --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} --conf spark.sql.warehouse.dir=${sparkSqlWarehouseDir} - --sourcePath${workingDir}/graph/ + + --sourcePath/user/miriam.baglioni/oa/graph/dump/temp/working_dir/graph/ --outputPath${outputPath} - --workingDir${workingDir}/ + + --workingDir/user/miriam.baglioni/oa/graph/dump/temp/working_dir/ @@ -370,9 +453,11 @@ --conf spark.sql.warehouse.dir=${sparkSqlWarehouseDir} - --sourcePath${workingDir}/graph/ + + --sourcePath/user/miriam.baglioni/oa/graph/dump/temp/working_dir/graph/ --outputPath${outputPath} - --workingDir${workingDir}/ + + --workingDir/user/miriam.baglioni/oa/graph/dump/temp/working_dir/ diff --git a/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/skgif/DumpResultTest.java b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/skgif/DumpResultTest.java index dfe74a3..83ec0db 100644 --- a/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/skgif/DumpResultTest.java +++ b/dump/src/test/java/eu/dnetlib/dhp/oa/graph/dump/skgif/DumpResultTest.java @@ -4,6 +4,8 @@ package eu.dnetlib.dhp.oa.graph.dump.skgif; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; import java.util.stream.Collectors; import javax.validation.constraints.AssertTrue; @@ -14,9 +16,14 @@ import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.FilterFunction; import org.apache.spark.api.java.function.ForeachFunction; +import org.apache.spark.api.java.function.MapFunction; +import org.apache.spark.api.java.function.MapGroupsFunction; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Encoders; +import org.apache.spark.sql.Row; import org.apache.spark.sql.SparkSession; +import org.apache.spark.sql.types.DataTypes; +import org.apache.spark.sql.types.StructType; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -28,6 +35,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.dhp.oa.graph.dump.skgif.beans.EmitPerManifestation; import eu.dnetlib.dhp.oa.graph.dump.skgif.beans.RelationPerProduct; +import eu.dnetlib.dhp.oa.model.graph.Relation; import eu.dnetlib.dhp.skgif.model.*; import eu.dnetlib.dhp.utils.DHPUtils; @@ -489,6 +497,54 @@ public class DumpResultTest { } + @Test + public void testEmitFromApi() throws Exception { + final String sourcePath = getClass() + .getResource("/eu/dnetlib/dhp/oa/graph/dump/skgif/graphForAPIExample/") + .getPath(); + + final String workingDir = getClass() + .getResource("/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/") + .getPath(); + + final StructType relationstructureSchema = new StructType() + .add( + "dataInfo", new StructType() + .add("deletedbyinference", DataTypes.BooleanType)) + .add("source", DataTypes.StringType) + .add("target", DataTypes.StringType) + .add("relClass", DataTypes.StringType); + + final StructType productSchema = new StructType() + .add("local_identifier", DataTypes.StringType) + .add("title", DataTypes.StringType) + .add("doi", DataTypes.StringType) + .add("pmcid", DataTypes.StringType) + .add("arxivid", DataTypes.StringType) + .add("pmid", DataTypes.StringType); + + Dataset relation = spark + .read() + .schema(relationstructureSchema) + .json(sourcePath + "relation") + .filter( + "datainfo.deletedbyinference != true and " + + "relclass == '" + RelationType.CITATION.label + "'") + .drop("dataInfo"); + + Dataset minProduct = spark + .read() + .schema(productSchema) + .json(workingDir + "minProduct"); + relation + .joinWith( + minProduct, relation.col("target").equalTo(minProduct.col("local_identifier"))) + .selectExpr("_1.source as sourceResult", "_2.*") + + .show(false); + + } + @Test public void testEmitFromApiDump() throws Exception { final String sourcePath = getClass() diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-2e174e76-c662-4a0e-bc26-a2779b0dc259-c000.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-2e174e76-c662-4a0e-bc26-a2779b0dc259-c000.json new file mode 100644 index 0000000..b10607b --- /dev/null +++ b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-2e174e76-c662-4a0e-bc26-a2779b0dc259-c000.json @@ -0,0 +1,32 @@ +{"enclosedEntityId":"50|59796a29bd90::390b69a1e20d5af206fd6849c9b97d13","minProduct":{"local_identifier":"50|59796a29bd90::390b69a1e20d5af206fd6849c9b97d13","title":"Power to gas"}} +{"enclosedEntityId":"50|59796a29bd90::6098357dcb0f21a492ae2689961268ef","minProduct":{"local_identifier":"50|59796a29bd90::6098357dcb0f21a492ae2689961268ef","title":"Vrije Tijd? Tijd voor Deventer!"}} +{"enclosedEntityId":"50|59796a29bd90::d0545b3c7166358e16599aec2284b101","minProduct":{"local_identifier":"50|59796a29bd90::d0545b3c7166358e16599aec2284b101","title":"Sepsis at ICU admission does not decrease 30-day survival in very old patients"}} +{"enclosedEntityId":"50|73490d0e0f82::1f1e664683ae0035b0d64487d1e1bcbe","minProduct":{"local_identifier":"50|73490d0e0f82::1f1e664683ae0035b0d64487d1e1bcbe","title":"The Effects of Membrane Physical Properties on Insulin Receptor Autophosphorylation and Signalling"}} +{"enclosedEntityId":"50|73490d0e0f82::62d68e6a826109387d9b24d125dee5d1","minProduct":{"local_identifier":"50|73490d0e0f82::62d68e6a826109387d9b24d125dee5d1","title":"Protection of Migrant Agricultural Workers' Rights"}} +{"enclosedEntityId":"50|CSC_________::288c3eab977e8b76a7abe31f989c9901","minProduct":{"local_identifier":"50|CSC_________::288c3eab977e8b76a7abe31f989c9901","title":"A fabric design for Armani Casa"}} +{"enclosedEntityId":"50|CSC_________::710a52c4e2a9b3b697c682dd15595a4c","minProduct":{"local_identifier":"50|CSC_________::710a52c4e2a9b3b697c682dd15595a4c","title":"''Archpelago'' Apron, Navy : formgivning"}} +{"enclosedEntityId":"50|CSC_________::7a3ea1f6a35d738fb193f6fae3303d32","minProduct":{"local_identifier":"50|CSC_________::7a3ea1f6a35d738fb193f6fae3303d32","title":"Ragna Róbertsdóttir | Configured Landscapes"}} +{"enclosedEntityId":"50|RECOLECTA___::02e2efbf7bdfbdc708995bf8cb3c038b","minProduct":{"local_identifier":"50|RECOLECTA___::02e2efbf7bdfbdc708995bf8cb3c038b","title":"Por qué la educación a distancia (en línea)"}} +{"enclosedEntityId":"50|RECOLECTA___::04e03c6d2756db9d75874947a7ef224c","minProduct":{"local_identifier":"50|RECOLECTA___::04e03c6d2756db9d75874947a7ef224c","title":"Sistemas recomendadores aplicados a productos de ropa"}} +{"enclosedEntityId":"50|RECOLECTA___::05d59bf33bc35aeb975ca399180a051f","minProduct":{"local_identifier":"50|RECOLECTA___::05d59bf33bc35aeb975ca399180a051f","title":"Origen y desarrollo de los derechos fundamentales laborales en Venezuela (1830-Constitución de 1999) = Origin and development of fundamental labor rights in Venezuela (1830-1999 Constitution)"}} +{"enclosedEntityId":"50|RECOLECTA___::074a83f6b5813016364f2f5c4651f026","minProduct":{"local_identifier":"50|RECOLECTA___::074a83f6b5813016364f2f5c4651f026","title":"Página 3"}} +{"enclosedEntityId":"50|RECOLECTA___::1111974150e3c89ed32a8fabe4785e32","minProduct":{"local_identifier":"50|RECOLECTA___::1111974150e3c89ed32a8fabe4785e32","title":"Diseño y aplicaciones de materiales híbridos fotoactivos"}} +{"enclosedEntityId":"50|RECOLECTA___::2694fc6101c2a0454d91fa047997ea57","minProduct":{"local_identifier":"50|RECOLECTA___::2694fc6101c2a0454d91fa047997ea57","title":"BIM-based decision support for building condition assessment"}} +{"enclosedEntityId":"50|RECOLECTA___::4c67143df007c7fdfd9af06ead811612","minProduct":{"local_identifier":"50|RECOLECTA___::4c67143df007c7fdfd9af06ead811612","title":"Máster profesorado - Sesión práctica 1: Diseño y desarrollo de programaciones y actividades formativas"}} +{"enclosedEntityId":"50|RECOLECTA___::554f00ffc38fa55e66208b19a8576b7d","minProduct":{"local_identifier":"50|RECOLECTA___::554f00ffc38fa55e66208b19a8576b7d","title":"Uncertainty analysis methods to select the optimal alternative in the design of parking facilities"}} +{"enclosedEntityId":"50|59796a29bd90::1a4c7bbe17709e01cb361b2159aa3296","minProduct":{"local_identifier":"50|59796a29bd90::1a4c7bbe17709e01cb361b2159aa3296","title":"Sociale voorwaarden in aanbestedingen: beleid en uitvoering"}} +{"enclosedEntityId":"50|59796a29bd90::227dfff51dc04032c0fc5c96a5ebc405","minProduct":{"local_identifier":"50|59796a29bd90::227dfff51dc04032c0fc5c96a5ebc405","title":"In situ detection of product age and argon concentration as measure of the re-use potential of insulating glass units in buildings"}} +{"enclosedEntityId":"50|59796a29bd90::2a8c8c2e29955006521983ec30226a23","minProduct":{"local_identifier":"50|59796a29bd90::2a8c8c2e29955006521983ec30226a23","title":"Annual conference REFRAME"}} +{"enclosedEntityId":"50|59796a29bd90::e8ef028372d784a26a451f6b50d0006d","minProduct":{"local_identifier":"50|59796a29bd90::e8ef028372d784a26a451f6b50d0006d","title":"Kruidenrijk grasland : kans voor koe en boer"}} +{"enclosedEntityId":"50|73490d0e0f82::831b9da5b9523d3a954471c111f03fcc","minProduct":{"local_identifier":"50|73490d0e0f82::831b9da5b9523d3a954471c111f03fcc","title":"Using Reputation in Repeated Selfish Routing with Incomplete Information"}} +{"enclosedEntityId":"50|73490d0e0f82::8ef7550c8b45953789005b0af1626c4e","minProduct":{"local_identifier":"50|73490d0e0f82::8ef7550c8b45953789005b0af1626c4e","title":"Refractor Plates Optimization and Data Analysis of a Correlation Spectrometer, Used as a Remote Sensing Instrument"}} +{"enclosedEntityId":"50|73490d0e0f82::d94d2b644fe36e0398c55f894f01bf13","minProduct":{"local_identifier":"50|73490d0e0f82::d94d2b644fe36e0398c55f894f01bf13","title":"links between labour-market experiences and health"}} +{"enclosedEntityId":"50|CSC_________::0335521d3fcd008e1a73cc500a4911c2","minProduct":{"local_identifier":"50|CSC_________::0335521d3fcd008e1a73cc500a4911c2","title":"10 kohtausta seksuaalisesta vallankäytöstä (teatteriesitys) : valosuunnittelu"}} +{"enclosedEntityId":"50|CSC_________::33b62b7fd4cb5305580ff6b5ad3b110d","minProduct":{"local_identifier":"50|CSC_________::33b62b7fd4cb5305580ff6b5ad3b110d","title":"Lyhytkapillaarielektroforeesi on-line -prosessiseurantaan"}} +{"enclosedEntityId":"50|CSC_________::a3bfbbaaee8b7d79a42a334bc5fb7f00","minProduct":{"local_identifier":"50|CSC_________::a3bfbbaaee8b7d79a42a334bc5fb7f00","title":"Jam Session w/ Dr. Sandberg (konsert) : musiker"}} +{"enclosedEntityId":"50|RECOLECTA___::00f011c5c9490e47c91bdf36701221f3","minProduct":{"local_identifier":"50|RECOLECTA___::00f011c5c9490e47c91bdf36701221f3","title":"Aló"}} +{"enclosedEntityId":"50|RECOLECTA___::0197025e456a3e0a4922b82c990d6bd8","minProduct":{"local_identifier":"50|RECOLECTA___::0197025e456a3e0a4922b82c990d6bd8","title":"Ficha 489"}} +{"enclosedEntityId":"50|RECOLECTA___::2757c2e94b79fe7822c3a59005d07870","minProduct":{"local_identifier":"50|RECOLECTA___::2757c2e94b79fe7822c3a59005d07870","title":"Clinical spectrum of premature pubarche: Links to metabolic syndrome and ovarian hyperandrogenism"}} +{"enclosedEntityId":"50|RECOLECTA___::3099980dac34189351509d429ba16866","minProduct":{"local_identifier":"50|RECOLECTA___::3099980dac34189351509d429ba16866","title":"La incidencia del factor nuclear en el terrorismo"}} +{"enclosedEntityId":"50|RECOLECTA___::3227a354fbf54668c379229297c71c0e","minProduct":{"local_identifier":"50|RECOLECTA___::3227a354fbf54668c379229297c71c0e","title":"Pre-training of deep neural networks through Real-Coded Genetic Algorithms"}} +{"enclosedEntityId":"50|RECOLECTA___::37a152ef82da05df86d1414a0bc200b4","minProduct":{"local_identifier":"50|RECOLECTA___::37a152ef82da05df86d1414a0bc200b4","title":"the UN 2030 Agenda to Improve Global Communicative Competence"}} diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-2e174e76-c662-4a0e-bc26-a2779b0dc259-c000.json.gz b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-2e174e76-c662-4a0e-bc26-a2779b0dc259-c000.json.gz deleted file mode 100644 index 6845b9cbc67739901b792892414fed9e42b49494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2394 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 KnM)E7BLD!HI)!Nf diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-5c1cd3a3-b306-457d-b39d-1e46b4f3f00b-c000.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-5c1cd3a3-b306-457d-b39d-1e46b4f3f00b-c000.json new file mode 100644 index 0000000..8278b9c --- /dev/null +++ b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-5c1cd3a3-b306-457d-b39d-1e46b4f3f00b-c000.json @@ -0,0 +1,40 @@ +{"enclosedEntityId":"40|aka_________::01430745354b8004f6b2af63031fe3af","minGrant":{"code":"201295","funder":"Academy of Finland","local_identifier":"40|aka_________::01430745354b8004f6b2af63031fe3af","title":"Mechanisms of learning and memory: The role of CaMKII in the function of hippocampal place cells"}} +{"enclosedEntityId":"40|aka_________::054007a36d79c3c85f1871b2eb991d35","minGrant":{"code":"336408","funder":"Academy of Finland","local_identifier":"40|aka_________::054007a36d79c3c85f1871b2eb991d35","title":"Sustainable nanocellulose-based bioinks towards diverse material functionalities and therapeutic delivery of bioactive cues (SusCellInk)"}} +{"enclosedEntityId":"40|aka_________::0641940b9ee5df7fe02447e22c3cbf9f","minGrant":{"code":"317918","funder":"Academy of Finland","local_identifier":"40|aka_________::0641940b9ee5df7fe02447e22c3cbf9f","title":"Active Control of Spin Waves in YIG-based Magnonics"}} +{"enclosedEntityId":"40|aka_________::066705d02acb0c978dee1dbf89f235dd","minGrant":{"code":"128508","funder":"Academy of Finland","local_identifier":"40|aka_________::066705d02acb0c978dee1dbf89f235dd","title":"Insect herbivores in a multi-enemy world: the role of plant allelochemicals"}} +{"enclosedEntityId":"40|aka_________::0807f683e88d6d75f1dc152fd35ad613","minGrant":{"code":"118591","funder":"Academy of Finland","local_identifier":"40|aka_________::0807f683e88d6d75f1dc152fd35ad613","title":"Physical Activity and Genetic Factors in the Etiology of Metabolic Syndrome, Diabetes and Cardiovascular Disease"}} +{"enclosedEntityId":"40|aka_________::0a586655b6e4f6fc2870aef381061d83","minGrant":{"code":"131998","funder":"Academy of Finland","local_identifier":"40|aka_________::0a586655b6e4f6fc2870aef381061d83","title":"Post-war constructions of youth social problems: Policing youth, gender and delinquency in Finland, 1945-1970"}} +{"enclosedEntityId":"40|aka_________::0c0c832f6d9bb2045ade8e2b1b7b5202","minGrant":{"code":"127041","funder":"Academy of Finland","local_identifier":"40|aka_________::0c0c832f6d9bb2045ade8e2b1b7b5202","title":"Local Development, Social Innovation and Social Capital ¿ the Bulgarian case"}} +{"enclosedEntityId":"40|aka_________::0ee3adf25cc07bf65846f379d2ee882f","minGrant":{"code":"134278","funder":"Academy of Finland","local_identifier":"40|aka_________::0ee3adf25cc07bf65846f379d2ee882f","title":"The aquatic chemistry of aluminium silicates; Kinetics and Dynamics"}} +{"enclosedEntityId":"40|aka_________::1255b7377e2e41a81cd9ac9e0aea9739","minGrant":{"code":"78871","funder":"Academy of Finland","local_identifier":"40|aka_________::1255b7377e2e41a81cd9ac9e0aea9739","title":"Effects of magnesium lithospermate B on intracellular calsium release in endothelial cells"}} +{"enclosedEntityId":"40|aka_________::186c9e5f4705d0e85dcc7483abe4a7b5","minGrant":{"code":"120205","funder":"Academy of Finland","local_identifier":"40|aka_________::186c9e5f4705d0e85dcc7483abe4a7b5","title":"Seminar series on the nature and relations of social science knowledge and social epistemology."}} +{"enclosedEntityId":"40|aka_________::18814e2f047f4861e47dfd3261bf2021","minGrant":{"code":"207310","funder":"Academy of Finland","local_identifier":"40|aka_________::18814e2f047f4861e47dfd3261bf2021","title":"Factors contributingto the co-existence of invertebrate predators and fish in clay-turbid lakes - implications for lake restoration"}} +{"enclosedEntityId":"40|aka_________::1f59ecb9bd518ace77289e2c8bcd622f","minGrant":{"code":"294142","funder":"Academy of Finland","local_identifier":"40|aka_________::1f59ecb9bd518ace77289e2c8bcd622f","title":"Understanding and harnessing the quantum chemical origins of Nature's catalytic power"}} +{"enclosedEntityId":"40|aka_________::207d893289892d9a60527e095f6f57b5","minGrant":{"code":"286712","funder":"Academy of Finland","local_identifier":"40|aka_________::207d893289892d9a60527e095f6f57b5","title":"The role of lipids and membrane subdomains in B cell receptor organization and signaling"}} +{"enclosedEntityId":"40|aka_________::218329e2400634a14718b0c608659a73","minGrant":{"code":"124614","funder":"Academy of Finland","local_identifier":"40|aka_________::218329e2400634a14718b0c608659a73","title":"Res Publica: coordinating humans and things"}} +{"enclosedEntityId":"40|aka_________::228e875c365128b6df66f6a16e11ee3d","minGrant":{"code":"127624","funder":"Academy of Finland","local_identifier":"40|aka_________::228e875c365128b6df66f6a16e11ee3d","title":"Models and methods for integrating magnetoencephalography and dynamic magnetic resonance inverse imaging"}} +{"enclosedEntityId":"40|aka_________::22a615a6799c9d36261ff95cf268624a","minGrant":{"code":"118195","funder":"Academy of Finland","local_identifier":"40|aka_________::22a615a6799c9d36261ff95cf268624a","title":"Optical and Surface Properties of Nanoparticles"}} +{"enclosedEntityId":"40|aka_________::27326e10246f0ace453cd9ea7e4fe2cc","minGrant":{"code":"205917","funder":"Academy of Finland","local_identifier":"40|aka_________::27326e10246f0ace453cd9ea7e4fe2cc","title":"Development Ethics and the Rhetoric of Global Justice"}} +{"enclosedEntityId":"40|aka_________::282f59c4bb7fbc413b4b5d20be82ff2c","minGrant":{"code":"216312","funder":"Academy of Finland","local_identifier":"40|aka_________::282f59c4bb7fbc413b4b5d20be82ff2c","title":"Yhteishanke 15 RAS-SA"}} +{"enclosedEntityId":"40|aka_________::2a79dc440bea90acb421cb4262dd6ef3","minGrant":{"code":"118247","funder":"Academy of Finland","local_identifier":"40|aka_________::2a79dc440bea90acb421cb4262dd6ef3","title":"Paper, bioenergy and green chemicals from nonwood residues by a novel biorefinery (PEGRES)"}} +{"enclosedEntityId":"40|aka_________::2a7ab7393f164a2ae11b8a088d2972fb","minGrant":{"code":"115098","funder":"Academy of Finland","local_identifier":"40|aka_________::2a7ab7393f164a2ae11b8a088d2972fb","title":"Homology theory: A non-standard approach"}} +{"enclosedEntityId":"40|aka_________::2abaa9ec52576bcdfff43d49907f0f0b","minGrant":{"code":"81062","funder":"Academy of Finland","local_identifier":"40|aka_________::2abaa9ec52576bcdfff43d49907f0f0b","title":"Professional-client interaction in genetic counselling"}} +{"enclosedEntityId":"40|aka_________::31d52dbb6806e6bb7713bf36cad6241b","minGrant":{"code":"200554","funder":"Academy of Finland","local_identifier":"40|aka_________::31d52dbb6806e6bb7713bf36cad6241b","title":"CERC 3; Partisipation to the Workshop"}} +{"enclosedEntityId":"40|aka_________::36cd37c4efeb56bfe23c45b6d6d2f82a","minGrant":{"code":"218490","funder":"Academy of Finland","local_identifier":"40|aka_________::36cd37c4efeb56bfe23c45b6d6d2f82a","title":"Molecular mechanisms of STAT6 mediated transcription"}} +{"enclosedEntityId":"40|aka_________::371d2e092629b03f39bef41058d2266f","minGrant":{"code":"259176","funder":"Academy of Finland","local_identifier":"40|aka_________::371d2e092629b03f39bef41058d2266f","title":"6th Japan-Finnish Biotechnology Symposium in Sendai, Japan, June 2012"}} +{"enclosedEntityId":"40|aka_________::39ebb6f9d7647c3588d1de5d6bdb1ea6","minGrant":{"code":"259562","funder":"Academy of Finland","local_identifier":"40|aka_________::39ebb6f9d7647c3588d1de5d6bdb1ea6","title":"Comprehensive view on process of dispersal with individual tracking, genetic analysis and modelling"}} +{"enclosedEntityId":"40|aka_________::3dfbc1c05c6829be1142741f50637c70","minGrant":{"code":"251623","funder":"Academy of Finland","local_identifier":"40|aka_________::3dfbc1c05c6829be1142741f50637c70","title":"Stereospecific distribution of fatty acids in acylglycerols of nutritionally important lipids"}} +{"enclosedEntityId":"40|aka_________::40e9dd5da112258f9f8cab8fe9089341","minGrant":{"code":"203484","funder":"Academy of Finland","local_identifier":"40|aka_________::40e9dd5da112258f9f8cab8fe9089341","title":"research of microfossiles"}} +{"enclosedEntityId":"40|aka_________::4146425b0e0da208229fd572c7f06f3c","minGrant":{"code":"218149","funder":"Academy of Finland","local_identifier":"40|aka_________::4146425b0e0da208229fd572c7f06f3c","title":"Development of radiation hard silicon particle detectors for CERN LHC Upgrade"}} +{"enclosedEntityId":"40|aka_________::42207d9e78fa2daa52ff57d052defc5d","minGrant":{"code":"108291","funder":"Academy of Finland","local_identifier":"40|aka_________::42207d9e78fa2daa52ff57d052defc5d","title":"Reconstruction of Holocene climatic changes on the basis of microfossils in Finnish and Polish lake sediments"}} +{"enclosedEntityId":"40|aka_________::42fdc9c8db6e540ddd9698c1e0039d5f","minGrant":{"code":"325117","funder":"Academy of Finland","local_identifier":"40|aka_________::42fdc9c8db6e540ddd9698c1e0039d5f","title":"Model Management Systems: Machine learning meets Database Systems (MLDB) / Consortium: MLDB"}} +{"enclosedEntityId":"40|aka_________::434daecbc44532c03b0313928f0c321d","minGrant":{"code":"128040","funder":"Academy of Finland","local_identifier":"40|aka_________::434daecbc44532c03b0313928f0c321d","title":"A geological evolution model for effective utilization of the lithium deposits of Central Ostrobothnia region"}} +{"enclosedEntityId":"40|aka_________::45331b6aaab07314eddb989a074e597c","minGrant":{"code":"212376","funder":"Academy of Finland","local_identifier":"40|aka_________::45331b6aaab07314eddb989a074e597c","title":"Vernacular universals vs. contact-induced language change"}} +{"enclosedEntityId":"40|aka_________::45dc0e38ea84f1d81c05067da286733c","minGrant":{"code":"211611","funder":"Academy of Finland","local_identifier":"40|aka_________::45dc0e38ea84f1d81c05067da286733c","title":"Julkaisutoimintaan"}} +{"enclosedEntityId":"40|aka_________::463c01e55d9aae7434e5d34119020f97","minGrant":{"code":"133603","funder":"Academy of Finland","local_identifier":"40|aka_________::463c01e55d9aae7434e5d34119020f97","title":"The effects of intensive bio-fuel production and use on regional air quality and global climate"}} +{"enclosedEntityId":"40|aka_________::48c72a18f56e02deeab699caf23aa2cc","minGrant":{"code":"131129","funder":"Academy of Finland","local_identifier":"40|aka_________::48c72a18f56e02deeab699caf23aa2cc","title":"Postdoctoral Research at the University of Victoria in theoretical physics, in Canada"}} +{"enclosedEntityId":"40|aka_________::4a3a847ec9bf91c49da51296973a1b4c","minGrant":{"code":"203047","funder":"Academy of Finland","local_identifier":"40|aka_________::4a3a847ec9bf91c49da51296973a1b4c","title":"Kansainvälinen sellu- ja paperitekniikan tutkijakoulu"}} +{"enclosedEntityId":"40|aka_________::4b64d3704910ea2d6951d5f2c6a39cf8","minGrant":{"code":"109793","funder":"Academy of Finland","local_identifier":"40|aka_________::4b64d3704910ea2d6951d5f2c6a39cf8","title":"Environments and Evolutionary Dynamics of Fossil and Recent Land Mammal Communities: Combining Field Work, Data Mining and Modelling Approaches"}} +{"enclosedEntityId":"40|sshrc_______::1e5e62235d094afd01cd56e65112fc63","minGrant":{"code":"unidentified","funder":"Social Sciences and Humanities Research Council","local_identifier":"40|sshrc_______::1e5e62235d094afd01cd56e65112fc63","title":"unidentified"}} +{"enclosedEntityId":"40|wt__________::1e5e62235d094afd01cd56e65112fc63","minGrant":{"code":"unidentified","funder":"Wellcome Trust","local_identifier":"40|wt__________::1e5e62235d094afd01cd56e65112fc63","title":"unidentified"}} +{"enclosedEntityId":"40|nsf_________::7a5b4fbb6ed8545679194fe45a984ec9","minGrant":{"code":"1202095","funder":"National Science Foundation","local_identifier":"40|nsf_________::7a5b4fbb6ed8545679194fe45a984ec9","title":"Plasma-dynamics in Nano/Micro-Structures for RF to THz Applications"}} diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-5c1cd3a3-b306-457d-b39d-1e46b4f3f00b-c000.json.gz b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-5c1cd3a3-b306-457d-b39d-1e46b4f3f00b-c000.json.gz deleted file mode 100644 index 05216b295289dc3c4f1fa8e1d07d7e767381587b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3313 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 diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-7879c42e-0911-493f-90a4-5517475c8c49-c000.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-7879c42e-0911-493f-90a4-5517475c8c49-c000.json new file mode 100644 index 0000000..adb4d74 --- /dev/null +++ b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-7879c42e-0911-493f-90a4-5517475c8c49-c000.json @@ -0,0 +1,20 @@ +{"enclosedEntityId":"50|doi_________::0840e1cfdf65dd3abdeee453e234e034","minProduct":{"doi":"10.1177/0267323118790163","local_identifier":"50|doi_________::0840e1cfdf65dd3abdeee453e234e034","title":"Celebrities in Czech politics in 1996–2013"}} +{"enclosedEntityId":"50|doi_________::479f67164e2f1d21baafbfbc3b12851d","minProduct":{"doi":"10.1038/ejhg.2014.31","local_identifier":"50|doi_________::479f67164e2f1d21baafbfbc3b12851d"}} +{"enclosedEntityId":"50|doi_________::7078f75053e8c1bff562adbce2d81fe2","minProduct":{"doi":"10.1016/j.marmicro.2013.04.005","local_identifier":"50|doi_________::7078f75053e8c1bff562adbce2d81fe2","title":"Effect of dissolved oxygen concentration on planktonic foraminifera through laboratory culture experiments and implications for oceanic anoxic events"}} +{"enclosedEntityId":"50|doi_________::86d7aecc7029c70836d268b4ea9b974d","minProduct":{"doi":"10.1111/bij.12378","local_identifier":"50|doi_________::86d7aecc7029c70836d268b4ea9b974d","title":"Phylogeography of the humbug damselfish,Dascyllus aruanus(Linnaeus, 1758): evidence of Indo-Pacific vicariance and genetic differentiation of peripheral populations"}} +{"enclosedEntityId":"50|doi_________::a83b2a6d96883a5f2d360fb5fb7db8ae","minProduct":{"doi":"10.3389/fimmu.2018.01146","local_identifier":"50|doi_________::a83b2a6d96883a5f2d360fb5fb7db8ae"}} +{"enclosedEntityId":"50|doi_________::af75a7dc6b0ba2ca2349a68588ef877e","minProduct":{"doi":"10.1038/srep37852","local_identifier":"50|doi_________::af75a7dc6b0ba2ca2349a68588ef877e"}} +{"enclosedEntityId":"50|doi_dedup___::079ebd73b673282559d6f4befe003d47","minProduct":{"doi":"10.1002/cne.23131","local_identifier":"50|doi_dedup___::079ebd73b673282559d6f4befe003d47","title":"Galanin gene expression and effects of its knock‐down on the development of the nervous system in larval zebrafish"}} +{"enclosedEntityId":"50|doi_________::0363a8e9be16f62cdfd58b3def423a57","minProduct":{"doi":"10.3853/j.0067-1975.49.1997.1260","local_identifier":"50|doi_________::0363a8e9be16f62cdfd58b3def423a57","title":"Amphipoda from the South Pacific: Western Samoa"}} +{"enclosedEntityId":"50|doi_________::0888444d70ea8e3bcbc12d9d281fce22","minProduct":{"doi":"10.1063/1.4928566","local_identifier":"50|doi_________::0888444d70ea8e3bcbc12d9d281fce22","title":"Dark-to-arc transition in field emission dominated atmospheric microdischarges"}} +{"enclosedEntityId":"50|doi_________::0941e6d7170c6bbfb40721aa9ecff245","minProduct":{"doi":"10.1007/s10666-018-9616-4","local_identifier":"50|doi_________::0941e6d7170c6bbfb40721aa9ecff245","title":"The Strategic Impact of Adaptation in a Transboundary Pollution Dynamic Game"}} +{"enclosedEntityId":"50|doi_________::1f56d1b5a2e7c9223c3479476c9c3491","minProduct":{"doi":"10.1534/genetics.116.190215","local_identifier":"50|doi_________::1f56d1b5a2e7c9223c3479476c9c3491"}} +{"enclosedEntityId":"50|doi_________::579e3d4992475c1b375494c9e19b24ce","minProduct":{"doi":"10.1186/s13023-016-0515-y","local_identifier":"50|doi_________::579e3d4992475c1b375494c9e19b24ce","title":"8th European Conference on Rare Diseases & Orphan Products (ECRD 2016)"}} +{"enclosedEntityId":"50|doi_dedup___::893d0a5c08409822dbb82b8973a42909","minProduct":{"doi":"10.1111/j.1471-4159.2004.02190.x","local_identifier":"50|doi_dedup___::893d0a5c08409822dbb82b8973a42909","title":"Neurochemical and behavioural changes in zebrafish Danio rerio after systemic administration of 6‐hydroxydopamine and 1‐methyl‐4‐phenyl‐1,2,3,6‐tetrahydropyridine"}} +{"enclosedEntityId":"50|doi_dedup___::8b0484d2afbd9b09116ef60c18044964","minProduct":{"doi":"10.1016/0196-9781(89)90045-4","local_identifier":"50|doi_dedup___::8b0484d2afbd9b09116ef60c18044964","title":"Tissue-specific sex differences in galanin-like immunoreactivity and galanin mRNA during development in the rat"}} +{"enclosedEntityId":"50|doi_________::1034996a07e1496dde6048008e2187de","minProduct":{"doi":"10.1007/s10666-016-9501-y","local_identifier":"50|doi_________::1034996a07e1496dde6048008e2187de","title":"Mitigation vs. Adaptation: Analytic Models for Policy Assessment"}} +{"enclosedEntityId":"50|doi_________::81a64d0689f4a2f93995b81574d2fcbe","minProduct":{"doi":"10.1016/s0003-3472(71)80005-2","local_identifier":"50|doi_________::81a64d0689f4a2f93995b81574d2fcbe","title":"Apparent effect of prior experience on a habitat preference exhibited by the reef fish, Dascyllus aruanus (Pisces: Pomacentridae)"}} +{"enclosedEntityId":"50|doi_dedup___::7a40bb2e9ad2e96d6de26787ab1c310b","minProduct":{"doi":"10.1101/gr.107987.110","local_identifier":"50|doi_dedup___::7a40bb2e9ad2e96d6de26787ab1c310b","title":"Reshaping the gut microbiome with bacterial transplantation and antibiotic intake"}} +{"enclosedEntityId":"50|doi_dedup___::233bd897c6654f274059272b8740b47f","minProduct":{"doi":"10.1097/mol.0b013e32835918cd","local_identifier":"50|doi_dedup___::233bd897c6654f274059272b8740b47f","title":"Paternal transmission, cardiovascular risk factors and epigenetics"}} +{"enclosedEntityId":"50|doi_________::1647515a356946e4857c817afc7bfa38","minProduct":{"doi":"10.1088/0022-3727/47/50/503001","local_identifier":"50|doi_________::1647515a356946e4857c817afc7bfa38","title":"Microscale gas breakdown: ion-enhanced field emission and the modified Paschen’s curve"}} +{"enclosedEntityId":"50|doi_dedup___::6481edac8ee74c1f1bfa9c0fdd3e6f11","minProduct":{"doi":"10.1038/nature10811","local_identifier":"50|doi_dedup___::6481edac8ee74c1f1bfa9c0fdd3e6f11","title":"The Drosophila melanogaster Genetic Reference Panel"}} diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-7879c42e-0911-493f-90a4-5517475c8c49-c000.json.gz b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-7879c42e-0911-493f-90a4-5517475c8c49-c000.json.gz deleted file mode 100644 index 4222c29e0a602fb45a5580f3249025aab634d647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1959 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 G8UO%N=A?cA diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-b720d208-b8b9-4fa6-8898-444f4172f408-c000.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-b720d208-b8b9-4fa6-8898-444f4172f408-c000.json new file mode 100644 index 0000000..4d30d2d --- /dev/null +++ b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-b720d208-b8b9-4fa6-8898-444f4172f408-c000.json @@ -0,0 +1,34 @@ +{"enclosedEntityId":"20|openorgs____::131a553780dbaac8a5a9d2ed72184a4e","minOrganization":{"local_identifier":"20|openorgs____::131a553780dbaac8a5a9d2ed72184a4e","name":"Balter Medical (Norway)","ror":"https://ror.org/028521m47"}} +{"enclosedEntityId":"20|openorgs____::261fc6624613dfa43a9112ed1f3eeb24","minOrganization":{"local_identifier":"20|openorgs____::261fc6624613dfa43a9112ed1f3eeb24","name":"Seminario Bíblico de Colombia Fundación Universitaria","ror":"https://ror.org/0454xt523"}} +{"enclosedEntityId":"20|openorgs____::4638f0f5f68a09d88bdad3d219969e87","minOrganization":{"local_identifier":"20|openorgs____::4638f0f5f68a09d88bdad3d219969e87","name":"Global Health Association of Miami","ror":"https://ror.org/03vwqmf10"}} +{"enclosedEntityId":"20|openorgs____::a6e7e05b0f3f2b5fad7636b5c91ca564","minOrganization":{"isni":"0000000417629411","local_identifier":"20|openorgs____::a6e7e05b0f3f2b5fad7636b5c91ca564","name":"Al Ain University of Science and Technology","ror":"https://ror.org/023abrt21","wikidata":"Q4703454"}} +{"enclosedEntityId":"20|openorgs____::d425e923bef9e604ceba2582e98655d0","minOrganization":{"local_identifier":"20|openorgs____::d425e923bef9e604ceba2582e98655d0","name":"Dà-Jiāng Innovations Science and Technology (China)","ror":"https://ror.org/04fmkfb67","wikidata":"Q16924332"}} +{"enclosedEntityId":"20|openorgs____::dea7c5dc0120ae8387e55f73f06f15b9","minOrganization":{"local_identifier":"20|openorgs____::dea7c5dc0120ae8387e55f73f06f15b9","name":"Prombiom Tecnologia (Brazil)","ror":"https://ror.org/00cm1b035"}} +{"enclosedEntityId":"20|openorgs____::fdf2b3cf0d29f81fe747f98f925ddd25","minOrganization":{"local_identifier":"20|openorgs____::fdf2b3cf0d29f81fe747f98f925ddd25","name":"Oita Prefectural Yufu Support School","ror":"https://ror.org/00bxxsn28"}} +{"enclosedEntityId":"20|openorgs____::1d0d3689a72a8d8e72acb42938875c37","minOrganization":{"local_identifier":"20|openorgs____::1d0d3689a72a8d8e72acb42938875c37","name":"Grosses LF Foghts Fund","ror":"https://ror.org/01bn4mn58"}} +{"enclosedEntityId":"20|openorgs____::2ffbe7a78ecfe5cc6fc6747acafbf38f","minOrganization":{"isni":"0000000404018291","local_identifier":"20|openorgs____::2ffbe7a78ecfe5cc6fc6747acafbf38f","name":"Western Hospital","ror":"https://ror.org/05qv7gx64"}} +{"enclosedEntityId":"20|openorgs____::470cd1fef48a9d135b6e1b839305fa77","minOrganization":{"isni":"0000000417713349","local_identifier":"20|openorgs____::470cd1fef48a9d135b6e1b839305fa77","name":"China-Japan Friendship Hospital","ror":"https://ror.org/037cjxp13","wikidata":"Q5013040"}} +{"enclosedEntityId":"20|openorgs____::5f5774bad85a5a5cabc37ba96f68fc31","minOrganization":{"local_identifier":"20|openorgs____::5f5774bad85a5a5cabc37ba96f68fc31","name":"Freedom to Live","ror":"https://ror.org/04m7y9d03","wikidata":"Q30287250"}} +{"enclosedEntityId":"20|openorgs____::69d8c22104a233aed4fb91a66964f314","minOrganization":{"isni":"0000000406469053","local_identifier":"20|openorgs____::69d8c22104a233aed4fb91a66964f314","name":"Beijing Academy of Agricultural and Forestry Sciences","ror":"https://ror.org/04trzn023"}} +{"enclosedEntityId":"20|openorgs____::71eda1b0e57bbe2289bccf5dd6deda96","minOrganization":{"local_identifier":"20|openorgs____::71eda1b0e57bbe2289bccf5dd6deda96","name":"PRO-BIO Association of Organic Farmers","ror":"https://ror.org/022z4zx74"}} +{"enclosedEntityId":"20|openorgs____::d697e623f6f0070df329832637772a26","minOrganization":{"isni":"0000000417708099","local_identifier":"20|openorgs____::d697e623f6f0070df329832637772a26","name":"Universidad Tecnológica del Sureste de Veracruz","ror":"https://ror.org/003gh8k45","wikidata":"Q30293735"}} +{"enclosedEntityId":"20|fct_________::d257dbe94f60771eca25f07ea1ca2446","minOrganization":{"isni":"0000000119310410","local_identifier":"20|fct_________::d257dbe94f60771eca25f07ea1ca2446","name":"Governo da Republica Portuguesa Ministério da Defesa Nacional","rinGold":"RingGold:70945"}} +{"enclosedEntityId":"20|openorgs____::3e4d9491ea8eb63ce3f680f279f2b36a","minOrganization":{"local_identifier":"20|openorgs____::3e4d9491ea8eb63ce3f680f279f2b36a","name":"Uncopiers","ror":"https://ror.org/01f0erc76"}} +{"enclosedEntityId":"20|openorgs____::6f2c0aef6169d86ff799b705bf0da2cc","minOrganization":{"isni":"0000000404597684","local_identifier":"20|openorgs____::6f2c0aef6169d86ff799b705bf0da2cc","name":"Sarah Cannon Research Institute","ror":"https://ror.org/03cp5cj42","wikidata":"Q7422164"}} +{"enclosedEntityId":"20|openorgs____::cfb2ec0149c1b30a7577416f936b4f9a","minOrganization":{"isni":"0000000094855579","local_identifier":"20|openorgs____::cfb2ec0149c1b30a7577416f936b4f9a","name":"Alabama State University","ror":"https://ror.org/01eedy375","wikidata":"Q941524"}} +{"enclosedEntityId":"20|openorgs____::2d60bcec8a36ee26b92286dd541b91db","minOrganization":{"local_identifier":"20|openorgs____::2d60bcec8a36ee26b92286dd541b91db","name":"Cardiaccs (Norway)","ror":"https://ror.org/039726g63"}} +{"enclosedEntityId":"20|openorgs____::566c614eb2fbe378e1c5e536fc897a81","minOrganization":{"local_identifier":"20|openorgs____::566c614eb2fbe378e1c5e536fc897a81","name":"UniCredit (United States)","ror":"https://ror.org/01mrzcs29","wikidata":"Q30338823"}} +{"enclosedEntityId":"20|openorgs____::6879960765450300a5e651f6775f3337","minOrganization":{"isni":"0000000453456247","local_identifier":"20|openorgs____::6879960765450300a5e651f6775f3337","name":"Universidad Nacional de Pilar","ror":"https://ror.org/03p5xhb29","wikidata":"Q1570663"}} +{"enclosedEntityId":"20|openorgs____::756f0578d1599a0232c37048829aa1a8","minOrganization":{"isni":"0000000446599514","local_identifier":"20|openorgs____::756f0578d1599a0232c37048829aa1a8","name":"Biomer Technology (United Kingdom)","ror":"https://ror.org/01szvzc53"}} +{"enclosedEntityId":"20|openorgs____::a1399ef06ded575a2d8b763f0626a8d8","minOrganization":{"isni":"0000000119457711","local_identifier":"20|openorgs____::a1399ef06ded575a2d8b763f0626a8d8","name":"Instituto de Investigaciones Marinas","ror":"https://ror.org/01603fg59"}} +{"enclosedEntityId":"20|openorgs____::a569e7bc1c32ff065802c88e456892bc","minOrganization":{"local_identifier":"20|openorgs____::a569e7bc1c32ff065802c88e456892bc","name":"MSD (Lithuania)","ror":"https://ror.org/03cnjaa38","wikidata":"Q30269105"}} +{"enclosedEntityId":"20|openorgs____::b8b8ca674452579f3f593d9f5e557483","minOrganization":{"isni":"0000000123318773","local_identifier":"20|openorgs____::b8b8ca674452579f3f593d9f5e557483","name":"University College Cork","ror":"https://ror.org/03265fv13","wikidata":"Q1574185"}} +{"enclosedEntityId":"20|openorgs____::33f2ec599c4e086e750c126f19552f67","minOrganization":{"isni":"0000000404841472","local_identifier":"20|openorgs____::33f2ec599c4e086e750c126f19552f67","name":"Purdue University System","ror":"https://ror.org/05p8z3f47","wikidata":"Q929715"}} +{"enclosedEntityId":"20|openorgs____::45327df9862294107f84a90daa1e0cbc","minOrganization":{"isni":"0000000405460241","local_identifier":"20|openorgs____::45327df9862294107f84a90daa1e0cbc","name":"National Taiwan University of Arts","ror":"https://ror.org/05bqach95","wikidata":"Q6978838"}} +{"enclosedEntityId":"20|openorgs____::c9f6cad9752276cb556e88a5111e86aa","minOrganization":{"isni":"0000000419369684","local_identifier":"20|openorgs____::c9f6cad9752276cb556e88a5111e86aa","name":"University of California, Davis","ror":"https://ror.org/05rrcem69","wikidata":"Q129421"}} +{"enclosedEntityId":"20|openorgs____::6a7b1b4c40a067a1f209de6867fe094d","minOrganization":{"isni":"0000000419368948","local_identifier":"20|openorgs____::6a7b1b4c40a067a1f209de6867fe094d","name":"University of Oxford","ror":"https://ror.org/052gg0110","wikidata":"Q6786826"}} +{"enclosedEntityId":"20|openorgs____::013584bf907fdcb40bcec00b5a78fc12","minOrganization":{"isni":"0000000419372197","local_identifier":"20|openorgs____::013584bf907fdcb40bcec00b5a78fc12","name":"Purdue University West Lafayette","ror":"https://ror.org/04keq6987","wikidata":"Q217741"}} +{"enclosedEntityId":"20|openorgs____::4dee7ea0d1fd1b48c199ee744e21dc13","minOrganization":{"isni":"0000000119425154","local_identifier":"20|openorgs____::4dee7ea0d1fd1b48c199ee744e21dc13","name":"Helmholtz Association of German Research Centres","ror":"https://ror.org/0281dp749","wikidata":"Q679913"}} +{"enclosedEntityId":"20|openorgs____::0ff89de99d4a8f4b04cb162bcb5740cf","minOrganization":{"isni":"0000000121807477","local_identifier":"20|openorgs____::0ff89de99d4a8f4b04cb162bcb5740cf","name":"Australian National University","ror":"https://ror.org/019wvm592","wikidata":"Q127990"}} +{"enclosedEntityId":"20|openorgs____::9d3eb607509fcacae1c5a7f25e36e3e5","minOrganization":{"isni":"0000000121496795","local_identifier":"20|openorgs____::9d3eb607509fcacae1c5a7f25e36e3e5","name":"University of Warmia and Mazury in Olsztyn","ror":"https://ror.org/05s4feg49","wikidata":"Q1733433"}} +{"enclosedEntityId":"20|openorgs____::0ae431b820e4c33db8967fbb2b919150","minOrganization":{"isni":"0000000404102071","local_identifier":"20|openorgs____::0ae431b820e4c33db8967fbb2b919150","name":"University of Helsinki","ror":"https://ror.org/040af2s02","wikidata":"Q28695"}} diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-b720d208-b8b9-4fa6-8898-444f4172f408-c000.json.gz b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-b720d208-b8b9-4fa6-8898-444f4172f408-c000.json.gz deleted file mode 100644 index 3a1889d81f23444eb52ebda6aad2200806f5f5ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2336 zcmV+*3E%b~iwFP!000000Hs>Xb{oeL-RCRjaHX7MNBw?ir$=bZ(Zi9P_+;f%-CYfg z1k6A)1B!&>MgAn)EVA+^C?A#@3h)CIhCLLx5Gf72P`9h@y;abUXV}D5+hh83Gt|S? z({%RWOt62p8*JKc(f>fN2M@U9ptZD)r2r5eXz)p3vVuDW3eUbcTi4CYZUIfbgQ0Gl zvj;z(t=b5yAL@j3a;~wv7~IC&4lSF1MAEq{%4>&xn4-?y>84pp_edS1i2KAo|= zc>ivlIV;Z?3|eG5uq?9(IzzHXnxLcS5wtmR@pa$SbQ=5kQrsHh73cJD2^Ix0_gFk! zRS)am-1pUp!RuI4W>`U!s_!r^8>*1S)kHT)2;CsYclW-2TPGNR9{a1ZOj3oELzR@! z=!FcJJsPGW1`yf_^v-CV*xiex;N(3ZPd@zn%Wvxc{i|72Pn)K_xDL~wfTX(jcu5^K zK@=*l-{xTK5j5O*p`;WuutBg|ORkr<8=gd#(j1?{j@g+*f_u zVa7OYJEDt!Z1c8yz1?iuZlH2lw(V*n=Wu!1H^Ptiza5$7o2o=n5c04w?A7 zhz#kAJK;;oups6>|L?IU8_-l=xBZ5$f8u`iy9>LxG&8u3$S{&5V^)q_2$wn--FU-6k=05Xl8vF7a*g#XAcSLomU)GxfAf%0NE;n2r@tbB`(lwRC zqqDYF1xQYlP16wqRb~KhNX~PV{O;vnaPl66^A0f)yA5sijO1{F)YtaPCw82)BwJ{O zo{_a7pAv=OOo5ORFsU3o2V=ZZS@JS(z>G4UX<1kl1u+k<80$AR>EOc%3D?)o;NhaH z<979t5l1aNZ#!z5?&=_r{RC=5w`4w9YLn<6yt#W(6r6m} zyjL&3eDw6?u}%CKG*;)(t;sk|cq6e>yGuLA1sQMA2$@Z0%(9fF@J#BvvGkV>RG7Rs0=0h~0KKp^NyglY&+=dR8)nlMBqM^I*5xTgfsiLQZw!?(J$hgt* zjS@$lVHMH#9M2JR5Jj8)|ew{!k3WW6eO4?(_put#+8L)_CScn)MNP{R$@FV~xC9OCqVG5tIin;ydgW-ZM z)evJ}uxygv3bQaXgi{+64ObWhSzk%cmq(3SlJj-mg8Ljdb^FP`3dQ3NQ$1Ao=-UC) z$BXVK66Nb|7klAvD1xL}WsY$$j+&B)*=VJiWDGPK&9kvqXDLq&Q%Ag@rP4+yTgnT! z$NYqZ9(aC~%x~)zbQ5K;(U;3`10Aj{Gjoc=Y7%*EUENd3s3Pt{MqyVylN0}J5Nd(3RKecEae$pvf1)rTu{a_;t+dn^u8alNK}+FX#gsu$Mp$#<3BJ(b9mJ(Sc2_hRIwxoB_@d7yLh@D%VNDEL8*~md=Nz4ZBG;*C z95cS$lo!Oj*-wPXV_4O>?TBfR3@=G@&_zY_THt?XLV!(_Ao(1y> zjWaeQdF@n;jw54UYE5pB`AKwMUJ^DF`(G^<3z9!}Trt)eCuWRsj7#lQ$et=Y#h|V| zG-E-7b(sjD6ca1BFSTn0F;7y>xF@cjL53?Frsg>H7T+1~jwwg*aU_~SISJ7su*7qs zYjly5e?Za>6g)*t(wdcE>BSudrLgZwBAT6tA0F5DLfB z#;W5EGvurJ3{S^$c2wTpCj~C6z*G#}kjV%nfh-n%#=r%4%qm-4O}EE9OugHF=!kU) znP14dX!iB*FV@;0?*zCYbY^UveUcbxO3}>c2oc8l4Qv(~X=0Ul;-j@2;3!YGq6@(( zi1|tS`5wA;4cBYt=djy$S5@6qFIW9;xN0UysaF{nH>!wRDV3a4Mu1B4-~>YzrA)z5 z&N&1@lf38p#D~#0{10b>*;1h|i1|sRs0aJHc{}m{7Kr+@=-F}k2xt7Y`T0L`!1v~? GBLDz!u6hgr diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-d82887dd-9c95-49fc-9efc-0feee839fa0b-c000.json b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-d82887dd-9c95-49fc-9efc-0feee839fa0b-c000.json new file mode 100644 index 0000000..0596d75 --- /dev/null +++ b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-d82887dd-9c95-49fc-9efc-0feee839fa0b-c000.json @@ -0,0 +1,44 @@ +{"enclosedEntityId":"10|06cdd3ff4700::69433f5cb51fe4c3959d9a892c8eff4a","minVenue":{"local_identifier":"temp_venue__::69433f5cb51fe4c3959d9a892c8eff4a","name":"Analyse de réseaux pour les sciences sociales"}} +{"enclosedEntityId":"10|doajarticles::008cf70ae79b184f4fe3c0547e98a582","minVenue":{"local_identifier":"temp_venue__::008cf70ae79b184f4fe3c0547e98a582","name":"Revista Electrónica Sinéctica"}} +{"enclosedEntityId":"10|doajarticles::00eb4160e4726f60887b60fa7df15e32","minVenue":{"local_identifier":"temp_venue__::00eb4160e4726f60887b60fa7df15e32","name":"Jurnal Soeropati"}} +{"enclosedEntityId":"10|doajarticles::0c217533c6e0bfe1a4a36a093f8c23e2","minVenue":{"local_identifier":"temp_venue__::0c217533c6e0bfe1a4a36a093f8c23e2","name":"Acta Zoologica Academiae Scientiarum Hungaricae"}} +{"enclosedEntityId":"10|doajarticles::0cccd429850ed396c90777b54cf52a1c","minVenue":{"local_identifier":"temp_venue__::0cccd429850ed396c90777b54cf52a1c","name":"Патология кровообращения и кардиохирургия"}} +{"enclosedEntityId":"10|doajarticles::0d957b8eca7fe947571d6400474c95de","minVenue":{"local_identifier":"temp_venue__::0d957b8eca7fe947571d6400474c95de","name":"Journal of the Illuminating Engineering Institute of Japan"}} +{"enclosedEntityId":"10|doajarticles::0db249d213651f07c9dabeb3edc53efc","minVenue":{"local_identifier":"temp_venue__::0db249d213651f07c9dabeb3edc53efc","name":"Drug Metabolism and Pharmacokinetics"}} +{"enclosedEntityId":"10|doajarticles::0ee8ccdef95fedf8ed8f0a62e7c2c8af","minVenue":{"local_identifier":"temp_venue__::d41d8cd98f00b204e9800998ecf8427e","name":"BMC Medical Imaging"}} +{"enclosedEntityId":"10|doajarticles::0f7fe9973717cb7ac2bba8685bc88a2a","minVenue":{"local_identifier":"temp_venue__::0f7fe9973717cb7ac2bba8685bc88a2a","name":"Reflektika"}} +{"enclosedEntityId":"10|doajarticles::10769bf5b219fbdf75d6bd2d8bd45406","minVenue":{"local_identifier":"temp_venue__::10769bf5b219fbdf75d6bd2d8bd45406","name":"e-Finanse"}} +{"enclosedEntityId":"10|doajarticles::10960937f086496a32324c9eeb1cf380","minVenue":{"local_identifier":"temp_venue__::10960937f086496a32324c9eeb1cf380","name":"ILIRIA International Review"}} +{"enclosedEntityId":"10|doajarticles::15215d4c9ae17e4e738c1a09c06aacee","minVenue":{"local_identifier":"temp_venue__::d41d8cd98f00b204e9800998ecf8427e","name":"Storia e Futuro"}} +{"enclosedEntityId":"10|doajarticles::15d8c3c4f653bffd815dbdbb1ce56d93","minVenue":{"local_identifier":"temp_venue__::15d8c3c4f653bffd815dbdbb1ce56d93","name":"پژوهش‌های ریاضی"}} +{"enclosedEntityId":"10|doajarticles::176acb5e4cef928cfb0ec4adeacaee89","minVenue":{"local_identifier":"temp_venue__::176acb5e4cef928cfb0ec4adeacaee89","name":"Indian Journal of Occupational and Environmental Medicine"}} +{"enclosedEntityId":"10|doajarticles::18c7e558fdce9c26c97cb0336b0584ff","minVenue":{"local_identifier":"temp_venue__::18c7e558fdce9c26c97cb0336b0584ff","name":"Mercator : Revista de Geografia da UFC"}} +{"enclosedEntityId":"10|doajarticles::192e590353f6cf9af3fdba01b1e1cfde","minVenue":{"local_identifier":"temp_venue__::192e590353f6cf9af3fdba01b1e1cfde","name":"Journal of International Translational Medicine"}} +{"enclosedEntityId":"10|doajarticles::1a4560f88542bcb1b8d7f49b98244d57","minVenue":{"local_identifier":"temp_venue__::1a4560f88542bcb1b8d7f49b98244d57","name":"Емінак"}} +{"enclosedEntityId":"10|doajarticles::1c8148b0dbade0f654ed77b6213f5926","minVenue":{"local_identifier":"temp_venue__::1c8148b0dbade0f654ed77b6213f5926","name":"Terra Sebus: Acta Musei Sabesiensis"}} +{"enclosedEntityId":"10|doajarticles::201d90c44e936c5fc512731c567bfafe","minVenue":{"local_identifier":"temp_venue__::d41d8cd98f00b204e9800998ecf8427e","name":"AIMS Allergy and Immunology"}} +{"enclosedEntityId":"10|doajarticles::2102c11ea98b6a8196ceec8c07444bd0","minVenue":{"local_identifier":"temp_venue__::2102c11ea98b6a8196ceec8c07444bd0","name":"Revista Organizações em Contexto"}} +{"enclosedEntityId":"10|doajarticles::2226acf8a08b9d804c69f409383353c3","minVenue":{"local_identifier":"temp_venue__::d41d8cd98f00b204e9800998ecf8427e","name":"Frontiers in Bird Science"}} +{"enclosedEntityId":"10|doajarticles::27be52df8acc8b659e75ec6221f4ccc9","minVenue":{"local_identifier":"temp_venue__::27be52df8acc8b659e75ec6221f4ccc9","name":"Jurnal Mediakita"}} +{"enclosedEntityId":"10|doajarticles::27f5e80d5e90370663ced5e93f343922","minVenue":{"local_identifier":"temp_venue__::d41d8cd98f00b204e9800998ecf8427e","name":"Frontiers in Bioengineering and Biotechnology"}} +{"enclosedEntityId":"10|doajarticles::29c549c62b532a88d2b700a8e0959140","minVenue":{"local_identifier":"temp_venue__::29c549c62b532a88d2b700a8e0959140","name":"Applied Engineering Letters"}} +{"enclosedEntityId":"10|doajarticles::29c6094ddd0e95cfbbf6904b671276f2","minVenue":{"local_identifier":"temp_venue__::29c6094ddd0e95cfbbf6904b671276f2","name":"Zoonoses"}} +{"enclosedEntityId":"10|doajarticles::29e93cc8b85cb7b8e97efd5a1e54f750","minVenue":{"local_identifier":"temp_venue__::29e93cc8b85cb7b8e97efd5a1e54f750","name":"Wirtschaftsdienst"}} +{"enclosedEntityId":"10|doajarticles::2d7182c08442361426031a606d5dfa51","minVenue":{"local_identifier":"temp_venue__::d41d8cd98f00b204e9800998ecf8427e","name":"Jurnal Mekanik Terapan"}} +{"enclosedEntityId":"10|doajarticles::2f4f6ae448e6d8894402e1e578d8add5","minVenue":{"local_identifier":"temp_venue__::2f4f6ae448e6d8894402e1e578d8add5","name":"International Journal of Environmental Research and Public Health"}} +{"enclosedEntityId":"10|doajarticles::3169f7cfe0a07828e3cefe88f624a2be","minVenue":{"local_identifier":"temp_venue__::d41d8cd98f00b204e9800998ecf8427e","name":"Phytopathology Research"}} +{"enclosedEntityId":"10|doajarticles::3184d8b36fce56f3b2f003d71a482208","minVenue":{"local_identifier":"temp_venue__::d41d8cd98f00b204e9800998ecf8427e","name":"International Journal of Racket Sports Science"}} +{"enclosedEntityId":"10|doajarticles::381006a9dc56ce643cd07d1626032951","minVenue":{"local_identifier":"temp_venue__::381006a9dc56ce643cd07d1626032951","name":"Economy"}} +{"enclosedEntityId":"10|doajarticles::3c46128f8958c5c4eecedcaa4f901107","minVenue":{"local_identifier":"temp_venue__::d41d8cd98f00b204e9800998ecf8427e","name":"GiLE Journal of Skills Development"}} +{"enclosedEntityId":"10|doajarticles::3d68963fdb08bef6733f6eceba6d4529","minVenue":{"local_identifier":"temp_venue__::3d68963fdb08bef6733f6eceba6d4529","name":"The Internet Journal of Gynecology and Obstetrics"}} +{"enclosedEntityId":"10|doajarticles::3d8d349471917017eb42012997ccc9c4","minVenue":{"local_identifier":"temp_venue__::3d8d349471917017eb42012997ccc9c4","name":"International Journal on Applications of Graph Theory in Wireless ad hoc Networks and Sensor Networks"}} +{"enclosedEntityId":"10|doajarticles::3e182197bc8f29afb81f18af8576bc87","minVenue":{"local_identifier":"temp_venue__::3e182197bc8f29afb81f18af8576bc87","name":"اسلام و مدیریت"}} +{"enclosedEntityId":"10|doajarticles::3e8734d0869c179053138585b8148c6d","minVenue":{"local_identifier":"temp_venue__::3e8734d0869c179053138585b8148c6d","name":"Duke Journal of Gender Law & Policy"}} +{"enclosedEntityId":"10|doajarticles::3ebbbfe48c7b3ed215d75501cefcbafa","minVenue":{"local_identifier":"temp_venue__::3ebbbfe48c7b3ed215d75501cefcbafa","name":"Journal of BioScience and Biotechnology"}} +{"enclosedEntityId":"10|doajarticles::3f6a9897445d696f70272c1799472ccb","minVenue":{"local_identifier":"temp_venue__::3f6a9897445d696f70272c1799472ccb","name":"Arabic Literatures for Academic Zealots"}} +{"enclosedEntityId":"10|issn___print::0c5c2b0effc9281e07a078747254e8b7","minVenue":{"local_identifier":"temp_venue__::0c5c2b0effc9281e07a078747254e8b7","name":"Peptides"}} +{"enclosedEntityId":"10|doajarticles::fcf556693aaa9aaf5e9d466cabb47001","minVenue":{"local_identifier":"temp_venue__::fcf556693aaa9aaf5e9d466cabb47001","name":"Records of the Australian Museum"}} +{"enclosedEntityId":"10|issn___print::adfbde8d7e865d2507cb180b9b43712b","minVenue":{"local_identifier":"temp_venue__::adfbde8d7e865d2507cb180b9b43712b","name":"Current Opinion in Lipidology"}} +{"enclosedEntityId":"10|issn___print::094790b7d3268cb0aa34ef1a4eb073c8","minVenue":{"local_identifier":"temp_venue__::094790b7d3268cb0aa34ef1a4eb073c8","name":"Genome Research"}} +{"enclosedEntityId":"10|issn___print::a212960a5e88e1d2e9169c10e8f5e345","minVenue":{"local_identifier":"temp_venue__::a212960a5e88e1d2e9169c10e8f5e345","name":"Journal of Physics D Applied Physics"}} +{"enclosedEntityId":"10|issn___print::32a67ba964e0afcb945f2cb69952f00d","minVenue":{"local_identifier":"temp_venue__::32a67ba964e0afcb945f2cb69952f00d","name":"Environmental Modeling & Assessment"}} diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-d82887dd-9c95-49fc-9efc-0feee839fa0b-c000.json.gz b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minEntity/part-00000-d82887dd-9c95-49fc-9efc-0feee839fa0b-c000.json.gz deleted file mode 100644 index b17fb70d6f76f7a06d3bbd5934b5074f8113f5db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2294 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 aruanus(Linnaeus, 1758): evidence of Indo-Pacific vicariance and genetic differentiation of peripheral populations"} +{"doi":"10.3389/fimmu.2018.01146","local_identifier":"50|doi_________::a83b2a6d96883a5f2d360fb5fb7db8ae"} +{"doi":"10.1038/srep37852","local_identifier":"50|doi_________::af75a7dc6b0ba2ca2349a68588ef877e"} +{"doi":"10.1002/cne.23131","local_identifier":"50|doi_dedup___::079ebd73b673282559d6f4befe003d47","title":"Galanin gene expression and effects of its knock‐down on the development of the nervous system in larval zebrafish"} +{"doi":"10.3853/j.0067-1975.49.1997.1260","local_identifier":"50|doi_________::0363a8e9be16f62cdfd58b3def423a57","title":"Amphipoda from the South Pacific: Western Samoa"} +{"doi":"10.1063/1.4928566","local_identifier":"50|doi_________::0888444d70ea8e3bcbc12d9d281fce22","title":"Dark-to-arc transition in field emission dominated atmospheric microdischarges"} +{"doi":"10.1007/s10666-018-9616-4","local_identifier":"50|doi_________::0941e6d7170c6bbfb40721aa9ecff245","title":"The Strategic Impact of Adaptation in a Transboundary Pollution Dynamic Game"} +{"doi":"10.1534/genetics.116.190215","local_identifier":"50|doi_________::1f56d1b5a2e7c9223c3479476c9c3491"} +{"doi":"10.1186/s13023-016-0515-y","local_identifier":"50|doi_________::579e3d4992475c1b375494c9e19b24ce","title":"8th European Conference on Rare Diseases & Orphan Products (ECRD 2016)"} +{"doi":"10.1111/j.1471-4159.2004.02190.x","local_identifier":"50|doi_dedup___::893d0a5c08409822dbb82b8973a42909","title":"Neurochemical and behavioural changes in zebrafish Danio rerio after systemic administration of 6‐hydroxydopamine and 1‐methyl‐4‐phenyl‐1,2,3,6‐tetrahydropyridine"} +{"doi":"10.1016/0196-9781(89)90045-4","local_identifier":"50|doi_dedup___::8b0484d2afbd9b09116ef60c18044964","title":"Tissue-specific sex differences in galanin-like immunoreactivity and galanin mRNA during development in the rat"} +{"doi":"10.1007/s10666-016-9501-y","local_identifier":"50|doi_________::1034996a07e1496dde6048008e2187de","title":"Mitigation vs. Adaptation: Analytic Models for Policy Assessment"} +{"doi":"10.1016/s0003-3472(71)80005-2","local_identifier":"50|doi_________::81a64d0689f4a2f93995b81574d2fcbe","title":"Apparent effect of prior experience on a habitat preference exhibited by the reef fish, Dascyllus aruanus (Pisces: Pomacentridae)"} +{"doi":"10.1101/gr.107987.110","local_identifier":"50|doi_dedup___::7a40bb2e9ad2e96d6de26787ab1c310b","title":"Reshaping the gut microbiome with bacterial transplantation and antibiotic intake"} +{"doi":"10.1097/mol.0b013e32835918cd","local_identifier":"50|doi_dedup___::233bd897c6654f274059272b8740b47f","title":"Paternal transmission, cardiovascular risk factors and epigenetics"} +{"doi":"10.1088/0022-3727/47/50/503001","local_identifier":"50|doi_________::1647515a356946e4857c817afc7bfa38","title":"Microscale gas breakdown: ion-enhanced field emission and the modified Paschen’s curve"} +{"doi":"10.1038/nature10811","local_identifier":"50|doi_dedup___::6481edac8ee74c1f1bfa9c0fdd3e6f11","title":"The Drosophila melanogaster Genetic Reference Panel"} diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minProduct/part3 b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minProduct/part3 new file mode 100644 index 0000000..6bf2ae2 --- /dev/null +++ b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minProduct/part3 @@ -0,0 +1,32 @@ +{"local_identifier":"50|__bioTools__::3640ff1dd63f33b085265311638a2ef1","title":"Information-based Similarity Toolbox"} +{"local_identifier":"50|__bioTools__::6a8a9601934e1d566bdc9e387f106cad","title":"MuSiC suite: PoPMuSiC, HoTMuSiC, and SNPMuSiC"} +{"local_identifier":"50|__bioTools__::8e5431247fb491ae7cf46b4806abbfaf","title":"A GUI for bacterial identification"} +{"local_identifier":"50|__bioTools__::cee88972c28033daaca8786a265da604","title":"OligoCalc"} +{"local_identifier":"50|__bioTools__::e1594e9122869da8eec86671ab713259","title":"PaSS"} +{"local_identifier":"50|__bioTools__::ec9a52d4c30788879d1e5fd097171f5f","title":"BiSeq"} +{"local_identifier":"50|__bioTools__::f50acbc8c02cd875a9e83a78ed8f285d","title":"BlastKOALA"} +{"local_identifier":"50|dedup_wf_002::47f351f4d17708772645eb4f556d802d","title":"CodeSearchNet software on GitHub"} +{"local_identifier":"50|dedup_wf_002::48d5bd6174ba13c5e20b577e71f3a330","title":"Logiciel WAFA (Welfare assessment of farm animal). Outil d'aide à l'évaluation du bien-être des animaux (outil de saisie, base de données, logiciel de calcul de scores de bien-être, outil de simulation, ressource d'informations, pages web)"} +{"local_identifier":"50|dedup_wf_002::4d37f1fd55ae2c11290d4b161060f302","title":"DeepCCA software on GitHub"} +{"local_identifier":"50|dedup_wf_002::a36d36bcd9e8fe405cfc82fc8b84294f","title":"questionr"} +{"local_identifier":"50|dedup_wf_002::b82b856ebd89cdd36b8107e475280e9e","title":"snmalloc software on GitHub"} +{"doi":"10.24433/co.2868322.v1","local_identifier":"50|doi_________::07ca00c92c3093a76fcae84b2185ed85","title":"Image Quality Environment for FPGA Floating-Point Video Processing Library"} +{"doi":"10.5281/zenodo.3724469","local_identifier":"50|doi_________::094b6aff40ccf64df47063a59ab83da1","title":"stonerlab/Stoner-PythonCode: v0.9.5 Bugfix and improvement release"} +{"doi":"10.5281/zenodo.4763538","local_identifier":"50|doi_________::15b9e4e4e1102ae67e1b0e567a7593fc","title":"poliastro/poliastro: poliastro 0.15.0 (Earth edition)"} +{"doi":"10.5281/zenodo.1251581","local_identifier":"50|doi_________::16be0dfa4fa679bed49d01fc4471cabd","title":"sotorrent/posthistory-extractor: Refactored release"} +{"doi":"10.5281/zenodo.3979689","local_identifier":"50|doi_________::185d0f8b38dfeb9f567f30a3190a916c","title":"InsightSoftwareConsortium/ITKElastix: ITKElastix 0.6.3"} +{"local_identifier":"50|__bioTools__::022faad7a573c4f12301c486815a3fa5","title":"petalNet"} +{"local_identifier":"50|__bioTools__::0c42b0be275910c096d2bacaccff89ad","title":"Diversity Workbench"} +{"local_identifier":"50|__bioTools__::58861f6ae561f40b585e44c0734b4a70","title":"HMCan"} +{"local_identifier":"50|__bioTools__::85fb610b34dc395431f8eda781566c4e","title":"iAssembler"} +{"local_identifier":"50|__bioTools__::97b678c1b70fe0b13197be61111a3513","title":"DNA Baser"} +{"local_identifier":"50|__bioTools__::9961460fe6c9852c36bdbfea8b7fbf2c","title":"lncRNAdb"} +{"local_identifier":"50|__bioTools__::c802825f3b3a94343e30a18ed23d4786","title":"Gene Set Builder"} +{"local_identifier":"50|dedup_wf_002::629f6117216829e2582934ac1d845d9e","title":"Support tool for the overall assessment of animal welfare"} +{"local_identifier":"50|dedup_wf_002::6ae16f2f40fa342f71a5e1a0a11eb962","title":"transforms3d software on GitHub"} +{"local_identifier":"50|dedup_wf_002::b4f06f3b28fa9cd2d7b9185e3f6604eb","title":"varcmp software on GitHub"} +{"local_identifier":"50|dedup_wf_002::e3373c97b277d3f0f3f6c21d688ae520","title":"OpenDSS-G software on SourceForge"} +{"doi":"10.5281/zenodo.7254817","local_identifier":"50|doi_________::0abc081de6a2fe9506b20e8b58389cb2","title":"napari/magicgui: v0.6.0"} +{"doi":"10.18129/b9.bioc.adam","local_identifier":"50|doi_________::0c6f89082f07ea5c737eaf25d0712e01","title":"ADAM"} +{"doi":"10.5281/zenodo.573248","local_identifier":"50|doi_________::115332ff9a5e3d15a4c79bc3e819e165","title":"PeterMulhair/planets: First release of Science software"} +{"doi":"10.5281/zenodo.50641","local_identifier":"50|doi_________::115a8028953b0488dbb04c0f99b9dd62","title":"libfreenect2: Release 0.2"} diff --git a/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minProduct/part4 b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minProduct/part4 new file mode 100644 index 0000000..a65e5c2 --- /dev/null +++ b/dump/src/test/resources/eu/dnetlib/dhp/oa/graph/dump/skgif/workingDirApiExample/minProduct/part4 @@ -0,0 +1,54 @@ +{"local_identifier":"50|475c1990cbb2::100f1774e6061b0926892da5e93d6c9d","title":"CAGDB - NATGAM - Campbellton/Bathurst"} +{"local_identifier":"50|475c1990cbb2::4646d85eae5eec4bf2f18fcbad21f57b","title":"Travel Activities and Motivation Survey, 2006"} +{"local_identifier":"50|475c1990cbb2::4f36c055af3184c6216cc4eae5988556","title":"Centres d'artistes autogérés du Québec"} +{"local_identifier":"50|475c1990cbb2::aaf64bbe32caceb6975d06961daa8755","title":"Profile for Statistical Area Classification, 2006 Census"} +{"local_identifier":"50|475c1990cbb2::c3851713a5d4af37f222d512402b92ce","title":"Territorial provincial borders - 1M"} +{"local_identifier":"50|475c1990cbb2::c857f2c92ae1fd825eb7d5ac4a49d528","title":"Lithoprobe AG Transect MT; 13 sites from AG pontiac; magnetotelluric"} +{"local_identifier":"50|475c1990cbb2::d766f95e68bbbc591c182617ab1d8c17","title":"Cadastral Information for Chemawawin 1"} +{"local_identifier":"50|475c1990cbb2::dc450205363661be28029a55eca89e21","title":"Bedrock geology compilation of the eastern Rackla belt, NTS 105N/15, 105N/16, 105O/13, 106B/4, 106C/1, 106C/2, east-central Yukon"} +{"local_identifier":"50|475c1990cbb2::df09e45d51554cc803b2a83d1cde48bb","title":"Petroleum and Natural Gas Grid Unit"} +{"local_identifier":"50|475c1990cbb2::dfc9ec4f6f0dd6b7b7319065b976cb6a","title":"Open Data Goal 3"} +{"local_identifier":"50|475c1990cbb2::eab4efdde43a6e6755a5bb8f13819257","title":"Chronic Wasting Disease Survey of Caribou"} +{"local_identifier":"50|RECOLECTA___::0c2e85681af5fcd303b56c26d0f1df8c","title":"Braque : 5 juillet-30 septembre 1980 : Fondation Maeght"} +{"local_identifier":"50|_____OmicsDI::0faf5884d90f019521587b6f43a4f32c","title":"Mus musculus"} +{"local_identifier":"50|_____OmicsDI::10c057b3c8b3c2ed707a115547ed27da","title":"ST5 MRSA in New Zealand"} +{"local_identifier":"50|_____OmicsDI::10c733d1dd55d609a1fe24d9b85df85a","title":"Expression data from CtBP knockdown MCF-7 cells"} +{"local_identifier":"50|_____OmicsDI::17cd78747bf733510ed811513532838c","title":"Notch pathway is overexpressed and is a therapeutic target in clear cell renal cancer"} +{"local_identifier":"50|_____OmicsDI::1b52cbcc49ff394df4c7e1dcaaa9b171","title":"Homo sapiens"} +{"local_identifier":"50|475c1990cbb2::2cc74f33f75b047c6194ae4fc56aa462","title":"Purchasing Card Expenditures - Ministry of Forests and Range - FYE11"} +{"local_identifier":"50|RECOLECTA___::13d528828cfb560910b3a5d6c7bc0598","title":"Tanger: Place de France = Plaza de Francia = France's Place"} +{"local_identifier":"50|RECOLECTA___::93c8f349e12876e593e24ac7ab25de5a","title":"Caja para cenizas de cocina baja"} +{"local_identifier":"50|_____OmicsDI::04a55d471467fd107e560eeaea5e5d2b","title":"Dictyostelium intermedium"} +{"local_identifier":"50|_____OmicsDI::060082611f4b9ee955d9ae70096bf5b8","title":"Anopheles melas strain:CM1002058"} +{"local_identifier":"50|_____OmicsDI::06df8fca5361d17a5515a72982acd41b","title":"Mus musculus"} +{"local_identifier":"50|_____OmicsDI::09c6e0e564c4b51d71724e79604f88ca","title":"alpha proteobacterium SCGC AAA298-K06"} +{"local_identifier":"50|_____OmicsDI::0a95732def325605b25c71cda5e5089f","title":"Draft Genome Sequence of Burkholderia gladioli Strain UCD-UG_CHAPALOTE"} +{"local_identifier":"50|_____OmicsDI::0d1703ba052d60c2acc74a97e75d33c3","title":"Pseudomonas sp. WW_13 strain:WW_13"} +{"local_identifier":"50|_____OmicsDI::0e36ef668edffce1b2cb31d2ed27032c","title":"Vitis vinifera"} +{"local_identifier":"50|_____OmicsDI::0e68778fcdd0b9560347598c0e9b4278","title":"Bacillus cereus 03BB102"} +{"local_identifier":"50|_____OmicsDI::131469bb810daf1e4c1158eacdfe07fb","title":"The MEF2B Regulatory Network - Expression microarray data"} +{"local_identifier":"50|_____OmicsDI::1c3313b790f4cea27f4d075525878871","title":"null"} +{"local_identifier":"50|_____OmicsDI::21a36a20149a35a70d4beb358af18443","title":"The Paramecium Ezl1 protein mediates dual methylation of H3 lysines 9 and 27"} +{"local_identifier":"50|_____OmicsDI::2298e7316cdc24a7ad529fafc9f5477b","title":"Deinococcus maricopensis"} +{"local_identifier":"50|_____OmicsDI::36e02acd25698bd97082f438db5d4cf0","title":"Homo sapiens"} +{"local_identifier":"50|_____OmicsDI::3b95d6d56f1866c4d00ab5d70d6dff56","title":"Puccinia graminis f. sp. tritici 06ND76C"} +{"local_identifier":"50|_____OmicsDI::40255e6a0ce5be99ede6905950f48f33","title":"Mus musculus"} +{"local_identifier":"50|_____OmicsDI::44046a700c424550af38a3eedf5e250b","title":"Nutritional effects by beta-carotene in lung in males and females of control mice versus BCMO knockout mice"} +{"local_identifier":"50|_____OmicsDI::46fbcedddb9ad77014ef2e286015d84f","title":"null"} +{"local_identifier":"50|_____OmicsDI::4a1cdf0609094d699f4c36f3605265e8","title":"Homo sapiens"} +{"local_identifier":"50|_____OmicsDI::4bd8625a0db3e7f35b27c131d928a9c4","title":"POG_patient_31043 - samples"} +{"local_identifier":"50|_____OmicsDI::4dd82a0bb25bc5d8e3ba6a32f430738c","title":"Solanum lycopersicum strain:TLB220"} +{"local_identifier":"50|_____OmicsDI::52b13189a46d8a7148436757d0b2bee1","title":"Homo sapiens"} +{"local_identifier":"50|_____OmicsDI::5a5e0168b632c354799e9ade6d23865b","title":"null"} +{"local_identifier":"50|_____OmicsDI::6a7dd028c859df2e976d5406f76f8b0b","title":"freshwater metagenome"} +{"local_identifier":"50|_____OmicsDI::6fa118bd596b943d802562bd3f8104aa","title":"Proliferating Langerhans cells dampen inflammation in established mouse psoriatic lesions"} +{"local_identifier":"50|_____OmicsDI::710f99d06d7433275c1c123b3845480d","title":"Characterizing commonalities and differences between the breast and prostate cancer metabotypes in African-American cohorts"} +{"local_identifier":"50|_____OmicsDI::71c6f3c958a052a3bc88ea6bee442ad1","title":"GNPS - Mouse BXD liver metabolomics"} +{"local_identifier":"50|_____OmicsDI::7b4accbdae8e4782d6395b3b024641d8","title":"Neurospora crassa strain:2489x8790_390a"} +{"local_identifier":"50|_____OmicsDI::7ee47638c285148bda6764f37b3a5537","title":"Homo sapiens"} +{"local_identifier":"50|_____OmicsDI::89d0864591fabb3d90be26af88ba8081","title":"Salmonella enterica strain:SEH-16"} +{"local_identifier":"50|_____OmicsDI::8cb322209941ef6e8b107b5fc5ca800c","title":"Methylobacter luteus IMV-B-3098"} +{"local_identifier":"50|_____OmicsDI::8de599bd144ef54d1d954cb83274fa2f","title":"Homo sapiens"} +{"local_identifier":"50|_____OmicsDI::94010edd576f861d025bf0aecf97d54e","title":"A regulatory CD9+ B cell subset controls HDM-induced allergic airway inflammation"} +{"local_identifier":"50|_____OmicsDI::95f4b23d1e4410d6d3b192a03fd89692","title":"Bartonella bacilliformis"} +{"local_identifier":"50|_____OmicsDI::9e9f2b443aaf8b637500d28b86122b6d","title":"Genetics of gene expression in primary human immune cells"} \ No newline at end of file